Catch up on highlights from Firebase at Google I/O 2023. Learn more

एकता के साथ एक फायरबेस क्लाउड मैसेजिंग क्लाइंट ऐप सेट करें

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

शुरू करने से पहले

आवश्यक शर्तें

  • एकता 2019.1 या बाद में स्थापित करें। पहले के संस्करण भी संगत हो सकते हैं लेकिन सक्रिय रूप से समर्थित नहीं होंगे। यूनिटी 2019.1 के लिए समर्थन को पदावनत माना जाता है, और अगली बड़ी रिलीज़ के बाद सक्रिय रूप से समर्थित नहीं किया जाएगा।

  • (केवल Apple प्लेटफ़ॉर्म) निम्न को स्थापित करें:

    • एक्सकोड 13.3.1 या उच्चतर
    • कोकोआपोड्स 1.10.0 या उच्चतर
  • सुनिश्चित करें कि आपकी एकता परियोजना इन आवश्यकताओं को पूरा करती है:

    • आईओएस के लिए - आईओएस 11 या उच्चतर लक्षित करता है
    • TVOS के लिए - TVOS 12 या उच्चतर को लक्षित करता है
    • Android के लिए — लक्ष्य API स्तर 19 (किटकैट) या उच्चतर
  • अपने यूनिटी प्रोजेक्ट को चलाने के लिए डिवाइस सेट अप करें या एमुलेटर का उपयोग करें।

    • आईओएस या टीवीओएस के लिए - अपने ऐप को चलाने के लिए एक भौतिक डिवाइस सेट करें और इन कार्यों को पूरा करें:

      • अपने Apple डेवलपर खाते के लिए Apple Push Notification Authentication Key प्राप्त करें।
      • ऐप > क्षमताओं के तहत एक्सकोड में पुश अधिसूचनाएं सक्षम करें।
    • Android के लिए - एमुलेटर को Google Play के साथ एक एमुलेटर छवि का उपयोग करना चाहिए।

अगर आपके पास पहले से कोई यूनिटी प्रोजेक्ट नहीं है और आप केवल एक Firebase उत्पाद को आज़माना चाहते हैं, तो आप हमारे क्विकस्टार्ट नमूनों में से एक को डाउनलोड कर सकते हैं।

चरण 1: एक फायरबेस प्रोजेक्ट बनाएं

इससे पहले कि आप अपने यूनिटी प्रोजेक्ट में फायरबेस जोड़ सकें, आपको अपने यूनिटी प्रोजेक्ट से कनेक्ट करने के लिए फायरबेस प्रोजेक्ट बनाना होगा। फायरबेस प्रोजेक्ट्स के बारे में अधिक जानने के लिए अंडरस्टैंड फायरबेस प्रोजेक्ट्स पर जाएं।

चरण 2: अपने ऐप को फायरबेस के साथ पंजीकृत करें

आप अपने फायरबेस प्रोजेक्ट से जुड़ने के लिए एक या अधिक ऐप या गेम पंजीकृत कर सकते हैं।

  1. फायरबेस कंसोल पर जाएं।

  2. प्रोजेक्ट अवलोकन पृष्ठ के केंद्र में, सेटअप वर्कफ़्लो लॉन्च करने के लिए एकता आइकन ( ) पर क्लिक करें।

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

  3. अपनी एकता परियोजना के निर्माण लक्ष्य का चयन करें जिसे आप पंजीकृत करना चाहते हैं, या आप एक ही समय में दोनों लक्ष्यों को पंजीकृत करने के लिए भी चयन कर सकते हैं।

  4. अपने यूनिटी प्रोजेक्ट की प्लेटफ़ॉर्म-विशिष्ट आईडी दर्ज करें।

    • आईओएस के लिए - आईओएस बंडल आईडी फील्ड में अपनी यूनिटी प्रोजेक्ट की आईओएस आईडी दर्ज करें।

    • Android के लिएAndroid पैकेज नाम फ़ील्ड में अपनी यूनिटी प्रोजेक्ट की Android आईडी दर्ज करें।
      पैकेज नाम और एप्लिकेशन आईडी शब्द अक्सर एक दूसरे के स्थान पर उपयोग किए जाते हैं।

  5. (वैकल्पिक) अपने यूनिटी प्रोजेक्ट के प्लेटफ़ॉर्म-विशिष्ट उपनाम दर्ज करें।
    ये उपनाम आंतरिक, सुविधा पहचानकर्ता हैं और केवल फायरबेस कंसोल में आपको दिखाई देते हैं।

  6. रजिस्टर ऐप पर क्लिक करें।

