Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

Unity ile çapraz platform Firebase Bulut Mesajlaşma istemcisi uygulamasını yazmak için kullanmak Firebase Bulut Mesajlaşma API. Unity SDK, her platform için bazı ek kurulumlarla birlikte hem Android hem de Apple için çalışır.

Sen başlamadan önce

Önkoşullar

  • Unity 2017.4 veya sonraki sürümünü yükleyin. Daha önceki sürümler de uyumlu olabilir ancak aktif olarak desteklenmeyecektir. Unity 2017.4 desteğinin kullanımdan kaldırıldığı kabul edilir ve bir sonraki ana sürümden sonra artık aktif olarak desteklenmeyecektir.

  • (sadece iOS) aşağıdaki yükleyin:

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

    • İOS'ta - iOS 10 veya daha yüksek hedefler
    • Hedefler API düzeyinde 19 (KitKat) veya daha - Android İçin

  • Unity projenizi çalıştırmak için bir cihaz kurun veya bir öykünücü kullanın.

    • İOS için - fiziksel bir iOS cihazı kurdu uygulamanızı çalıştırın ve bu görevleri tamamlamak için:

      • Sizin için bir Apple Push Notification Doğrulama Anahtarı Edinme Elma Geliştirici hesabına .
      • > Yetenek App altında XCode itin Bildirimleri Etkinleştir.
    • Android için - Emulators Google Play ile bir emülatör resim kullanmak gerekir.

Zaten bir Birlik projesi var ve sadece Firebase ürünü denemek istemiyorsanız, bizim birini indirebilirsiniz hızlı başlangıç örneklerinin .

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

Unity projenize Firebase eklemeden önce Unity projenize bağlanmak için bir Firebase projesi oluşturmanız gerekir. Ziyaret Firebase Projeleri Anlayın Firebase projeleri hakkında daha fazla bilgi edinmek.

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

Firebase projenize bağlanmak için bir veya daha fazla uygulama veya oyun kaydedebilirsiniz.

  1. Git Firebase konsoluna .

  2. Proje genel bakış Sayfanın ortasında, Birlik simgesine (tıklayın kurulum iş akışını başlatmak için).

    Zaten Firebase projeye bir uygulamayı eklediyseniz, platformu seçeneklerini görüntülemek için uygulama ekleme tıklayın.

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

  4. Unity projenizin platforma özel kimliklerini girin.

    • İOS için - sizin Birlik projenin iOS Kimliği girin iOS paketi kimliği alanına.

    • Android için - sizin Birlik projesinin Android Kimliği girin Android paketi adı alanına.
      Terimleri paket adı ve uygulama kimliği sıklıkla birbirinin yerine kullanılır.

  5. (İsteğe bağlı) Birlik projenin platforma özel takma ad (lar) girin.
    Bu takma adlar dahili, kullanışlı tanımlayıcılardır ve yalnızca siz Firebase konsolunda görebilirsiniz.

  6. Kayıt uygulamasını tıklayın.

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

  1. Firebase konsol kurulum iş akışında platforma özel Firebase yapılandırma dosyalarınızı edinin.

    • İOS'ta - İndir GoogleService-Info.plist'ni tıklayın.

    • Android için - tıklayın indirin google-services.json.

  2. Daha sonra içine yapılandırma dosyasını (lar) hareket ettir, Birlik projesinin Proje penceresini açın Assets klasöründe.

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

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

  1. Firebase konsolunda, uygun bir yere SDK unzip sonra, İndir Firebase Birlik SDK tıklayın.

    • Sen indirebilirsiniz Firebase Birlik SDK herhangi bir zamanda tekrar.

    • Firebase Unity SDK, platforma özel değildir.

  2. Aktif gezinme açık Birlik projesi,> İçe Paketi> Özel Paket içinde.

  3. Fermuarını açıp SDK itibaren seçmek desteklenen Firebase ürünleri uygulamanızda kullanmak istediğiniz.

    Firebase Cloud Messaging ile Optimum deneyim için, tavsiye Google Analytics sağlayan projenizde. Ayrıca, Analytics'i kurmanın bir parçası olarak, uygulamanıza Analytics için Firebase paketini eklemeniz gerekir.

    Analytics etkinleştirildi

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

    Analytics etkinleştirilmedi

    Firebase Cloud Messaging için paketi ekleyin: FirebaseMessaging.unitypackage

  4. İthalat Birlik Paketi penceresinde, Al'ı tıklatın.

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

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

Android için Firebase Birlik SDK gerektirir Google Play hizmetlerini kadar güncel olmalı SDK kullanılmadan önce.

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'sı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 kayıtlı ve Firebase'i kullanacak şekilde yapılandırıldı.

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

  1. Sonra Editör alanından Genel sekmesini seçin Xcode proje üzerinde tıklayın.

  2. Kaydırma Bağlantılı kafes ve Kütüphaneleri aşağı, daha sonra bir çerçeve eklemek için + düğmesini tıklayın.

  3. Göründüğünde, UserNotifications.framework gidin Bu pencerede, o girişi tıklayın, ardından Ekle tıklayın.

