Platformlar arası Firebase Cloud Messaging istemci uygulamanızı Unity ile yazmak için Firebase Cloud Messaging API. Unity SDK hem Android hem de Apple'da çalışır ancak bazı ek kurulumlar gerekir her platform için geçerli.
Başlamadan önce
Ön koşullar
Unity 2021 LTS veya sonraki sürümleri yükleyin. Unity 2020 desteği dikkate alınır desteği sonlandırılmıştır ve sonraki önemli aşamalardan sonra kullanabilirsiniz. Önceki sürümler de uyumlu olabilir ancak etkin bir şekilde çalışmayacaktır desteklenir.
(Yalnızca Apple platformları) Aşağıdakileri yükleyin:
- Xcode 13.3.1 veya sonraki sürümler
- CocoaPods 1.12.0 veya sonraki sürümler
Unity projenizin şu koşulları karşıladığından emin olun:
- iOS için — iOS 13 veya sonraki sürümleri hedefler
- tvOS için: tvOS 13 veya sonraki sürümleri hedefler
- Android için — API düzeyi 19'u hedefler (KitKat) veya sonraki sürümler
Unity projenizi çalıştırmak için cihaz kurun veya emülatör kullanın.
iOS veya tvOS için: Aşağıdakilerin çalıştırılacağı fiziksel bir cihaz kurun: uygulamasına gidip şu görevleri tamamlayın:
- için bir Apple Anında Bildirim Kimlik Doğrulama Anahtarı edinin Apple Geliştirici hesabı
- Uygulama > altındaki XCode'da Push Bildirimleri'ni etkinleştirin Özellikler.
Android için — Emülatörler, emülatör resmi kullanabilirsiniz.
- Google Hesabınızla Firebase'de oturum açın hesap.
Henüz Unity projeniz yoksa ve bir Firebase'i denemek istiyorsanız hızlı başlangıç örneklerimizden birini indirebilirsiniz.
1. Adım: Firebase projesi oluşturun
Firebase'i Unity projenize eklemeden önce bir Firebase oluşturmanız gerekir Unity projenize bağlanacak. Firebase'i Anlama sayfasını ziyaret edin Projeler'e göz atın.
2. adım: Uygulamanızı Firebase'e kaydedin
Firebase'inize bağlanmak için bir veya daha fazla uygulama ya da oyun kaydedebilirsiniz belirler.
Firebase konsoluna gidin.
Projeye genel bakış sayfasının ortasındaki Unity simgesini tıklayın (
) kurulum iş akışını başlatın.Firebase projenize daha önce uygulama eklediyseniz Uygulama ekle'yi tıklayın tıklayın.
Kaydetmek istediğiniz Unity projenizin derleme hedefini seçin. ya da her iki hedefi aynı anda kaydetmeyi seçebilirsiniz.
Unity projenizin platforma özgü kimliklerini girin.
iOS için: Unity projenizin iOS kimliğini iOS paketi Kimlik girin.
Android için: Unity projenizin Android kimliğini Android paketi name alanında oturum açın.
. Paket adı ve uygulama kimliği terimleri genellikle kullanabilirsiniz.
(İsteğe bağlı) Unity projenizin platforma özgü takma adlarını girin.
. Bu takma adlar dahili, kolaylık tanımlayıcılarıdır ve yalnızca Firebase konsolunda görebilirsiniz.Uygulamayı kaydet'i tıklayın.
3. Adım: Firebase yapılandırma dosyalarını ekleyin
Platforma özel Firebase yapılandırma dosyalarınızı Firebase konsol kurulumu iş akışı.
iOS için: GoogleService-Info.plist dosyasını indir'i tıklayın.
Android için: google-services.json'u indir'i tıklayın.
Unity projenizin Proje penceresini açıp yapılandırmanızı taşıyın dosyayı
Assets
klasörüne kopyalayın.Firebase konsolunda, kurulum iş akışında İleri'yi tıklayın.
4. adım: Firebase Unity SDK'larını ekleyin
Firebase konsolunda Firebase Unity SDK'sını indir'i tıklayın, ardından sıkıştırılmış dosyayı açın SDK'yı uygun bir yere koyabilirsiniz.
Firebase Unity SDK'sını istediğiniz zaman tekrar indirebilirsiniz.
Firebase Unity SDK'sı platforma özel değildir.
Açık Unity projenizde şuraya gidin: Öğeler > Paketi İçe Aktar > Özel Paket.
Sıkıştırılmamış SDK'dan desteklenen Firebase'i seçin. ürün testlerini en iyi şekilde yararlanabilirsiniz.
En iyi Firebase Cloud Messaging deneyimi için şunları öneririz: Google Analytics özelliğini etkinleştirme bilmek kadar harika bir his yok. Ayrıca, Analytics kurulumunun bir parçası olarak Analytics için Firebase paketini uygulamanıza ekleyin.
Analytics etkin
- Google Analytics için Firebase paketini ekleyin:
FirebaseAnalytics.unitypackage
- Firebase Cloud Messaging için paketi ekleyin:
FirebaseMessaging.unitypackage
Analytics etkinleştirilmedi
Firebase Cloud Messaging için paketi ekleyin:
FirebaseMessaging.unitypackage
- Google Analytics için Firebase paketini ekleyin:
Unity Paketini İçe Aktar penceresinde İçe Aktar'ı tıklayın.
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ı şunları gerektirir: Google Play services. Bunun için kullanılabilmesi için uygulamanın güncel tutulması gerekir.
Aşağıdaki using
ifadesini ve başlatma kodunu
bir uygulamadır. Google Play services öğesini
başka bir çağrı yapmadan önce Firebase Unity SDK'sı için gereken sürüm
yöntemlerine göz atacağız.
using Firebase.Extensions;
Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWithOnMainThread(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 Firebase'i kullanacak şekilde kaydedildi ve yapılandırıldı.
Apple desteği için APNs kimlik doğrulama anahtarınızı yükleyin
APNs kimlik doğrulama anahtarınızı Firebase'e yükleyin. Halihazırda bir APNs kimlik doğrulama anahtarınız yoksa Apple Geliştirici Üye Merkezi.
-
Firebase konsolunda projenizin içinde, açılır menüden dişli simgesi, seçin Proje Ayarları'nı tıklayın ve ardından Cloud Messaging sekmesi.
-
iOS uygulaması yapılandırması bölümündeki APN kimlik doğrulama anahtarı'nda, Yükle'yi tıklayın. düğmesini tıklayın.
-
Anahtarınızı kaydettiğiniz konuma gidin, anahtarı seçin ve Aç. Anahtarın anahtar kimliğini ekleyin ( Apple Developer Member Center) oturum açın Yükle.
Apple platformlarında push bildirimlerini etkinleştirme
1. adım: Kullanıcı bildirimleri çerçevesini ekleyin
Xcode'da projeyi tıklayın, ardından menüden General (Genel) sekmesini seçin. Düzenleyici alanı.
Bağlı Çerçeveler ve Kitaplıklar'a gidin ve + simgesini tıklayın düğmesini tıklayın.
Görüntülenen pencerede UserBildirimler.framework'e gidin, ilgili girişi seçip Ekle'yi tıklayın.
2. Adım: Push bildirimlerini etkinleştirin
Xcode'da projeyi tıklayın, ardından menüden Capabilities (Özellikler) sekmesini seçin. Düzenleyici alanı.
Push Bildirimleri'ni Açık olarak ayarlayın.
Arka Plan Modları'na gidin ve ardından ayarı Açık hale getirin.
Arka Plan Modları'nın altındaki Uzaktan bildirimler onay kutusunu seçin.
Başlat: Firebase Cloud Messaging
İşleyici eklenirken Firebase Cloud Mesaj kitaplığı başlatılır
TokenReceived
veya MessageReceived
etkinlikleri için.
Başlatıldıktan sonra istemci uygulaması için bir kayıt jetonu istenir
kullanır. Uygulama, OnTokenReceived
etkinliği içeren jetonu alır.
Bu veriler daha sonra kullanılmak üzere önbelleğe alınır. Buna ihtiyacınız olacak
jetonunuzu kullanın.
Ayrıca, aşağıdaki durumlarda OnMessageReceived
etkinliğine kaydolmanız gerekir:
gelen mesajları alabilmeniz gerekir.
Tüm ayarlar aşağıdaki gibi 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
Firebase Cloud Messaging, Android'de özel bir giriş noktasıyla birlikte gelir.
varsayılan UnityPlayerActivity
öğesinin yerini alan etkinlik. Şunu kullanmıyorsanız:
bu değişimin otomatik olarak gerçekleşeceği özel bir giriş noktasıdır.
herhangi bir ek işlem yapması gerekmiyor. Varsayılan giriş noktasını kullanmayan uygulamalar
Kendi Assets/Plugins/AndroidManifest.xml
öğesini sağlayan veya etkinlikler
ekstra yapılandırma.
Android'deki Firebase Cloud Messaging Unity Eklentisi iki paketle birlikte gelir ek dosyalar:
Assets/Plugins/Android/libmessaging_unity_player_activity.jar
, birMessagingUnityPlayerActivity
adlı standardın yerini alan etkinlikUnityPlayerActivity
.Assets/Plugins/Android/AndroidManifest.xml
, uygulamayaMessagingUnityPlayerActivity
, uygulamanın giriş noktası olarak kullanılacak.
Bu dosyalar, varsayılan UnityPlayerActivity
özelliği
onStop
, onRestart
etkinlik yaşam döngüsü geçişlerini ele alabilir veya
Firebase Cloud Messaging için gerekli olan onNewIntent
gelen mesajları işleme alabilir.
Özel giriş noktası etkinliğini yapılandırma
Uygulamanız varsayılan UnityPlayerActivity
ayarını kullanmıyorsa
sağlanan AndroidManifest.xml
öğesini kaldırın ve özel etkinliğinizin
tüm geçişlerini düzgün şekilde
Android Etkinlik Yaşam Döngüsü
(Bunun nasıl yapılacağına ilişkin bir örnek aşağıda verilmiştir). Özel
etkinlik UnityPlayerActivity
uzatılır, bunun yerine uzatabilirsiniz
Şunları uygulayan com.google.firebase.MessagingUnityPlayerActivity
:
emin olmanız gerekir.
Özel bir Etkinlik kullanıyorsanız ve
com.google.firebase.MessagingUnityPlayerActivity
,
aşağıdaki snippet'leri etkinleştirmeniz gerekir.
/** * 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ının yeni sürümleri (7.1.0 sonrası) için JobIntentService
kullanımı gerekir.
AndroidManifest.xml
dosyasında ek değişiklikler var.
<service android:name="com.google.firebase.messaging.MessageForwardingService" android:permission="android.permission.BIND_JOB_SERVICE" android:exported="false" > </service>
Android'de ileti teslimi hakkında not
Uygulama hiç çalışmıyorken kullanıcı bir bildirime dokunduğunda
ileti, varsayılan olarak FCM ürününün yerleşik ileti dizisi üzerinden yönlendirilmez
daha fazla bilgi edindiniz. Bu durumda, mesaj yükleri bir Intent
üzerinden alınır
ve uygulamayı başlatmak için kullanılır.
Uygulama arka plandayken alınan mesajlarda şu içerikler bulunur:
kullanıcının bildirim alanı, sistem tepsisi bildirimini doldurmak için kullanılır, ancak
söz konusu bildirim içeriğinin FCM adlı kullanıcıya iletilmeyecektir. Yani,
FirebaseMessage.Notification
, null olacaktır.
Özet olarak:
Uygulama durumu | Bildirim | Veriler | İkisi 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: Amacın ekstralarında. |
Otomatik başlatmayı engelle
FCM, cihaz hedefleme için bir kayıt jetonu oluşturur.
Bir jeton oluşturulduğunda kitaplık,
Firebase'e aktarmanızı sağlar. Uygunsuz arama sonuçları görmek istiyorsanız
etkinleştirmeyi unutmayın. Jetonu kullanmadan önce
FCM'nin (ve Android'de, Analytics'te) devre dışı bırakılması. Bunu yapmak için
Apple'daki Info.plist
(GoogleService-Info.plist
değil) veya
Android'de 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>
Swift
FirebaseMessagingAutoInitEnabled = NO
FCM'yi yeniden etkinleştirmek için çalışma zamanı araması yapabilirsiniz:
Firebase.Messaging.FirebaseMessaging.TokenRegistrationOnInitEnabled = true;
Bu değer, ayarlandıktan sonra uygulamanın yeniden başlatılmasında da aynı kalır.
Android'de Derin Bağlantı İçeren Mesajları Ele Alma
FCM, uygulamanıza derin bağlantı içeren mesajların gönderilmesine olanak tanır. Derin bağlantı içeren mesajları almak için yeni bir intent filtresi eklemeniz gerekir Ayrıca, uygulamanızın derin bağlantılarını işleyen etkinliğe dair Amaç filtresi Alanınızın derin bağlantılarını yakalayabilir. Mesajlarınız derin bağlantı içermiyorsa bu yapılandırma gerekli değildir. AndroidManifest.xml dosyasında:
<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 geniş kapsamlı hâle getirmek için joker karakter belirtmek de mümkündür. daha esnek hale getirebilirsiniz. Ö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 şemanın bağlantısını içeren ve sizi barındıran bir bildirime dokunduğunda belirtirseniz, uygulamanız bağlantısını tıklayın.
Sonraki adımlar
İstemci uygulamasını kurduktan sonra aşağı akış ve Firebase ile mesajları. Daha fazla bilgi edinmek için hızlı başlangıç örneği Bu işlevsellik gösteriliyor.
Uygulamanıza başka, daha gelişmiş davranışlar eklemek için uygulama sunucusundan gelen mesajlar:
Proje hedeflerinizin yararlanmak için sunucu uygulamasını özellikleri.