Android: टेस्ट पुश अधिसूचना ऑनलाइन (Google क्लाउड मैसेजिंग) [बंद]


99

अपडेट: जीसीएम को हटा दिया गया है, एफसीएम का उपयोग करें

मैं अपने आवेदन में Google क्लाउड मैसेजिंग को लागू कर रहा हूं। सर्वर कोड अभी तक तैयार नहीं है और मेरे वातावरण में कुछ फ़ायरवॉल प्रतिबंधों के कारण मैं पुश अधिसूचना के लिए एक परीक्षण गंभीर तैनात नहीं कर सकता। मैं जो देख रहा हूं वह एक ऑनलाइन सर्वर है जो मेरे ग्राहक कार्यान्वयन का परीक्षण करने के लिए मेरे डिवाइस पर कुछ परीक्षण सूचनाएं भेजेगा।


आपने अन्य पोस्ट डिलीट कर दिए हैं, यहाँ im लेखन क्यों दिया गया है :-) NotificationListenerService को Api 18 में जोड़ा गया था ... बस int id के रूप में SharedPreferences में id स्टोर करें और सरणी के आकार को chceck करने के लिए कुछ तर्क करें यदि नई id जोड़ने के बाद आपको बड़ा लेना है पहला तत्व और रद्द ...
सेल्विन

जवाबों:


167

ऐसा करने का बहुत आसान तरीका मिला।

Http://phpfiddle.org/ खोलें

बॉक्स में php स्क्रिप्ट के बाद पेस्ट करें। Php स्क्रिप्ट सेट में API_ACCESS_KEY, कोमा द्वारा अलग किए गए डिवाइस आईडी सेट करें।

F9 दबाएँ या चलाएँ क्लिक करें।

मज़े करो ;)

<?php


// API access key from Google API's Console
define( 'API_ACCESS_KEY', 'YOUR-API-ACCESS-KEY-GOES-HERE' );


$registrationIds = array("YOUR DEVICE IDS WILL GO HERE" );

// prep the bundle
$msg = array
(
    'message'       => 'here is a message. message',
    'title'         => 'This is a title. title',
    'subtitle'      => 'This is a subtitle. subtitle',
    'tickerText'    => 'Ticker text here...Ticker text here...Ticker text here',
    'vibrate'   => 1,
    'sound'     => 1
);

$fields = array
(
    'registration_ids'  => $registrationIds,
    'data'              => $msg
);

$headers = array
(
    'Authorization: key=' . API_ACCESS_KEY,
    'Content-Type: application/json'
);

$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://android.googleapis.com/gcm/send' );
curl_setopt( $ch,CURLOPT_POST, true );
curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );
$result = curl_exec($ch );
curl_close( $ch );

echo $result;
?>

FCM के लिए, Google url होगा: https://fcm.googleapis.com/fcm/send

FCM v1 के लिए Google url होगा: https://fcm.googleapis.com/v1/projects/YOUR_GOOGLE_CONSOLE_PROJECT_ID/messages:send

नोट: Google डेवलपर कंसोल पर एपीआई एक्सेस कुंजी बनाते समय, आपको 0.0.0.0/0 को आईपी पते के रूप में उपयोग करना होगा। (परीक्षण उद्देश्य के लिए)।

GCM सर्वर से अमान्य पंजीकरण प्रतिक्रिया प्राप्त करने के मामले में, कृपया अपने डिवाइस टोकन की वैधता की जांच करें। आप url का उपयोग करके अपने डिवाइस टोकन की वैधता की जांच कर सकते हैं:

https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=YOUR_DEVICE_TOKEN

कुछ प्रतिक्रिया कोड:

निम्नलिखित कुछ प्रतिक्रिया कोड का वर्णन है जो आपको सर्वर से प्राप्त हो सकता है।

{ "message_id": "XXXX" } - success
{ "message_id": "XXXX", "registration_id": "XXXX" } - success, device registration id has been changed mainly due to app re-install
{ "error": "Unavailable" } - Server not available, resend the message
{ "error": "InvalidRegistration" } - Invalid device registration Id 
{ "error": "NotRegistered"} - Application was uninstalled from the device

1
वास्तव में नहीं :) परीक्षण प्रयोजनों के लिए, आप 0.0.0.0/0 आईपी का उपयोग कर सकते हैं। यह काम करेगा।
अदनान

4
InvalidRegistration मैं api कुंजी और डिवाइस आईडी के साथ (हर बार मिलती है:: त्रुटि ""
Leandro

4
कृपया API KEYबाद में पुनः प्राप्त करें, क्योंकि यह उन्हें आपकी कुंजी देने के लिए बहुत सुरक्षित नहीं है।
फ्लैश थंडर

6
मैं अनधिकृत त्रुटि 401 प्राप्त कर रहा हूँ। किसी भी विचार क्यों?
रेज़ेल सोको

2
{"त्रुटि": "अमान्य_token", "error_description": "अमान्य मान"} मुझे यह मिला। और अमान्य reg आईडी प्राप्त करना।
आनंद

159

पोस्टमैन: एक गूगल क्रोम एक्सटेंशन

सर्वर के बजाय संदेश भेजने के लिए पोस्टमैन का उपयोग करें। पोस्टमैन सेटिंग्स इस प्रकार हैं:

Request Type: POST

URL: https://android.googleapis.com/gcm/send

Header
  Authorization  : key=your key //Google API KEY
  Content-Type : application/json

JSON (raw) :
{       
  "registration_ids":["yours"],
  "data": {
    "Hello" : "World"
  } 
}

सफलता पर आपको मिलेगा

Response :
{
  "multicast_id": 6506103988515583000,
  "success": 1,
  "failure": 0,
  "canonical_ids": 0,
  "results": [
    {
      "message_id": "0:1432811719975865%54f79db3f9fd7ecd"
    }
  ]
}

3
मुझे लगता है कि यह GCM का परीक्षण करने के लिए सबसे साफ और सुरक्षित समाधान है। धन्यवाद!
बजे बियांका दानिशुक

12
मेरे लिए एक पोस्ट के साथ काम किया! इसके अलावा प्राधिकरण के हेडर में "की =" रखना न भूलें और न केवल API_KEY
राफेल रॉयर-रिवार्ड

3
@ राफेल रॉयर-रिवार्ड यू लाइफ सेवर, मुझे प्राधिकरण हेडर में "की =" याद आ रही थी
खुर्रम शहजाद

3
Google डेवलपर कंसोल के साथ कुछ कुंजी आप बना सकते हैं। बस अगर आप स्पष्ट नहीं हैं, तो डाकिया के साथ उपयोग करने के लिए, आपको "सर्वर कुंजी" बनाने की आवश्यकता है।
लियांगजुन

3
यहाँ "Registration_ids" क्या है? उन्हें कहां खोजें?
हिमल नाग राणा

19

पुशवाच एक ऑनलाइन GCM और APNS पुश नोटिफिकेशन टेस्टर का उपयोग करने के लिए एक स्वतंत्र है जो Django / Python में खुद को विकसित करता है क्योंकि मैंने कई परियोजनाओं पर काम करते समय खुद को एक समान स्थिति में पाया है। यह दोनों GCMऔर APNSसूचनाएं भेज सकता है और अतिरिक्त तर्क के लिए JSON संदेशों का भी समर्थन कर सकता है। परीक्षकों के लिंक निम्नलिखित हैं।

कृपया मुझे बताएं कि क्या आपके पास इसका उपयोग करने के लिए कोई प्रश्न या समस्या है।


1
कृपया अपने पतन की व्याख्या करें।
Amyth

1
बस मुझे जो चाहिए था, वह पूरी तरह से काम करता है (पोस्टमैन की कोशिश की, जो कि सॉर्ट काम करता है, लेकिन मेरे डिवाइस पर संदेश दिखाई नहीं देता है, जब मेरा ऐप नहीं खोला गया था ..)
ग्रेविअर

हाय एमीथ मुझे आपकी साइट पर यह त्रुटि मिलती है: "HTTP त्रुटि 401: अमान्य (विरासत) सर्वर-कुंजी वितरित या प्रेषक अनुरोध करने के लिए अधिकृत नहीं है।" पता नहीं कि क्या करना है? मैंने अभी एक Google प्रोजेक्ट बनाया और सेंडर के लिए प्रोजेक्ट आईडी और प्रोजेक्ट नंबर का उपयोग करने की कोशिश की और Google API सेटिंग्स में "इन HTTP रेफरर्स (वेबसाइटों) से अनुरोध स्वीकार करें" में अपनी साइट को जोड़ा। सादर रसमस
रसमस का थाइलल

ध्यान दें कि यह URL अब समर्थित नहीं है: 10 अप्रैल, 2018 तक, Google ने GCM को हटा दिया है। GCM सर्वर और क्लाइंट API को हटा दिया जाता है और 11 अप्रैल, 2019 को जल्द से जल्द हटा दिया जाएगा। GCM info
Stinky Towel

7

पोस्टमैन एक अच्छा समाधान है और इसलिए php फिडल है। हालांकि हर बार GCM URL और हेडर जानकारी में डालने से बचने के लिए, आप इस निफ्टी GCM नोटिफिकेशन टेस्ट टूल का उपयोग कर सकते हैं


2
आप इस ऑनलाइन टेस्टर का उपयोग कर सकते हैं जो एंड्रॉइड और आईओएस दोनों का समर्थन करता है। सरल वेबसाइट pushtry.com का उपयोग करना आसान है । 1. आप .p12 फ़ाइल का चयन करें। डिवाइस टोकन दर्ज करें 3. पर्यावरण सैंडबॉक्स या उत्पादन का चयन करें। संदेश दर्ज करें 5. संदेश भेजें
Arvind
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.