48

के साथ एफसीएम मैं अपने एंड्रॉइड प्रोजेक्ट के लिए AWS संसाधनों का उपयोग कर रहा हूं, मैं AWS SNS के साथ अपने प्रोजेक्ट के लिए पुश अधिसूचना सेवा जोड़ने की योजना बना रहा हूं। मुझे कुछ परेशान करने वाले कुछ प्रश्न हैं। मुझे इनमें से एक या दो को छोड़कर अस्पष्ट स्पष्टीकरण के साथ कोई प्रश्न नहीं मिला।एडब्ल्यूएस एसएनएस

1. AWS समर्थन FCM? SNSGCM के साथ काम करें। लेकिन Google GCM के बजाय एफसीएम का उपयोग करने की सिफारिश करता है। मुझे AWSFCM का समर्थन नहीं मिला।

2. धक्का अधिसूचनाएं भेजने के बाद भी AWS स्टोर संदेश (या डेटा) अपने डेटाबेस में स्टोर करें?

3. मैंने एसएनएस अनुप्रयोग मंच में एफसीएम एपीआई कुंजी डालने का प्रयास किया, यह अवैध पैरामीटर क्यों दिखा रहा है?

+0

एसएनएस अभी तक FCM का समर्थन नहीं करता है, यह एक पदावनत उपयोग करता है:

हम Json करने के लिए डेटा जोड़ने के लिए (अधिसूचना के अंदर) की जरूरत है जीसीएम का संस्करण। आप एपीआई कुंजी कहां से प्राप्त कर रहे हैं? –

+1

मैंने जो कोशिश की थी, मैंने एसएनएस में एफसीएम की एपीआई कुंजी डालने की कोशिश की और यह काम नहीं किया, एडब्ल्यूएस (एसएनएस) में दस्तावेज़ पढ़ने के बाद उन्होंने सर्वर कुंजी डालने का उल्लेख किया। मैंने कोशिश की कि यह अच्छी तरह से काम किया। मैं एफसीएम के लिए एसएनएस के माध्यम से पुश सूचनाएं भेजने में सक्षम हूं। कारण यह नहीं पता कि यह क्यों काम करता है। क्या आप वाकई एफएनएम का समर्थन नहीं करते हैं? – Naroju

+0

यह सही है कि सर्वर कुंजी को जीसीएम (अब एफसीएम) संदेश भेजने की आवश्यकता है। क्लाइंट साइड (मोबाइल डिवाइस) जीसीएम और एफसीएम आम तौर पर समान होते हैं, इसलिए दोनों एक अपेक्षित फैशन में संदेश प्राप्त करेंगे। हालांकि कुछ एफसीएम विशेषताएं हैं जो काम नहीं करेंगे, उदाहरण के लिए: विषय संदेश। –

उत्तर

102

एफसीएम जीसीएम के साथ पिछड़ा संगत है। एडब्ल्यूएस पर एफसीएम स्थापित करने के लिए कदम GCM set up procedure के समान हैं (और कम से कम इस पल के लिए) एफसीएम सर्वर-साइड कॉन्फ़िगरेशन के संबंध में जीसीएम और एसएनएस के साथ पारदर्शी रूप से काम करता है।

हालांकि, अगर आप एंड्रॉयड डिवाइस वे जब तक आप एक client side service कि FirebaseMessagingService फैली लागू संसाधित नहीं किया जाएगा करने के लिए data पेलोड भेज रहे हैं। एडब्ल्यूएस कंसोल में डिफ़ॉल्ट JSON संदेश जनरेटर data संदेश भेजता है, जिसे उपरोक्त सेवा लागू होने तक आपके ऐप द्वारा अनदेखा कर दिया जाएगा। इस के आसपास पाने के लिए आप (जब तक आपके एप्लिकेशन को अग्रभूमि में नहीं है) एक कस्टम notification पेलोड जो आपके डिवाइस द्वारा प्राप्त किया जाएगा प्रदान कर सकते हैं प्रारंभिक परीक्षण के लिए

आप बनाने की जरूरत है GCM-FCM migration instructions गूगल द्वारा प्रदान की तथापि परिवर्तन नहीं हैं मुख्य रूप से ऐप पक्ष पर हैं।

