Unity ile platformlar arası Firebase Cloud Messaging istemci uygulamanızı yazmak için Firebase Cloud Messaging API'sini kullanın. 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 2018.4 veya sonraki sürümünü yükleyin. Daha önceki sürümler de uyumlu olabilir ancak aktif olarak desteklenmeyecektir. Unity 2018.4 desteğinin kullanımdan kaldırıldığı kabul edilir ve bir sonraki ana sürümden sonra artık aktif olarak desteklenmeyecektir.
(yalnızca iOS) 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 10 veya üstünü hedefler
Android için — API seviyesi 19 (KitKat) veya üzerini hedefler
Unity projenizi çalıştırmak için bir cihaz kurun veya bir öykünücü kullanın.
iOS 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 Anında Bildirim Kimlik Doğrulama Anahtarı edinin.
- XCode'da App > Capabilities altında Push Bildirimlerini etkinleştirin.
Android için - Emülatörler , Google Play ile bir emülatör resmi kullanmalıdır.
- Google hesabınızı kullanarak Firebase'de oturum açın.
Henüz bir Unity projeniz yoksa ve yalnızca bir Firebase ürününü denemek istiyorsanız, hızlı başlangıç örneklerimizden birini indirebilirsiniz.
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. 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 projenize bağlanmak için bir veya daha fazla uygulama veya oyun kaydedebilirsiniz.
Firebase konsoluna gidin.
Projeye genel bakış sayfasının ortasında, 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.
Unity projenizin hangi yapı hedefini kaydetmek istediğinizi seçin, hatta şimdi her iki hedefi de aynı anda kaydetmeyi seçebilirsiniz.
Unity projenizin platforma özel kimliklerini 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.
Unity IDE'nizde Unity projenizi açın, ardından her platform için ayarlar bölümüne gidin:
iOS için — Yapı Ayarları > iOS seçeneğine gidin.
Android için — Android > Oyuncu Ayarları > Diğer Ayarlar'a gidin.
Unity projenizin kimliği, Paket Tanımlayıcı değeridir (örnek ID:
com.yourcompany.yourproject
).(İ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 siz Firebase konsolunda görebilirsiniz.Uygulamayı kaydet'i tıklayın.
3. Adım: Firebase yapılandırma dosyalarını ekleyin
Firebase konsol kurulum iş akışında platforma özel Firebase yapılandırma dosyalarınızı edinin.
iOS için — GoogleService-Info.plist'i İndir'i tıklayın.
Android için — google-services.json'u İndir'i tıklayın.
Firebase yapılandırma dosyası, projeniz için benzersiz, ancak gizli olmayan tanımlayıcılar içerir. Bu yapılandırma dosyası hakkında daha fazla bilgi edinmek için Firebase Projelerini Anlayın sayfasını ziyaret edin.
Firebase yapılandırma dosyanızı istediğiniz zaman yeniden indirebilirsiniz.
Yapılandırma dosyası adının sonuna
(2)
gibi ek karakterler eklenmediğinden emin olun.
Unity projenizin Proje penceresini açın, ardından yapılandırma dosya(lar)ınızı
Assets
klasörüne taşıyı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'yı İndir'i tıklayın, ardından SDK'yı uygun bir yerde açın.
Firebase Unity SDK'sını istediğiniz zaman tekrar indirebilirsiniz.
Firebase Unity SDK, platforma özel değildir.
Açık Unity projenizde Assets > Import Package > Custom Package seçeneğine gidin.
Sıkıştırılmamış SDK'dan, uygulamanızda kullanmak istediğiniz desteklenen Firebase ürünlerini seçin.
Firebase Cloud Messaging ile optimum deneyim için projenizde Google Analytics'i etkinleştirmenizi öneririz. 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 paketini ekleyin:
FirebaseAnalytics.unitypackage
- Firebase Cloud Messaging paketini ekleyin:
FirebaseMessaging.unitypackage
Analytics etkinleştirilmedi
Firebase Cloud Messaging paketini ekleyin:
FirebaseMessaging.unitypackage
- Google Analytics için Firebase paketini ekleyin:
Unity Paketini İçe Aktar penceresinde, İçe Aktar öğesine 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ı, SDK'nın kullanılabilmesi için 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'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
Xcode'da projeye tıklayın, ardından Editör alanından Genel sekmesini seçin.
Bağlantılı Çerçeveler ve Kitaplıklar seçeneğine ilerleyin, ardından bir çerçeve eklemek için + düğmesini tıklayın.
Görünen pencerede UserNotifications.framework öğesine gidin, o girişi tıklayın ve ardından Ekle öğesini tıklayın.
8. Adım: Anında iletme bildirimlerini etkinleştirin
Xcode'da projeye tıklayın, ardından Düzenleyici alanından Yetenekler sekmesini seçin.
Push Bildirimlerini Açık olarak değiştirin.
Arka Plan Modları'na ilerleyin, ardından Açık olarak değiştirin.
Arka Plan Modları altında Uzak bildirimler onay kutusunu seçin.
Firebase Cloud Messaging'i Başlatın
Firebase Bulut Mesaj kitaplığı, TokenReceived
veya MessageReceived
olayları için işleyiciler eklenirken başlatılacaktır.
Başlatma üzerine, 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 jetona ihtiyacınız olacak.
Ayrıca, gelen mesajları alabilmek istiyorsanız OnMessageReceived
etkinliğine kaydolmanız gerekecektir.
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 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 işlemi otomatik olarak gerçekleşir ve herhangi bir ek işlem yapmanız gerekmez. Varsayılan giriş noktası Activity kullanmayan veya kendi Assets/Plugins/AndroidManifest.xml
sağlayan uygulamaların ekstra yapılandırmaya ihtiyacı olacaktır.
Android'deki Firebase Cloud Messaging Unity Plugin, iki ek dosyayla birlikte gelir:
-
Assets/Plugins/Android/libmessaging_unity_player_activity.jar
, standartUnityPlayerActivity
yerini alanMessagingUnityPlayerActivity
adlı bir etkinlik içerir. -
Assets/Plugins/Android/AndroidManifest.xml
, uygulamaya, uygulamaya giriş noktası olarakMessagingUnityPlayerActivity
kullanma talimatı verir.
Bu dosyalar, varsayılan UnityPlayerActivity
onStop
, onRestart
etkinlik yaşam döngüsü geçişlerini işlemediği veya Firebase Cloud Messaging'in gelen mesajları doğru şekilde işlemesi için gerekli olan onNewIntent
uygulamadığı için sağlanmıştır.
Özel bir giriş noktası Etkinliği yapılandırma
Uygulamanız varsayılan UnityPlayerActivity
, 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 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şletiyorsa, bunun yerine gerekli tüm yöntemleri uygulayan com.google.firebase.MessagingUnityPlayerActivity
genişletebilirsiniz.
Özel bir Aktivite kullanıyorsanız ve com.google.firebase.MessagingUnityPlayerActivity
genişletmiyorsanız, Aktivitenize aşağıdaki snippet'leri 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 (7.1.0 ve üzeri) yeni sürümleri, 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 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 | İkisi birden |
---|---|---|---|
ö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ı 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, 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ı çağrısı yapabilirsiniz:
Firebase.Messaging.FirebaseMessaging.TokenRegistrationOnInitEnabled = true;
Bu değer, ayarlandıktan sonra uygulama yeniden başlatmaları boyunca devam eder.
Android'de Derin Bağlantılarla İletileri İşleme
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 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 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.