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

Unity ile bir Firebase Bulut Mesajlaşma istemci uygulaması kurun

Unity ile platformlar arası Firebase Cloud Messaging istemci uygulamanızı yazmak için Firebase Cloud Messaging API'yi kullanın. Unity SDK, hem Android hem de Apple için çalışır ve her platform için bazı ek kurulumlar gerekir.

Sen başlamadan önce

Önkoşullar

  • Unity 2019.1 veya üstünü yükleyin. Önceki sürümler de uyumlu olabilir ancak aktif olarak desteklenmeyecektir. Unity 2019.1 desteği kullanımdan kaldırılmıştır ve bir sonraki büyük sürümden sonra artık aktif olarak desteklenmeyecektir.

  • (Yalnızca Apple platformları) Aşağıdakileri yükleyin:

    • Xcode 13.3.1 veya üstü
    • CocoaPods 1.10.0 veya üstü
  • Unity projenizin şu gereksinimleri karşıladığından emin olun:

    • iOS için — iOS 11 veya üstünü hedefler
    • tvOS için - tvOS 12 veya üstünü hedefler
    • Android için — API düzeyi 19 (KitKat) veya üstünü hedefler
  • Unity projenizi çalıştırmak için bir cihaz kurun veya bir öykünücü kullanın.

    • iOS veya tvOS için — Uygulamanızı çalıştırmak için fiziksel bir cihaz kurun ve şu görevleri tamamlayın:

      • Apple Geliştirici hesabınız için bir Apple Anında Bildirim Kimlik Doğrulama Anahtarı edinin.
      • App > Capabilities altında XCode'da Push Bildirimlerini etkinleştirin.
    • Android içinÖykünücüler, Google Play ile birlikte bir öykünücü görüntüsü kullanmalıdır.

Halihazırda bir Unity projeniz yoksa ve yalnızca bir Firebase ürünü denemek istiyorsanız, hızlı başlangıç ​​örneklerimizden birini indirebilirsiniz.

1. Adım: Bir Firebase projesi oluşturun

Unity projenize Firebase ekleyebilmeniz için Unity projenize bağlanmak üzere bir Firebase projesi oluşturmanız gerekir. Firebase projeleri hakkında daha fazla bilgi edinmek için Firebase Projelerini Anlayın sayfasını ziyaret edin.

2. Adım: Uygulamanızı Firebase'e kaydedin

Firebase projenizle bağlantı kurmak için bir veya daha fazla uygulama ya da oyun kaydedebilirsiniz.

  1. Firebase konsoluna gidin.

  2. Kurulum iş akışını başlatmak için projeye genel bakış sayfasının ortasındaki Unity simgesine ( ) tıklayın.

    Firebase projenize zaten bir uygulama eklediyseniz platform seçeneklerini görüntülemek için Uygulama ekle'yi tıklayın.

  3. Unity projenizin hangi yapı hedefini kaydetmek istediğinizi seçin veya şimdi her iki hedefi de şimdi aynı anda kaydetmeyi seçebilirsiniz.

  4. Unity projenizin platforma özgü kimlik(ler)ini girin.

    • iOS için — Unity projenizin iOS kimliğini iOS paket kimliği alanına girin.

    • Android için — Unity projenizin Android kimliğini Android paket adı alanına girin.
      Paket adı ve uygulama kimliği terimleri genellikle birbirinin yerine kullanılır.

  5. (İsteğe bağlı) Unity projenizin platforma özgü takma adlarını girin.
    Bu takma adlar dahili, kolaylık sağlayan tanımlayıcılardır ve Firebase konsolunda yalnızca sizin tarafınızdan görülebilir.

  6. Uygulamayı kaydet'i tıklayın.

3. Adım: Firebase yapılandırma dosyalarını ekleyin

  1. Firebase konsolu kurulum iş akışında platforma özgü Firebase yapılandırma dosyalarınızı edinin.

    • iOS içinGoogleService-Info.plist'i İndir'i tıklayın.

    • Android içingoogle-services.json'u İndir'i tıklayın.

  2. Unity projenizin Proje penceresini açın, ardından yapılandırma dosyalarınızı Assets klasörüne taşıyın.

  3. Firebase konsolunda, kurulum iş akışında İleri 'yi tıklayın.