चरणों आप एसएनएस के साथ अपने ऐप पर GCM/FCM परीक्षण करने के लिए पालन करने की आवश्यकता हैं:

  1. एक Platform Application in SNS बनाएँ, पुश अधिसूचना मंच के रूप में गूगल क्लाउड मैसेजिंग (GCM) का चयन करके और उपलब्ध कराने के अपने एपीआई कुंजी फ़ील्ड में।
  2. प्लेटफ़ॉर्म एप्लिकेशन का चयन करें और पर क्लिक करें प्लेटफ़ॉर्म एंडपॉइंट बटन बनाएं।
  3. अपने ऐप द्वारा जेनरेट किया गया इंस्टेंस आईडी (डिवाइस टोकन) प्रदान करें। आपको FirebaseInstanceIDService का विस्तार करना होगा और इसे अपने एंड्रॉइड ऐप में देखने के लिए onTokenRefresh विधि को ओवरराइड करना होगा। एक बार जब आप have done this, अपने ऐप को अन-इंस्टॉल और पुन: इंस्टॉल करें और आपका टोकन पहले बूट पर एंड्रॉइड स्टूडियो में डीबग कंसोल पर मुद्रित किया जाना चाहिए।
  4. पर क्लिक करें एंडपॉइंट बटन जोड़ें।
  5. अपने प्लेटफ़ॉर्म एप्लिकेशन के लिए एआरएन लिंक पर क्लिक करें।
  6. अपने डिवाइस के लिए नव निर्मित एंडपॉइंट का चयन करें और पर क्लिक करें बटन पर एंडपॉइंट पर प्रकाशित करें।
  7. JSON संदेश प्रारूप का चयन करें, और JSON संदेश जनरेटर बटन पर क्लिक करें।
  8. एक परीक्षण संदेश दर्ज करें और JSON उत्पन्न बटन
  9. अब "पकड़ लिया हिस्सा आता है" पर क्लिक करें।

संदेश यह है कि एसएनएस द्वारा उत्पन्न होता है इस रूप में होने करेंगे:

{ 
"GCM": "{ \"data\": { \"message\": \"test message\" } }" 
} 

हम पहले उल्लेख किया है, data पेलोड अगर कोई सेवा प्राप्त करने के लिए उन्हें लागू किया गया है नजरअंदाज कर दिया जाएगा। हम बहुत अधिक कोड लिखने के बिना परीक्षण करना चाहते हैं, इसलिए हमें notification पेलोड भेजना चाहिए। ऐसा करने के लिए, बस JSON संदेश को बदल पढ़ने के लिए:

{ 
"GCM": "{ \"notification\": { \"text\": \"test message\" } }" 
} 

बार जब आप इस किया है, सुनिश्चित करें कि आपके एप्लिकेशन को उपकरण पर नहीं चल रहा है, और हिट संदेश बटन प्रकाशित करें। अब आपको अपने डिवाइस पर एक अधिसूचना पॉप अप देखना चाहिए।

आप निश्चित रूप से अमेज़ॅन एसएनएस एपीआई के माध्यम से यह सब प्रोग्राम कर सकते हैं, हालांकि सभी उदाहरण data पेलोड का उपयोग करने लगते हैं, इसलिए आपको इसे ध्यान में रखना होगा और अपने उपयोग के मामले में उपयुक्त पेलोड उत्पन्न करना होगा।

+1

शानदार जवाब के लिए धन्यवाद, धन्यवाद। यह ध्यान देने योग्य है कि जेसन की कॉन्फ़िगरेशन विकल्पों के संबंध में कुछ गहराई है - https://developers.google.com/cloud-messaging/concept- विकल्प देखें - हालांकि मैंने किसी भी एफसीएम-विशिष्ट कार्यक्षमता का परीक्षण नहीं किया है। – Tom

+0