चरण 3: फायरबेस कॉन्फ़िगरेशन फ़ाइलें जोड़ें

  1. Firebase कंसोल सेटअप वर्कफ़्लो में अपनी प्लेटफ़ॉर्म-विशिष्ट Firebase कॉन्फ़िगरेशन फ़ाइल प्राप्त करें।

    • iOS के लिएडाउनलोड GoogleService-Info.plist पर क्लिक करें।

    • Android के लिएडाउनलोड google-services.json पर क्लिक करें।

  2. अपने यूनिटी प्रोजेक्ट की प्रोजेक्ट विंडो खोलें, फिर अपनी कॉन्फिग फाइल (फाइलों) को Assets फोल्डर में ले जाएं।

  3. Firebase कंसोल में वापस, सेटअप वर्कफ़्लो में, अगला क्लिक करें।

चरण 4: फायरबेस यूनिटी एसडीके जोड़ें

  1. फायरबेस कंसोल में, फायरबेस यूनिटी एसडीके डाउनलोड करें पर क्लिक करें, फिर एसडीके को कहीं सुविधाजनक जगह पर अनज़िप करें।

    • आप किसी भी समय Firebase Unity SDK को फिर से डाउनलोड कर सकते हैं।

    • फायरबेस यूनिटी एसडीके प्लेटफॉर्म-विशिष्ट नहीं है।

  2. अपनी खुली एकता परियोजना में, संपत्ति > आयात पैकेज > कस्टम पैकेज पर नेविगेट करें।

  3. अनज़िप किए गए SDK से, समर्थित Firebase उत्पादों का चयन करें जिन्हें आप अपने ऐप में उपयोग करना चाहते हैं।

    फायरबेस क्लाउड मैसेजिंग के साथ एक इष्टतम अनुभव के लिए, हम आपके प्रोजेक्ट में Google Analytics को सक्षम करने की सलाह देते हैं। साथ ही, एनालिटिक्स की स्थापना के हिस्से के रूप में, आपको अपने ऐप में एनालिटिक्स के लिए फायरबेस पैकेज जोड़ना होगा।

    विश्लेषिकी सक्षम

    • Google Analytics के लिए Firebase पैकेज जोड़ें: FirebaseAnalytics.unitypackage
    • फायरबेस क्लाउड मैसेजिंग के लिए पैकेज जोड़ें: FirebaseMessaging.unitypackage

    विश्लेषिकी सक्षम नहीं है

    फायरबेस क्लाउड मैसेजिंग के लिए पैकेज जोड़ें: FirebaseMessaging.unitypackage

  4. आयात एकता पैकेज विंडो में, आयात पर क्लिक करें।

  5. Firebase कंसोल में वापस, सेटअप वर्कफ़्लो में, अगला क्लिक करें।

चरण 5: Google Play सेवाओं की संस्करण आवश्यकताओं की पुष्टि करें

Android के लिए Firebase Unity SDK के लिए Google Play सेवाओं की आवश्यकता होती है, जो SDK का उपयोग करने से पहले अप-टू-डेट होनी चाहिए।

अपने आवेदन की शुरुआत में निम्नलिखित कोड जोड़ें। आप एसडीके में किसी अन्य तरीके को कॉल करने से पहले फायरबेस यूनिटी एसडीके द्वारा आवश्यक संस्करण के लिए Google Play सेवाओं की जांच कर सकते हैं और वैकल्पिक रूप से अपडेट कर सकते हैं।

Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
  var dependencyStatus = task.Result;
  if (dependencyStatus == Firebase.DependencyStatus.Available) {
    // Create and hold a reference to your FirebaseApp,
    // where app is a Firebase.FirebaseApp property of your application class.
       app = Firebase.FirebaseApp.DefaultInstance;

    // Set a flag here to indicate whether Firebase is ready to use by your app.
  } else {
    UnityEngine.Debug.LogError(System.String.Format(
      "Could not resolve all Firebase dependencies: {0}", dependencyStatus));
    // Firebase Unity SDK is not safe to use here.
  }
});