4. Adım: Firebase Unity SDK'ları ekleyin

  1. Firebase konsolunda, Firebase Unity SDK'yı İndir'i tıklayın, ardından SDK'yı uygun bir yere sıkıştırın.

    • Firebase Unity SDK'yı istediğiniz zaman tekrar indirebilirsiniz.

    • Firebase Unity SDK, platforma özgü değildir.

  2. Açık Unity projenizde Assets > Import Package > Custom Package seçeneğine gidin.

  3. Sıkıştırılmış SDK'dan, uygulamanızda kullanmak istediğiniz desteklenen Firebase ürünlerini seçin.

    Firebase Cloud Messaging ile optimum bir deneyim için projenizde Google Analytics'i etkinleştirmenizi öneririz. Ayrıca Analytics kurulumunun bir parçası olarak, uygulamanıza Analytics için Firebase paketini eklemeniz gerekir.

    Analitik etkinleştirildi

    • Google Analytics için Firebase paketini ekleyin: FirebaseAnalytics.unitypackage
    • Firebase Cloud Messaging paketini ekleyin: FirebaseMessaging.unitypackage

    Analitik etkin değil

    Firebase Cloud Messaging paketini ekleyin: FirebaseMessaging.unitypackage

  4. Unity Paketini İçe Aktar penceresinde, İçe Aktar seçeneğine tıklayın.

  5. Firebase konsolunda, kurulum iş akışında İleri 'yi tıklayın.

5. Adım: Google Play hizmetlerinin sürüm gereksinimlerini onaylayın

Android için Firebase Unity SDK, SDK'nın kullanılabilmesi için önce güncel olması gereken Google Play hizmetlerini gerektirir.

Uygulamanızın başına aşağıdaki kodu ekleyin. SDK'daki diğer yöntemleri çağırmadan önce Google Play hizmetlerini kontrol edebilir ve isteğe bağlı olarak Firebase Unity SDK'nın gerektirdiği sürüme güncelleyebilirsiniz.

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.
  }
});

Unity projeniz kaydedildi ve Firebase'i kullanacak şekilde yapılandırıldı.

Apple platformlarında push bildirimlerini etkinleştirin

1. Adım: Kullanıcı bildirimleri çerçevesi ekleyin

  1. Xcode'da projeye tıklayın, ardından Düzenleyici alanından Genel sekmesini seçin.

  2. Bağlantılı Çerçeveler ve Kitaplıklar'a ilerleyin, ardından bir çerçeve eklemek için + düğmesini tıklayın.

  3. Görünen pencerede UserNotifications.framework'e gidin, o girişi tıklayın, ardından Ekle'yi tıklayın.

2. Adım: Push bildirimlerini etkinleştirin

  1. Xcode'da projeye tıklayın, ardından Düzenleyici alanından Yetenekler sekmesini seçin.

  2. Push Bildirimlerini Açık olarak değiştirin.

  3. Arka Plan Modları'na ilerleyin, ardından Açık olarak değiştirin.

  4. Arka Plan Modları altında Uzak bildirimler onay kutusunu seçin.

Firebase Cloud Messaging'i Başlatın

Firebase Cloud Message kitaplığı, TokenReceived veya MessageReceived olayları için işleyiciler eklenirken başlatılacaktır.

Başlatmanın ardından, istemci uygulama örneği için bir kayıt belirteci istenir. Uygulama, belirteci, daha sonra kullanılmak üzere önbelleğe alınması gereken OnTokenReceived olayıyla alacaktır. Mesajlar için bu belirli cihazı hedeflemek istiyorsanız bu simgeye ihtiyacınız olacak.

Ayrıca gelen mesajları alabilmek için OnMessageReceived olayına kayıt olmanız gerekmektedir.

Tüm kurulum şöyle görünür:

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);
}

Bir Android giriş noktası Etkinliğini yapılandırma

Android'de Firebase Cloud Messaging, varsayılan UnityPlayerActivity yerini alan özel bir giriş noktası etkinliğiyle birlikte gelir. Özel bir giriş noktası kullanmıyorsanız, bu değiştirme otomatik olarak gerçekleşir ve herhangi bir ek işlem yapmanız gerekmez. Varsayılan Activity giriş noktası kullanmayan veya kendi Assets/Plugins/AndroidManifest.xml sağlayan uygulamaların ekstra yapılandırmaya ihtiyacı olacaktır.

Android'de Firebase Cloud Messaging Unity Plugin, iki ek dosyayla birlikte gelir:

  • Assets/Plugins/Android/libmessaging_unity_player_activity.jar standart UnityPlayerActivity yerini alan MessagingUnityPlayerActivity adlı bir etkinlik içerir.
  • Assets/Plugins/Android/AndroidManifest.xml uygulamaya, uygulamaya giriş noktası olarak MessagingUnityPlayerActivity kullanma talimatı verir.

Bu dosyalar, varsayılan UnityPlayerActivity onStop , onRestart etkinlik yaşam döngüsü geçişlerini işlememesi veya Firebase Cloud Messaging'in gelen iletileri doğru bir şekilde işlemesi için gerekli olan onNewIntent uygulamaması nedeniyle sağlanmıştır.

