पृष्ठभूमि वाले ऐप पर एक परीक्षण संदेश भेजें

एफसीएम के साथ आरंभ करने के लिए, सबसे सरल उपयोग का मामला बनाएं: जब ऐप डिवाइस पर पृष्ठभूमि में हो तो नोटिफिकेशन कंपोजर से एक डेवलपमेंट डिवाइस पर एक परीक्षण अधिसूचना संदेश भेजना। यह पृष्ठ इसे प्राप्त करने के लिए सेटअप से लेकर सत्यापन तक सभी चरणों को सूचीबद्ध करता है - यदि आपने एफसीएम के लिए फ़्लटर ऐप सेट अप किया है तो इसमें आपके द्वारा पहले ही पूरे किए गए चरण शामिल हो सकते हैं।

एफसीएम प्लगइन स्थापित करें

  1. यदि आपने पहले से ऐसा नहीं किया है तो फ़्लटर के लिए फ़ायरबेस एसडीके स्थापित करें और प्रारंभ करें

  2. अपने फ़्लटर प्रोजेक्ट के रूट से, प्लगइन इंस्टॉल करने के लिए निम्न कमांड चलाएँ:

    flutter pub add firebase_messaging
    
  3. एक बार पूरा होने पर, अपने फ़्लटर एप्लिकेशन का पुनर्निर्माण करें:

    flutter run
    

पंजीकरण टोकन तक पहुंचें

किसी विशिष्ट डिवाइस पर संदेश भेजने के लिए, आपको उस डिवाइस का पंजीकरण टोकन जानना होगा। क्योंकि इस ट्यूटोरियल को पूरा करने के लिए आपको नोटिफिकेशन कंसोल में एक फ़ील्ड में टोकन दर्ज करना होगा, टोकन को पुनः प्राप्त करने के बाद उसे कॉपी करना या सुरक्षित रूप से संग्रहीत करना सुनिश्चित करें।

किसी ऐप इंस्टेंस के लिए वर्तमान पंजीकरण टोकन पुनर्प्राप्त करने के लिए, getToken() कॉल करें। यदि अधिसूचना अनुमति नहीं दी गई है, तो यह विधि उपयोगकर्ता से अधिसूचना अनुमति मांगेगी। अन्यथा, यह एक टोकन लौटाता है या किसी त्रुटि के कारण भविष्य को अस्वीकार कर देता है।

final fcmToken = await FirebaseMessaging.instance.getToken();

एक परीक्षण अधिसूचना संदेश भेजें

  1. लक्ष्य डिवाइस पर ऐप इंस्टॉल करें और चलाएं। Apple उपकरणों पर, आपको दूरस्थ सूचनाएं प्राप्त करने की अनुमति के लिए अनुरोध स्वीकार करना होगा।

  2. सुनिश्चित करें कि ऐप डिवाइस के बैकग्राउंड में है।

  3. फायरबेस कंसोल में, मैसेजिंग पेज खोलें।

  4. यदि यह आपका पहला संदेश है, तो अपना पहला अभियान बनाएं चुनें.

    1. फायरबेस अधिसूचना संदेश चुनें और बनाएं चुनें।
  5. अन्यथा, अभियान टैब पर, नया अभियान और फिर सूचनाएं चुनें।

  6. संदेश पाठ दर्ज करें. अन्य सभी फ़ील्ड वैकल्पिक हैं.

  7. दाएँ फलक से परीक्षण संदेश भेजें का चयन करें।

  8. FCM पंजीकरण टोकन जोड़ें लेबल वाले फ़ील्ड में, इस गाइड के पिछले अनुभाग में प्राप्त पंजीकरण टोकन दर्ज करें।

  9. परीक्षण का चयन करें.

आपके द्वारा परीक्षण का चयन करने के बाद, लक्षित क्लाइंट डिवाइस (पृष्ठभूमि में ऐप के साथ) को अधिसूचना प्राप्त होनी चाहिए।