आपका यूनिटी प्रोजेक्ट पंजीकृत है और फायरबेस का उपयोग करने के लिए कॉन्फ़िगर किया गया है।

Apple प्लेटफ़ॉर्म पर पुश सूचनाएँ सक्षम करें

चरण 1: उपयोगकर्ता सूचना ढांचा जोड़ें

  1. Xcode में प्रोजेक्ट पर क्लिक करें, फिर संपादक क्षेत्र से सामान्य टैब चुनें।

  2. लिंक्ड फ्रेमवर्क और लाइब्रेरी तक नीचे स्क्रॉल करें, फिर फ्रेमवर्क जोड़ने के लिए + बटन पर क्लिक करें।

  3. दिखाई देने वाली विंडो में, UserNotifications.framework तक स्क्रॉल करें, उस प्रविष्टि पर क्लिक करें, फिर जोड़ें पर क्लिक करें।

चरण 2: पुश सूचनाएँ सक्षम करें

  1. Xcode में प्रोजेक्ट पर क्लिक करें, फिर संपादक क्षेत्र से क्षमता टैब चुनें।

  2. पुश नोटिफ़िकेशन को चालू पर स्विच करें.

  3. पृष्ठभूमि मोड तक नीचे स्क्रॉल करें, फिर उसे चालू पर स्विच करें.

  4. बैकग्राउंड मोड्स के तहत रिमोट नोटिफिकेशन चेकबॉक्स चुनें।

फायरबेस क्लाउड मैसेजिंग को इनिशियलाइज़ करें

TokenReceived या MessageReceived इवेंट के लिए हैंडलर जोड़ते समय Firebase क्लाउड मैसेज लाइब्रेरी को इनिशियलाइज़ किया जाएगा।

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

इसके अतिरिक्त, यदि आप आने वाले संदेशों को प्राप्त करने में सक्षम होना चाहते हैं तो आपको OnMessageReceived ईवेंट के लिए पंजीकरण करना होगा।

पूरा सेटअप इस तरह दिखता है:

public void Start() {
  Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;
  Firebase.Messaging.FirebaseMessaging.MessageReceived += OnMessageReceived;
}

public void OnTokenReceived(object sender, Firebase.Messaging.TokenReceivedEventArgs token) {
  UnityEngine.Debug.Log("Received Registration Token: " + token.Token);
}

public void OnMessageReceived(object sender, Firebase.Messaging.MessageReceivedEventArgs e) {
  UnityEngine.Debug.Log("Received a new message from: " + e.Message.From);
}

Android प्रवेश बिंदु गतिविधि को कॉन्फ़िगर करना

एंड्रॉइड पर, फायरबेस क्लाउड मैसेजिंग एक कस्टम एंट्री पॉइंट गतिविधि के साथ आता है जो डिफ़ॉल्ट UnityPlayerActivity को बदल देता है। यदि आप एक कस्टम प्रविष्टि बिंदु का उपयोग नहीं कर रहे हैं तो यह प्रतिस्थापन स्वचालित रूप से होता है और आपको कोई अतिरिक्त कार्रवाई नहीं करनी चाहिए। ऐसे ऐप्स जो डिफ़ॉल्ट प्रवेश बिंदु गतिविधि का उपयोग नहीं करते हैं या जो अपने स्वयं के Assets/Plugins/AndroidManifest.xml की आपूर्ति करते हैं, उन्हें अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता होगी।

Android पर Firebase क्लाउड मैसेजिंग यूनिटी प्लगइन दो अतिरिक्त फाइलों के साथ आता है:

  • Assets/Plugins/Android/libmessaging_unity_player_activity.jar में MessagingUnityPlayerActivity नामक एक गतिविधि होती है जो मानक UnityPlayerActivity प्रतिस्थापित करती है।
  • Assets/Plugins/Android/AndroidManifest.xml ऐप को MessagingUnityPlayerActivity को ऐप के प्रवेश बिंदु के रूप में उपयोग करने का निर्देश देता है।

ये फ़ाइलें प्रदान की जाती हैं क्योंकि डिफ़ॉल्ट UnityPlayerActivity onStop , onRestart गतिविधि जीवनचक्र संक्रमण को संभालती नहीं है या आने वाले संदेशों को सही ढंग से संभालने के लिए Firebase क्लाउड मैसेजिंग के लिए आवश्यक onNewIntent लागू नहीं करती है।

एक कस्टम प्रवेश बिंदु गतिविधि को कॉन्फ़िगर करना

यदि आपका ऐप डिफ़ॉल्ट UnityPlayerActivity उपयोग नहीं करता है, तो आपको आपूर्ति की गई AndroidManifest.xml हटाने की आवश्यकता होगी और यह सुनिश्चित करना होगा कि आपकी कस्टम गतिविधि Android गतिविधि जीवनचक्र के सभी संक्रमणों को ठीक से संभालती है (यह कैसे करें इसका एक उदाहरण नीचे दिखाया गया है)। यदि आपकी कस्टम गतिविधि UnityPlayerActivity विस्तार करती है तो आप इसके बजाय com.google.firebase.MessagingUnityPlayerActivity का विस्तार कर सकते हैं जो सभी आवश्यक विधियों को लागू करता है।

यदि आप एक कस्टम गतिविधि का उपयोग कर रहे हैं और com.google.firebase.MessagingUnityPlayerActivity का विस्तार नहीं कर रहे हैं, तो आपको अपनी गतिविधि में निम्नलिखित स्निपेट शामिल करने चाहिए।

/**
 * Workaround for when a message is sent containing both a Data and Notification payload.
 *
 * When the app is in the background, if a message with both a data and notification payload is
 * received the data payload is stored on the Intent passed to onNewIntent. By default, that
 * intent does not get set as the Intent that started the app, so when the app comes back online
 * it doesn't see a new FCM message to respond to. As a workaround, we override onNewIntent so
 * that it sends the intent to the MessageForwardingService which forwards the message to the
 * FirebaseMessagingService which in turn sends the message to the application.
 */
@Override
protected void onNewIntent(Intent intent) {
  Intent message = new Intent(this, MessageForwardingService.class);
  message.setAction(MessageForwardingService.ACTION_REMOTE_INTENT);
  message.putExtras(intent);
  message.setData(intent.getData());
  // For older versions of Firebase C++ SDK (< 7.1.0), use `startService`.
  // startService(message);
  MessageForwardingService.enqueueWork(this, message);
}

/**
 * Dispose of the mUnityPlayer when restarting the app.
 *
 * This ensures that when the app starts up again it does not start with stale data.
 */
@Override
protected void onCreate(Bundle savedInstanceState) {
  if (mUnityPlayer != null) {
    mUnityPlayer.quit();
    mUnityPlayer = null;
  }
  super.onCreate(savedInstanceState);
}

Firebase C++ SDK (7.1.0 आगे) के नए संस्करण JobIntentService उपयोग करते हैं जिसके लिए AndroidManifest.xml फ़ाइल में अतिरिक्त संशोधन की आवश्यकता होती है।

<service android:name="com.google.firebase.messaging.MessageForwardingService"
     android:permission="android.permission.BIND_JOB_SERVICE"
     android:exported="false" >
</service>

Android पर संदेश वितरण के बारे में ध्यान दें

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

ऐप पृष्ठभूमि में होने पर प्राप्त संदेशों में सिस्टम ट्रे अधिसूचना को पॉप्युलेट करने के लिए उपयोग की जाने वाली अधिसूचना फ़ील्ड की सामग्री होती है, लेकिन उस अधिसूचना सामग्री को एफसीएम को सूचित नहीं किया जाएगा। यही है, FirebaseMessage.Notification एक शून्य होगा।

सारांश:

ऐप राज्य अधिसूचना आंकड़े दोनों
अग्रभूमि Firebase.Messaging.FirebaseMessaging.MessageReceived Firebase.Messaging.FirebaseMessaging.MessageReceived Firebase.Messaging.FirebaseMessaging.MessageReceived
पृष्ठभूमि सिस्टम ट्रे Firebase.Messaging.FirebaseMessaging.MessageReceived अधिसूचना: सिस्टम ट्रे
डेटा: आशय के अतिरिक्त में।

ऑटो आरंभीकरण रोकें

FCM उपकरण लक्ष्यीकरण के लिए एक पंजीकरण टोकन बनाता है। जब एक टोकन उत्पन्न होता है, तो पुस्तकालय पहचानकर्ता और कॉन्फ़िगरेशन डेटा को फायरबेस पर अपलोड करता है। यदि आप टोकन का उपयोग करने से पहले एक स्पष्ट ऑप्ट-इन प्राप्त करना चाहते हैं, तो आप FCM (और एंड्रॉइड, एनालिटिक्स) को अक्षम करके पीढ़ी को कॉन्फ़िगर समय पर रोक सकते हैं। ऐसा करने के लिए, Apple पर अपनी Info.plist (न कि आपकी GoogleService-Info.plist ) या Android पर अपने AndroidManifest.xml में मेटाडेटा मान जोड़ें:

एंड्रॉयड

<?xml version="1.0" encoding="utf-8"?>
<application>
  <meta-data android:name="firebase_messaging_auto_init_enabled"
             android:value="false" />
  <meta-data android:name="firebase_analytics_collection_enabled"
             android:value="false" />
</application>

तीव्र

FirebaseMessagingAutoInitEnabled = NO

FCM को पुन: सक्षम करने के लिए, आप रनटाइम कॉल कर सकते हैं:

Firebase.Messaging.FirebaseMessaging.TokenRegistrationOnInitEnabled = true;

यह मान एक बार सेट होने के बाद ऐप के पुनरारंभ होने पर बना रहता है।

FCM आपके ऐप में डीप लिंक वाले संदेशों को भेजने की अनुमति देता है। डीप लिंक वाले संदेश प्राप्त करने के लिए, आपको उस गतिविधि में एक नया इंटेंट फ़िल्टर जोड़ना होगा जो आपके ऐप के लिए डीप लिंक को हैंडल करता है। इंटेंट फ़िल्टर को आपके डोमेन के डीप लिंक को पकड़ना चाहिए। यदि आपके संदेशों में डीप लिंक नहीं है, तो यह कॉन्फ़िगरेशन आवश्यक नहीं है। AndroidManifest.xml में:

<intent-filter>
  <action android:name="android.intent.action.VIEW"/>
  <category android:name="android.intent.category.DEFAULT"/>
  <category android:name="android.intent.category.BROWSABLE"/>
  <data android:host="CHANGE_THIS_DOMAIN.example.com" android:scheme="http"/>
  <data android:host="CHANGE_THIS_DOMAIN.example.com" android:scheme="https"/>
</intent-filter>

आशय फ़िल्टर को अधिक लचीला बनाने के लिए वाइल्डकार्ड निर्दिष्ट करना भी संभव है। उदाहरण के लिए:

<intent-filter>
  <action android:name="android.intent.action.VIEW"/>
  <category android:name="android.intent.category.DEFAULT"/>
  <category android:name="android.intent.category.BROWSABLE"/>
  <data android:host="*.example.com" android:scheme="http"/>
  <data android:host="*.example.com" android:scheme="https"/>
</intent-filter>

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

अगले कदम

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

अपने ऐप में अन्य, अधिक उन्नत व्यवहार जोड़ने के लिए, ऐप सर्वर से संदेश भेजने के लिए मार्गदर्शिकाएँ देखें:

ध्यान रखें कि इन सुविधाओं का उपयोग करने के लिए आपको सर्वर कार्यान्वयन की आवश्यकता होगी।