Özel bir giriş noktası Etkinliği yapılandırma

Uygulamanız varsayılan UnityPlayerActivity kullanmıyorsa, sağlanan AndroidManifest.xml dosyasını kaldırmanız ve özel etkinliğinizin Android Etkinlik Yaşam Döngüsünün tüm geçişlerini doğru şekilde işlediğinden emin olmanız gerekir (bunun nasıl yapılacağına ilişkin bir örnek aşağıda gösterilmiştir). Özel etkinliğiniz UnityPlayerActivity genişletiyorsa, bunun yerine gerekli tüm yöntemleri uygulayan com.google.firebase.MessagingUnityPlayerActivity genişletebilirsiniz.

Özel bir Activity kullanıyorsanız ve com.google.firebase.MessagingUnityPlayerActivity öğesini genişletmiyorsanız, Activity'nize aşağıdaki parçacıkları eklemelisiniz.

/**
 * 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'nın yeni sürümleri (7.1.0 sonrası), AndroidManifest.xml dosyasında ek değişiklikler gerektiren JobIntentService kullanır.

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

Android'de mesaj teslimi hakkında not

Uygulama hiç çalışmıyorken ve bir kullanıcı bir bildirime dokunduğunda, mesaj varsayılan olarak FCM'nin yerleşik geri aramaları aracılığıyla yönlendirilmez. Bu durumda, ileti yükleri, uygulamayı başlatmak için kullanılan bir Intent aracılığıyla alınır.

Uygulama arka plandayken alınan mesajların bildirim alanlarının içeriği, sistem tepsisi bildirimini doldurmak için kullanılır, ancak bu bildirim içeriği FCM'ye iletilmez. Yani, FirebaseMessage.Notification bir boş olacaktır.

Özetle:

Uygulama durumu Bildiri Veri İkisi birden
ön plan Firebase.Messaging.FirebaseMessaging.MessageReceived Firebase.Messaging.FirebaseMessaging.MessageReceived Firebase.Messaging.FirebaseMessaging.MessageReceived
Arka plan Sistem tepsisi Firebase.Messaging.FirebaseMessaging.MessageReceived Bildirim: sistem tepsisi
Veri: amacın ekstralarında.

Otomatik başlatmayı engelle

FCM, cihaz hedefleme için bir kayıt belirteci oluşturur. Bir belirteç oluşturulduğunda kitaplık, tanımlayıcıyı ve yapılandırma verilerini Firebase'e yükler. Belirteci kullanmadan önce açık bir katılım almak istiyorsanız, FCM'yi (ve Android'de, Analytics'i) devre dışı bırakarak yapılandırma zamanında oluşturmayı önleyebilirsiniz. Bunu yapmak için, Apple'da Info.plist ( GoogleService-Info.plist değil) veya Android'de AndroidManifest.xml bir meta veri değeri ekleyin:

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>

Süratli

FirebaseMessagingAutoInitEnabled = NO

FCM'yi yeniden etkinleştirmek için bir çalışma zamanı araması yapabilirsiniz:

Firebase.Messaging.FirebaseMessaging.TokenRegistrationOnInitEnabled = true;

Bu değer, ayarlandıktan sonra uygulama yeniden başlatmalarında devam eder.

FCM, uygulamanıza derin bir bağlantı içeren mesajların gönderilmesine izin verir. Derin bağlantı içeren mesajları almak için, uygulamanız için derin bağlantıları işleyen etkinliğe yeni bir amaç filtresi eklemelisiniz. Niyet filtresi, alanınızın derin bağlantılarını yakalamalıdır. Mesajlarınız bir derin bağlantı içermiyorsa, bu yapılandırma gerekli değildir. AndroidManifest.xml'de:

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

Niyet filtresini daha esnek hale getirmek için bir joker karakter belirtmek de mümkündür. Örneğin:

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

Kullanıcılar belirttiğiniz şemaya ve ana bilgisayara bağlantı içeren bir bildirime dokunduğunda, uygulamanız bağlantıyı işlemek için bu amaç filtresiyle etkinliği başlatır.

Sonraki adımlar

İstemci uygulamasını kurduktan sonra, Firebase ile aşağı akış ve konu mesajları göndermeye hazırsınız. Daha fazla bilgi edinmek için bu işlevi gösteren hızlı başlangıç ​​örneğine bakın.

Uygulamanıza başka, daha gelişmiş davranışlar eklemek için bir uygulama sunucusundan mesaj gönderme kılavuzlarına bakın:

Bu özelliklerden yararlanmak için bir sunucu uygulamasına ihtiyacınız olacağını unutmayın.