Google is committed to advancing racial equity for Black communities. See how.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Unity ile bir Firebase Cloud Messaging istemci uygulaması kurun

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

Sen başlamadan önce

Önkoşullar

  • Unity 5.3 veya üzerini yükleyin.

  • (yalnızca iOS) Aşağıdakileri yükleyin:

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

    • İOS için - iOS 8 veya sonraki bir sürümü hedefler
    • Android için - API seviyesi 16 (Jelly Bean) veya üzerini hedefler
  • Unity projenizi çalıştırmak için bir cihaz kurun veya bir emülatör kullanın.

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

      • Apple Geliştirici hesabınız için bir Apple Push Bildirimi Kimlik Doğrulama Anahtarı edinin.
      • XCode'da Uygulama > Yetenekler altında Push Bildirimleri etkinleştirin.
    • Android için - Emülatörler Google Play ile bir emülatör görüntüsü kullanmalıdır.

  • Google hesabınızı kullanarak Firebase'de oturum açın.

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

1. Adım: Firebase projesi oluşturun

Unity projenize Firebase eklemeden önce, Unity projenize bağlanmak için bir Firebase projesi oluşturmanız gerekir. Firebase projeleri hakkında daha fazla bilgi edinmek için Firebase Projelerini Anlama bölümünü ziyaret edin.

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

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

  1. Firebase konsoluna gidin .

  2. Projeye genel bakış sayfasının , kurulum iş akışını başlatmak için 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 derleme hedefini kaydetmek istediğinizi seçin veya hatta şimdi aynı anda her iki hedefi de kaydetmeyi seçebilirsiniz.

  4. Unity projenizin platforma özgü kimliklerini girin.

    • İOS 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 özel takma adlarını girin.
    Bu takma adlar dahili, kullanışlı tanımlayıcılardır ve yalnızca Firebase konsolunda 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 özel Firebase yapılandırma dosyalarınızı edinin.

    • İOS için - GoogleService-Info.plist'i İndir'i tıklayın.

    • Android için - google-services.json indir'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. Geri Firebase konsolunda, kurulum iş akışında, İleri'yi tıklayın.

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

  1. Firebase konsolunda, Firebase Unity SDK'yı İndir'i tıklayın, ardından SDK'yı uygun bir yerde açın.

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

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

  2. Açık Unity projenizde, Varlıklar > Paketi İçe Aktar > Özel Paket'e gidin .

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

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

    Analytics etkinleştirildi

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

    Analytics etkinleştirilmedi

    Firebase Cloud Messaging paketini 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 Unity SDK'sı, SDK'nın kullanılabilmesi için güncel olması gereken Google Play hizmetlerini gerektirir.

Uygulamanızın başlangıcına aşağıdaki kodu ekleyin. SDK'daki diğer yöntemleri çağırmadan önce Google Play hizmetlerini Firebase Unity SDK'nın gerektirdiği sürüme kontrol edebilir ve isteğe bağlı olarak 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ı.

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

  1. Xcode'da projeye tıklayın, ardından Editör alanından Genel sekmesini seçin.

  2. Bağlantılı Çerçeveler ve Kitaplıklar'a gidin , ardından bir çerçeve eklemek için + düğmesine 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: Push bildirimlerini etkinleştirin

  1. Xcode'da projeye tıklayın, ardından Editör alanından Yetenekler sekmesini seçin.

  2. Push Bildirimleri ayarını Açık olarak değiştirin .

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

  4. Arka Plan Modları altındaki Uzaktan bildirimler onay kutusunu seçin.

Firebase Cloud Messaging'i başlatın

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

Başlatma sonrasında, istemci uygulama örneği için bir kayıt belirteci istenir. Uygulama, daha sonra kullanım için önbelleğe alınması gereken OnTokenReceived olayıyla birlikte belirteci alır. Mesajlar için bu belirli cihazı hedeflemek istiyorsanız bu jetona ihtiyacınız olacak.

Ayrıca, gelen mesajları alabilmek istiyorsanız, OnMessageReceived olayına kaydolmanız gerekecektir.

Tüm kurulum şuna benzer:

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 Cloud Messaging, varsayılan UnityPlayerActivity yerini alan özel bir giriş noktası etkinliği ile 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 giriş noktası Activity'i kullanmayan veya kendi Assets/Plugins/AndroidManifest.xml ekstra konfigürasyona ihtiyacı olacaktır.

Android'deki Firebase Cloud Messaging Unity Eklentisi 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, uygulamanın giriş noktası olarak MessagingUnityPlayerActivity kullanması talimatını verir.

Bu dosyalar, varsayılan UnityPlayerActivity onStop , onRestart etkinlik yaşam döngüsü geçişlerini onNewIntent veya onNewIntent Cloud Messaging'in gelen mesajları doğru şekilde işlemesi için gerekli olan onNewIntent uygulamadığı için onNewIntent .

Özel bir giriş noktası aktivitesi yapılandırma

Uygulamanız varsayılan UnityPlayerActivity , sağlanan AndroidManifest.xml UnityPlayerActivity kaldırmanız ve özel etkinliğinizin Android Etkinlik Yaşam UnityPlayerActivity tüm geçişlerini düzgün bir şekilde işlemesini sağlamanız gerekir (bunun nasıl yapılacağına ilişkin bir örnek aşağıda gösterilmiştir). Özel etkinliğiniz UnityPlayerActivity genişletirse, bunun yerine gerekli tüm yöntemleri uygulayan com.google.firebase.MessagingUnityPlayerActivity genişletebilirsiniz.

Özel bir Etkinlik kullanıyorsanız ve com.google.firebase.MessagingUnityPlayerActivity genişletmiyorsanız, aşağıdaki parçacıkları Etkinliğinize 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());
  startService(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);
}

Android'de mesaj teslimi hakkında not

Uygulama hiç çalışmadığında 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, mesaj yükleri, uygulamayı başlatmak için kullanılan bir Intent aracılığıyla alınır.

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. Yani, 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 fon Sistem tepsisi Firebase.Messaging.FirebaseMessaging.MessageReceived Bildirim: sistem tepsisi
Veri: niyetin ekstralarında.

Otomatik başlatmayı önle

FCM, FCM içinde kayıt jetonu olarak kullanılan bir Eşgörünüm Kimliği oluşturur. Bir Örnek Kimliği oluşturulduğunda kitaplık, tanımlayıcı ve yapılandırma verilerini Firebase'e yükler.Örnek Kimliği kullanmadan önce açık bir katılım sağlamak istiyorsanız, FCM'yi (ve Android, Analytics'te) devre dışı bırakarak yapılandırma sırasında oluşturulmasını önleyebilirsiniz. . Bunu yapmak için, GoogleService-Info.plist Info.plist ( GoogleService-Info.plist ) 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>

iOS

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şlatıldığında devam eder.

FCM, mesajların uygulamanıza derin bağlantı içeren 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. 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>

Ayrıca, 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, belirlediğiniz düzen ve barındırıcıya bağlantı içeren bir bildirime dokunduklarında, 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.