अपने ऐप पर संदेश वितरण की जानकारी के लिए, एफसीएम रिपोर्टिंग डैशबोर्ड देखें, जो ऐप्पल और एंड्रॉइड डिवाइस पर भेजे गए और खोले गए संदेशों की संख्या को रिकॉर्ड करता है, साथ ही एंड्रॉइड ऐप के लिए "इंप्रेशन" (उपयोगकर्ताओं द्वारा देखी गई सूचनाएं) के डेटा को भी रिकॉर्ड करता है।

बातचीत को संभालना

जब उपयोगकर्ता किसी अधिसूचना पर टैप करते हैं, तो एंड्रॉइड और आईओएस दोनों पर डिफ़ॉल्ट व्यवहार एप्लिकेशन को खोलना होता है। यदि एप्लिकेशन समाप्त हो गया है, तो इसे प्रारंभ किया जाएगा, और यदि यह पृष्ठभूमि में है, तो इसे अग्रभूमि में लाया जाएगा।

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

firebase-messaging पैकेज इस इंटरैक्शन को संभालने के दो तरीके प्रदान करता है:

  1. getInitialMessage() : यदि एप्लिकेशन को समाप्त स्थिति से खोला जाता है, तो यह विधि एक RemoteMessage युक्त Future लौटाती है। एक बार उपभोग हो जाने पर, RemoteMessage हटा दिया जाएगा।
  2. onMessageOpenedApp : एक Stream जो पृष्ठभूमि स्थिति से एप्लिकेशन खोले जाने पर RemoteMessage पोस्ट करती है।

अपने उपयोगकर्ताओं के लिए सहज अनुभव सुनिश्चित करने के लिए, आपको दोनों परिदृश्यों को संभालना चाहिए। नीचे दिया गया कोड उदाहरण बताता है कि इसे कैसे प्राप्त किया जा सकता है:

class Application extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => _Application();
}

class _Application extends State<Application> {
  // In this example, suppose that all messages contain a data field with the key 'type'.
  Future<void> setupInteractedMessage() async {
    // Get any messages which caused the application to open from
    // a terminated state.
    RemoteMessage? initialMessage =
        await FirebaseMessaging.instance.getInitialMessage();

    // If the message also contains a data property with a "type" of "chat",
    // navigate to a chat screen
    if (initialMessage != null) {
      _handleMessage(initialMessage);
    }

    // Also handle any interaction when the app is in the background via a
    // Stream listener
    FirebaseMessaging.onMessageOpenedApp.listen(_handleMessage);
  }

  void _handleMessage(RemoteMessage message) {
    if (message.data['type'] == 'chat') {
      Navigator.pushNamed(context, '/chat',
        arguments: ChatArguments(message),
      );
    }
  }

  @override
  void initState() {
    super.initState();

    // Run code required to handle interacted messages in an async function
    // as initState() must not be async
    setupInteractedMessage();
  }

  @override
  Widget build(BuildContext context) {
    return Text("...");
  }
}

आप इंटरैक्शन को कैसे संभालते हैं यह आपके एप्लिकेशन सेटअप पर निर्भर करता है। उपरोक्त उदाहरण StatefulWidget का उपयोग करने का एक बुनियादी उदाहरण दिखाता है।

अगले कदम

अग्रभूमि ऐप्स को संदेश भेजें

एक बार जब आपका ऐप पृष्ठभूमि में हो तब आपने सफलतापूर्वक अधिसूचना संदेश भेज दिए हों, तो अग्रभूमि वाले ऐप्स पर भेजना शुरू करने के लिए फ़्लटर ऐप में संदेश प्राप्त करें देखें।

अधिसूचना संदेशों से आगे बढ़ें

अपने ऐप में अन्य, अधिक उन्नत व्यवहार जोड़ने के लिए, आपको एक सर्वर कार्यान्वयन की आवश्यकता होगी।

फिर, आपके ऐप क्लाइंट में: