एडब्ल्यूएस एसएनएस के साथ एफसीएम


94

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

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

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

3. मैंने एसएनएस एप्लीकेशन प्लेटफॉर्म में एफसीएम एपी की डालने की कोशिश की, यह अवैध पैरामीटर दिखा रहा है क्यों?


SNS अभी तक FCM का समर्थन नहीं करता है, यह GCM के पदावनत संस्करण का उपयोग करता है। आप एपीआई कुंजी कहां से प्राप्त कर रहे हैं?
आर्थर थॉम्पसन

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

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

क्या fmc के साथ sns विषयों का उपयोग करना संभव है? इस तरह के एक भयानक जवाब के लिए धन्यवाद
जुआन जोस Tugores

पहली जगह में एसएनएस का उपयोग करने के लिए क्या लाभ है? FCM पर्याप्त नहीं होना चाहिए?
खालिद उस्मान

जवाबों:


187

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

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

हैं GCM-FCM प्रवास निर्देश गूगल द्वारा प्रदान की तथापि आपको जो परिवर्तन करने की जरूरत है अनुप्रयोग तरफ मुख्य रूप से कर रहे हैं।

SNS के साथ अपने ऐप पर GCM / FCM का परीक्षण करने के लिए आपको जिन चरणों का पालन करना होगा:

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

SNS द्वारा उत्पन्न संदेश प्रपत्र का होगा:

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

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

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

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

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


2
शानदार जवाब, धन्यवाद। यह ध्यान देने योग्य है कि कॉन्फ़िगरेशन विकल्पों के संबंध में json में कुछ गहराई है - डेवलपर्स देखें । Googlecloud-messaging/concept- options - हालांकि मैंने किसी भी FCM- विशिष्ट कार्यक्षमता का परीक्षण नहीं किया है।
टॉम

dataअगर ग्राहक ऍप FCM लेकिन GCM को लागू नहीं करता है तो भी ss का उपयोग करके संदेश ठीक काम कर रहा है। मेरे ऐप में मैंने क्लाइंट पक्ष में FCM में अपग्रेड नहीं किया है, लेकिन SNS का उपयोग करके FCM dataसंदेशों के लिए भी ठीक काम करता है । यह काम नहीं करना चाहिए?
शश_कं

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

क्या fmc के साथ sns विषयों का उपयोग करना संभव है? इस तरह के एक भयानक जवाब के लिए धन्यवाद
जुआन जोस Tugores

स्वागत है - हाँ, आप व्यक्तिगत रूप से मोबाइल पुश (यानी GCM-> FCM) एंडपॉइंट्स को एक SNS विषय पर सामान्य रूप से सब्सक्राइब कर सकते हैं, हालांकि इससे AWS के भीतर बड़ी संख्या में संदेश उत्पन्न होंगे। यदि आप FCM ग्राहक पक्ष का उपयोग कर रहे हैं, तो दूसरा विकल्प FCM विषय या उपयोगकर्ता सेगमेंट का उपयोग करना है जो केवल Google के सर्वरों के माध्यम से यात्रा करेगा
नाथन डन

14

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

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

एसएनएस दोनों संस्करणों को स्वीकार करेगा लेकिन उनका मेनू विकल्प अभी भी जीसीएम के तहत वर्गीकृत कर रहा है

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

यहां छवि विवरण दर्ज करें

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


5

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


5

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

हमें Json (अधिसूचना के अंदर) में डेटा जोड़ने की आवश्यकता है:

{
    "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)
    {
    }
}

FCM टोकन कहाँ है?
जेपीएम

मैं पेलोड में एक छवि URL कैसे भेज सकता हूं
tarek noaman

3

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

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

मैं पेलोड में एक छवि URL कैसे भेज सकता हूं
tarek noaman

0

सही पेलोड (विषय को प्रकाशित करें) के साथ अधिसूचना भेजने का तरीका जानने में मुझे थोड़ा समय लगा। इसलिए मैं इसे यहां रखूंगा।

private void PublishToTopic(string topicArn)
{
    AmazonSimpleNotificationServiceClient snsClient = 
           new AmazonSimpleNotificationServiceClient(Amazon.RegionEndpoint.EUWest1);
    PublishRequest publishRequest = new PublishRequest();
    publishRequest.TopicArn = topicArn;
    publishRequest.MessageStructure = "json";
    string payload = "\\\"data\\\":{\\\"text\\\":\\\"Test \\\"}";
    publishRequest.Message = "{\"default\": \"default\",\"GCM\":\"{" + payload + "}\"}";
    PublishResponse publishResult = snsClient.Publish(publishRequest);
}    


0

सवालों के जवाब देने के लिए:

  1. AWS SNS FCM का समर्थन करती है।
  2. पुश सूचनाएँ भेजने के बाद कोई AWS संदेशों को संग्रहीत नहीं करता है।

SNS के साथ FCM की स्थापना पर एक विस्तृत ट्यूटोरियल के लिए कृपया इस लेख को पढ़ें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.