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

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

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

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

  • एकता 2017.4 या बाद में स्थापित करें। पुराने संस्करण भी संगत हो सकते हैं लेकिन सक्रिय रूप से समर्थित नहीं होंगे।

  • (केवल iOS) निम्नलिखित स्थापित करें:

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

    • आईओएस के लिए - आईओएस 10 या उच्चतर को लक्षित करता है
    • लक्ष्य एपीआई स्तर 16 (Jelly Bean) या उच्चतर - Android के लिए

  • अपने यूनिटी प्रोजेक्ट को चलाने के लिए डिवाइस सेट करें या एमुलेटर का उपयोग करें।

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

      • आपके लिए एक Apple Push अधिसूचना प्रमाणीकरण कुंजी प्राप्त एप्पल डेवलपर खाते
      • अनुप्रयोग के तहत XCode में पुश सूचनाएं सक्षम> क्षमताओं।
    • एंड्रॉयड के लिए - एम्युलेटर्स Google Play के साथ एक एमुलेटर छवि का उपयोग करना होगा।

आप पहले से ही एक एकता परियोजना नहीं है, तो और सिर्फ एक Firebase उत्पाद बाहर की कोशिश करना चाहते हैं, तो आप हमारे में से एक डाउनलोड कर सकते हैं त्वरित प्रारंभ नमूने

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

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

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

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

  1. पर जाएं Firebase कंसोल

  2. परियोजना अवलोकन पृष्ठ के केंद्र में, एकता आइकन (क्लिक सेटअप कार्यप्रवाह शुरू करने के लिए)।

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

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

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

    • आईओएस के लिए - अपनी एकता परियोजना के iOS आईडी दर्ज आईओएस बंडल आईडी क्षेत्र।

    • एंड्रॉयड के लिए - अपनी एकता परियोजना के Android आईडी दर्ज करें Android पैकेज का नाम क्षेत्र।
      मामले पैकेज नाम और आवेदन आईडी अक्सर interchangeably उपयोग किया जाता है।

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

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

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

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

    • आईओएस के लिए - डाउनलोड GoogleService-Info.plist क्लिक करें।

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

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

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

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

  1. Firebase कंसोल में, एसडीके कहीं सुविधाजनक unzip, डाउनलोड Firebase एकता एसडीके क्लिक करें, फिर।

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

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

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

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

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

    एनालिटिक्स सक्षम

    • गूगल एनालिटिक्स के लिए Firebase पैकेज जोड़ें: FirebaseAnalytics.unitypackage
    • Firebase क्लाउड संदेश के लिए पैकेज जोड़ें: FirebaseMessaging.unitypackage

    एनालिटिक्स सक्षम नहीं है

    Firebase क्लाउड संदेश के लिए पैकेज जोड़ें: FirebaseMessaging.unitypackage

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

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

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

Android के लिए Firebase एकता एसडीके की आवश्यकता है Google Play सेवाओं , जो अप करने की तारीख एसडीके इस्तेमाल किया जा सकता से पहले किया जाना चाहिए।

अपने आवेदन की शुरुआत में निम्नलिखित कोड जोड़ें। आप एसडीके में किसी भी अन्य तरीके को कॉल करने से पहले फ़ायरबेस यूनिटी एसडीके द्वारा आवश्यक संस्करण में 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.
  }
});

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

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

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

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

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

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

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

  2. पर करने के लिए पुश सूचनाएं स्विच।

  3. स्क्रॉल पृष्ठभूमि मोड के लिए नीचे है, तो यह पर करने के लिए स्विच।

  4. पृष्ठभूमि मोड के तहत रिमोट सूचनाएं चेक बॉक्स चुनें।

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

Firebase बादल संदेश पुस्तकालय है जब या तो के लिए संचालकों को जोड़ने प्रारंभ हो जाएगा TokenReceived या MessageReceived घटनाओं।

प्रारंभ होने पर, क्लाइंट ऐप इंस्टेंस के लिए पंजीकरण टोकन का अनुरोध किया जाता है। अनुप्रयोग के साथ टोकन प्राप्त होगा 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 प्रवेश बिंदु गतिविधि को कॉन्फ़िगर करना

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

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

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

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

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

आपके एप्लिकेशन को डिफ़ॉल्ट उपयोग नहीं करता है UnityPlayerActivity आप आपूर्ति को दूर करने की आवश्यकता होगी AndroidManifest.xml और सुनिश्चित करें कि अपने कस्टम गतिविधि ठीक से के सभी संक्रमण संभालती एंड्रॉयड गतिविधि जीवनचक्र (ऐसा करने के तरीके का एक उदाहरण नीचे दिखाया गया है)। अपने कस्टम गतिविधि फैली तो 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 सी ++ एसडीके (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 आवेदन शुरू करने के लिए इस्तेमाल किया।

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

सारांश:

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

ऑटो इनिशियलाइज़ेशन रोकें

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

एंड्रॉयड

<?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>

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

अगला कदम

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

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

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