अधिसूचना क्लिक पर उपयोगकर्ताओं को एक पृष्ठ पर पुनर्निर्देशित कैसे करें

Jan 06 2021

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

जवाब

Shanto Jan 06 2021 at 21:19

AndroidManifest फ़ाइल के अंदर इसे जोड़ें

<intent-filter>
  <action android:name="FLUTTER_NOTIFICATION_CLICK" />
  <category android:name="android.intent.category.DEFAULT" />

सूचना डेटा के अंदर, एक विशिष्ट पृष्ठ पर नेविगेट करने के लिए click_action और अपने आवश्यक पैरामीटर जोड़ें

'data': {
     'click_action': 'FLUTTER_NOTIFICATION_CLICK',
     'product_id': 1,
     ...
   },

जब उपयोगकर्ता अधिसूचना पर क्लिक करता है तो इन तीनों घटनाओं में से एक आपके ऐप की स्थिति पर निर्भर करेगा।

_firebaseMessaging.configure(
  onMessage: (Map<String, dynamic> message) async {
    print("onMessage: $message"); _showItemDialog(message); }, onBackgroundMessage: myBackgroundMessageHandler, onLaunch: (Map<String, dynamic> message) async { print("onLaunch: $message");
    _navigateToItemDetail(message);
  },
  onResume: (Map<String, dynamic> message) async {
    print("onResume: $message");
    _navigateToItemDetail(message);
  },
);

संदेश से सूचना डेटा पुनः प्राप्त करें और अपने इच्छित पृष्ठ पर नेविगेट करें।

MuhammadTameemRafay Jan 06 2021 at 22:53

SecondScreen अन्य स्क्रीन का वर्ग नाम है।

_firebaseMessaging.configure(
      onMessage: (Map<String, dynamic> message) async {

         Navigator.push(context,
                MaterialPageRoute(builder: (BuildContext context) {
              return SecondScreen(
                message,
              );
            }));

        print("onMessage: $message");
        _showItemDialog(message);
      },
     
    );