'डेटा' संदेश स्नैक्स का उपयोग करके ठीक काम कर रहे हैं भले ही क्लाइंट ऐप एफसीएम लागू नहीं करता है लेकिन जीसीएम। मेरे ऐप में मैंने क्लाइंट साइड में एफसीएम में अपग्रेड नहीं किया है लेकिन एसएनएस का उपयोग कर एफसीएम 'डेटा' संदेशों के लिए भी ठीक काम करता है। क्या यह काम नहीं करना चाहिए? –

+1

एसएनएस जीसीएम का उपयोग करता है ताकि यदि आप जीसीएम क्लाइंट का उपयोग कर रहे हैं तो इसे सामान्य के रूप में व्यवहार करना चाहिए (जब तक कि Google जीसीएम से रिटायर करने का निर्णय नहीं लेता)। यह सवाल एडब्ल्यूएस पर एफसीएम समर्थन (जो Google एपीआई पक्ष की पिछली संगतता के माध्यम से समर्थित है) के साथ अधिक करना है –

2

बस के लिए नाथन डन के उत्तर एक अतिरिक्त ध्यान दें: ध्वनि उपयोग जोड़ने के लिए JSON संदेश

{ 
"GCM": "{ \"notification\": { \"text\": \"test message\",\"sound\":\"default\" } }" 
} 
6

अब आप अपने firebase कंसोल (https://console.firebase.google.com/) पर जा सकते हैं निम्नलिखित अपना प्रोजेक्ट चुनें गियर आइकन पर क्लिक करें और परियोजना का चयन सेटिंग और फिर मेघ संदेश टैब पर क्लिक करें ...

आप लीगेसी सर्वर कुंजी जो GCM API Key है दिखाई देगा और आप नए सर्वर कुंजी जो FCM संस्करण हैं उत्पन्न करने का विकल्प होगा

एसएनएस डब्ल्यू बीमार दोनों संस्करणों को स्वीकार लेकिन उनके मेनू विकल्प अभी भी GCM के तहत यह श्रेणीबद्ध है

यहाँ आपके संदर्भ के लिए तस्वीर है:

enter image description here

ध्यान दें कि आप "गलती" अपने सर्वर कुंजी लेकिन विरासत सर्वर कुंजी को हटा सकते हैं हटाया नहीं जा सकता है। साथ ही, यदि आप ऐड सर्वर कुंजी बटन पर क्लिक करते हैं, तो आपको बिना किसी चेतावनी के पहले पहले एक नई सर्वर कुंजी मिल जाएगी! ... अच्छा काम Google;)

4

मैंने डेटा के बजाय अधिसूचना पेलोड के साथ समाधान का उपयोग करने की कोशिश की, लेकिन मुझे मोबाइल डिवाइस पर पुश नोटिफिकेशन प्राप्त नहीं हुआ। मुझे इस ट्यूटोरियल https://youtu.be/iBTFLu30dSg को अंग्रेजी उपशीर्षक के साथ एडब्ल्यूएस एसएनएस चरण के साथ एफसीएम का उपयोग करने के तरीके और एडब्ल्यूएस कंसोल से पुश नोटिफिकेशन कैसे भेजना है और इसे phs एसडीके के साथ php पर लागू करने का उदाहरण मिला है। इसने मेरी बहुत मदद की।

0

नाथन डुन के महान उत्तर के लिए एक और अतिरिक्त नोट। एसएनएस से फायरबेस में अधिसूचना के साथ डेटा कैसे भेजें।

{ 
    "default": “any value", 
    "GCM": "{ \"notification\": { \"body\": \”message body\”, \”title\”: \”message title \”, \"sound\":\"default\" } , \"data\" : {\”key\" : \”value\", \”key2\" : \”value\” } }” 
} 

अपने FirebaseMessagingService कार्यान्वयन में (Xamarin उदाहरण)

public override void OnMessageReceived(RemoteMessage message) 
{ 

    try 
    { 

     var body = message?.GetNotification()?.Body; 
     var title = message?.GetNotification()?.Title; 
     var tag = message?.GetNotification()?.Tag; 
     var sound = message?.GetNotification()?.Sound; 

     var data = message?.Data 
     foreach (string key in data.Keys) 
     { 
      // get your data values here 
     } 

    } 
    catch (Exception e) 
    { 
    } 
} 
संबंधित मुद्दे