मैं फायरबेस मैसेजिंग और स्पंदन के लिए नया हूं। स्पंदन के अनुसार firebase_messaging पैकेज docs, onTokenRefresh एक नया FCM टोकन जनरेट होने पर सक्रिय हो जाता है। और Google के फायरबेस docs के अनुसार दो परिदृश्य हैं जो ट्रिगर करते हैं टोकन पीढ़ी:

  1. प्रारंभिक ऐप स्टार्टअप पर जब एक नया टोकन जेनरेट होता है
  2. जब भी कोई मौजूदा टोकन बदला जाता है

मेरे आवेदन के main फ़ंक्शन का सरलीकृत संस्करण यहां दिया गया है। प्रत्येक निष्पादन के बाद, मैं एमुलेटर से ऐप हटा देता हूं और प्रदर्शित टोकन वास्तव में बदल जाता है। इसके बावजूद, onTokenRefresh को कभी भी निकाल नहीं दिया जाता है और अगर दस्तावेज़ीकरण की मेरी समझ सही है तो यह होना चाहिए।

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Firebase.initializeApp();
  FirebaseMessaging.instance.onTokenRefresh.listen((String token) {
    print("New token: $token");
  });

  String token = await FirebaseMessaging.instance.getToken();
  print("Token: $token");
  //runApp(MyApp());
}

जैसा कि मैंने कहा, मैं स्पंदन, डार्ट और फायरबेस मैसेजिंग के लिए नया हूं, क्या कुछ ऐसा है जिसे मैं मौलिक रूप से गलत समझ रहा हूं? धन्यवाद।

2
John 20 फरवरी 2021, 19:19

1 उत्तर

सबसे बढ़िया उत्तर

तो मुझे लगता है कि मैंने इसे समझ लिया। मैंने देखा कि कभी-कभी, onTokenRefresh वास्तव में आग लगा देता है। और मैं सोच रहा था कि क्या एम्यूलेटर पर स्पंदन एप्लिकेशन लॉन्च होने के साथ इसका कुछ संबंध है, इस अर्थ में कि टोकन उत्पन्न होने और श्रोता संलग्न होने के बीच दौड़ की स्थिति होती है।

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

0
John 25 फरवरी 2021, 23:06