8. Adım: Anında iletme bildirimlerini etkinleştirin

  1. Sonra Editör alanından Yetenekleri sekmesini seçin Xcode proje üzerinde tıklayın.

  2. Açık olarak itin Bildirimler geçin.

  3. Kaydırma Arkaplan Modlarına aşağı, daha sonra Açık olarak geçin.

  4. Arkaplan Modları altında Uzaktan bildirimleri onay kutusunu işaretleyin.

Firebase Cloud Messaging'i Başlatın

Ya için işleyicileri eklerken Firebase Bulut Haber Kütüphanesi başlatılır TokenReceived veya MessageReceived olaylar.

Başlatma üzerine, istemci uygulama örneği için bir kayıt belirteci istenir. Uygulamanın ile belirteç alacak OnTokenReceived sonra kullanmak için önbelleğe edilmelidir olay. Mesajlar için bu belirli cihazı hedeflemek istiyorsanız bu jetona ihtiyacınız olacak.

Ayrıca, kayıt gerekecek OnMessageReceived gelen iletileri almak için muktedir istiyorsanız olayın.

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

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

Android'de, Firebase Bulut Mesajlaşma varsayılan değiştirir özel bir giriş noktası aktivite ile birlikte geliyor UnityPlayerActivity . Özel bir giriş noktası kullanmıyorsanız, bu değiştirme işlemi otomatik olarak gerçekleşir ve herhangi bir ek işlem yapmanız gerekmez. Varsayılan giriş noktası Aktivite veya bu kaynağı kullanmayan uygulamalar kendi Assets/Plugins/AndroidManifest.xml ekstra yapılandırma gerekir.

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

  • Assets/Plugins/Android/libmessaging_unity_player_activity.jar denilen bir etkinliği içeren MessagingUnityPlayerActivity standart yerini UnityPlayerActivity .
  • Assets/Plugins/Android/AndroidManifest.xml talimatını uygulamasını kullanmak MessagingUnityPlayerActivity uygulamasına giriş noktası olarak.

Varsayılan çünkü bu dosyalar sağlanmaktadır UnityPlayerActivity işlemez onStop , onRestart aktivite yaşam döngüsü geçişlerini veya uygulamak onNewIntent doğru gelen iletileri işlemek için Firebase Cloud Messaging için gereklidir.

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

Uygulama varsayılan kullanmıyorsa UnityPlayerActivity size verilen kaldırmak gerekir AndroidManifest.xml ve özel etkinlik düzgün tüm geçişler işlediğinden emin Android Etkinlik Yaşam Döngüsü (aşağıda gösterilmiştir Bunun nasıl bir örnek). Özel etkinlik uzanıyorsa UnityPlayerActivity yerine uzatabilirsiniz com.google.firebase.MessagingUnityPlayerActivity hangi uygular tüm gerekli yöntemleri.

Özel bir Aktivite kullanarak ve uzayan değilseniz com.google.firebase.MessagingUnityPlayerActivity , size Etkinlik aşağıdaki parçacıkları içermelidir.

/**
 * 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'sıyla (7.1.0 sonrası) kullanımı yeni versiyonları JobIntentService ek değişiklikler gerektirir AndroidManifest.xml dosyası.

<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 kullanıcı bir bildirime dokunduğunda, mesaj varsayılan olarak FCM'nin yerleşik geri aramaları aracılığıyla yönlendirilmez. Bu durumda, mesaj yükleri bir yoluyla alınan Intent uygulamasını başlatmak için kullanılan.

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

Özetle:

Uygulama durumu Bildirim Veri Her ikisi de
ö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: niyetin 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 onay almak istiyorsanız, FCM'yi (ve Android'de, Analytics'te) devre dışı bırakarak yapılandırma zamanında oluşturmayı önleyebilirsiniz. Bunu yapmak için, bir meta veri değeri eklemek Info.plist (değil GoogleService-Info.plist ) Apple veya AndroidManifest.xml Android'de:

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ı çağrısı yapabilirsiniz:

Firebase.Messaging.FirebaseMessaging.TokenRegistrationOnInitEnabled = true;

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

FCM, uygulamanıza derin bir bağlantı içeren mesajların gönderilmesine izin verir. Derin bağlantı içeren iletileri almak için uygulamanız için derin bağlantıları işleyen etkinliğe yeni bir amaç filtresi eklemelisiniz. Amaç filtresi, alanınızın derin bağlantılarını yakalamalıdır. Mesajlarınız 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>

Amaç 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 bir 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 için bkz hızlı başlangıç numunesi bu işlevselliği gösterir.

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

Bir gerekir unutmayın sunucu uygulaması bu özelliklerin yapmak kullanımına.