android - प्राप्त फायरबेस सूचना पर खुला ऐप(एफसीएम)




firebase firebase-cloud-messaging (3)

अधिसूचना प्राप्त होने पर मैं स्वचालित रूप से एप्लिकेशन खोलना चाहता हूं, क्या यह फ़ायरबेस और नई एफसीएम अधिसूचनाओं के साथ संभव है?

मुझे पता है कि मैं click_action सेट कर सकता हूं लेकिन यह केवल अनुकूलित करने के लिए है कि अधिसूचना क्लिक पर कौन सी गतिविधि शुरू होगी, मुझे कुछ ऐसा चाहिए जो अधिसूचना प्राप्त होने पर स्वचालित रूप से प्रारंभ हो जाए।

मैंने फास्टबेस मैसेजिंग फायरबेस नमूना की कोशिश की और एक मैसेज रिसीव () विधि है लेकिन यह केवल तभी काम करता है जब ऐप अग्रभूमि में हो। क्या ऐप पृष्ठभूमि में होने पर कुछ ऐसा होगा जो निष्पादित होगा? जीसीएम कुछ ऐसा कर सकता है जो मैं यहां प्रसारण रिसीवर से सीधे गतिविधि के इरादे से शुरू कर सकता हूं जिसे अधिसूचना प्राप्त होने पर बुलाया जाता है।


शीघ्र जवाब:

एफसीएम के माध्यम से स्वचालित रूप से एक एप्लीकेशन खोलने के लिए आपको data-message का उपयोग करने की आवश्यकता है, जो हमेशा FirebaseMessagingService.onMessageReceived() विधि का आह्वान करने की गारंटी देता है।

फिर आप पसंदीदा तर्क शुरू करने के लिए .onMessageReceived() विधि में अपना तर्क जोड़ सकते हैं।

चेतावनी: किसी भी उपयोगकर्ता इंटरैक्शन के बिना यूआई लॉन्च करना अधिकांश अनुप्रयोगों के लिए एक बहुत ही खराब अभ्यास है! कृपया मार्कजी उत्तर यहां पढ़ें: सेवा से गतिविधि कैसे शुरू करें?

[...] उपयोगकर्ता जो वर्तमान में कर रहा है उसे बाधित करना खराब डिजाइन फ़ॉर्म माना जाता है, खासतौर से पृष्ठभूमि में परिचालन करने वाले किसी चीज़ से।
इसलिए, आपको वांछित गतिविधि लॉन्च करने के लिए अधिसूचना [...] का उपयोग करने पर विचार करना चाहिए जब उपयोगकर्ता निर्णय लेता है कि यह जांच करने का समय है। [...]

पूर्ण व्याख्या:

एफसीएम जीसीएम के समान काम करता है और दो प्रकार के संदेश प्राप्त कर सकता है:

  1. प्रदर्शन-संदेश:
    पेलोड {"notification" : { "body" : "hello world"}}
    ऐप पृष्ठभूमि में होने पर ये संदेश स्वचालित रूप से प्रदर्शित होते हैं और यदि वे ऐप पहले से ही अग्रभूमि में हैं तो वे FirebaseMessagingService.onMessageReceived() कॉल करते हैं।

  2. डेटा-संदेश:
    पेलोड {"data" : { "key1" : "value1"}}
    ये संदेश हमेशा FirebaseMessagingService.onMessageReceived() आह्वान करते हैं ,
    भले ही ऐप बंद हो या पृष्ठभूमि में हो।

click_action अधिसूचना पेलोड का एक पैरामीटर है, इस प्रकार यह प्रदर्शन-संदेशों पर लागू होता है।

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

https://firebase.google.com/docs/cloud-messaging/http-server-ref#notification-payload-support


[एंड्रॉइड] यदि आप फायरबेस नोटिफिकेशन (फ़ायरबेस क्लाउड मेसेजिंग नहीं) का उपयोग कर रहे हैं तो आपको अपने build.gradle में फायरबेस मैसेजिंग शामिल करना है, और फिर अपने ऐप को फायरबेस कंसोल पर एक प्रोजेक्ट से लिंक करें।

यदि आपका ऐप पृष्ठभूमि में है, तो कंसोल से भेजे गए किसी भी संदेश से आपको सिस्टम नोटिफिकेशन मिलेगा, जो स्पर्श किया गया है, तो आपके ऐप को सक्रिय करेगा।

यहां एक नज़र डालें: https://youtu.be/KpTSpVh9SfY?t=10m22s


मैं यहां चरणों को संक्षेप में बताता हूं, उम्मीद है कि यह सहायक होगा

चरण 1

एफसीएम उपयोगकर्ता गाइड के बाद। सुनिश्चित करें कि फायरबेस कंसोल से संदेश दबाकर सब कुछ ठीक से काम करता है।

चरण 2

निम्नलिखित के रूप में अपनी कस्टम FirebaseMessagingService कक्षा बदलें:

public class MyFirebaseMessagingService extends FirebaseMessagingService {

private static final String TAG = "MyFirebaseMsgService";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    Log.d(TAG, "From: " + remoteMessage.getFrom());
    startActivity(new Intent(this, SplashActivity.class));
}
}

अब फायरबेस कंसोल पुश संदेशों का फिर से उपयोग करके, आप पाएंगे कि onMessageReceived केवल तभी आग लगती है जब आपका ऐप अग्रभूमि में हो। क्योंकि फायरबेस कंसोल केवल Notification message भेजने में सक्षम है। Data message भेजने के लिए, हमें चरण 3 की आवश्यकता है।

चरण 3

Google उन्नत REST क्लाइंट स्थापित करें

नीचे पैरामीटर इनपुट:

url: https://fcm.googleapis.com/fcm/send
method: POST 
Raw header: 
Content-Type: application/json
Authorization:key=YOUR_SERVER_KEY
Raw payload:
{
   "to" : "YOUR_DEVICE_FCM_TOKEN",
   "data" : {
     "Nick" : "Mario",
     "body" : "great match!",
     "Room" : "PortugalVSDenmark"
   },
 } 

YOUR_SERVER_KEY फ़ायरबेस कंसोल> सेटिंग्स फलक> क्लाउड मैसेजिंग टैब में उपलब्ध है

YOUR_DEVICE_FCM_TOKEN FirebaseInstanceId.getInstance().getToken() पर onTokenRefresh()

ध्यान दें

उपयोगकर्ता इंटरैक्शन के बिना यूआई शुरू करना खराब यूएक्स है, आपको प्रारंभिक सेवा या पृष्ठभूमि में कुछ के साथ प्रारंभ गतिविधि को प्रतिस्थापित करने की आवश्यकता हो सकती है। मैं परीक्षण उद्देश्यों के लिए गतिविधि का उपयोग करता हूं, इसलिए यह सेवा से अधिक दृश्यमान होगा। Google उन्नत REST क्लाइंट टूल को शुरू करने के लिए धन्यवाद @2ndgab ।





firebase-notifications