firebase-messaging 25.1.x ile sunulan ve eski FCM kayıt token’ını bir Firebase Installation ID ile değiştiren bir Firebase özelliğidir.
firebase_messaging_installation_id_enabled adlı bir manifest ayarıyla kontrol edilir. Bu bir Firebase ayarıdır, OneSignal ayarı değildir. OneSignal, push için nasıl kaydolacağına karar vermek üzere bu ayarı okur, ancak onu tanımlamaz, değiştiremez ve yalnızca OneSignal’a uygulayamaz.
Etkinleştirmeli misiniz? \
FID kaydı isteğe bağlıdır ancak önerilir. Google, Firebase Installation ID’leri lehine FCM kayıt token’larını kullanımdan kaldırdı, bu nedenle her uygulamanın er ya da geç geçiş yapması gerekecek. Geçiş, mevcut kullanıcılarınızın abone kalmasını ve mesaj almaya devam etmesini sağlar; OneSignal da FCM Hizmet Hesabınız üzerinden göndermeye devam eder. Her cihaz, bir sonraki açılışında eski FCM kayıt token’ını yeni push token değeriyle (FID) değiştirir.Açmadan önce \
FID kaydını etkinleştirmeden önce şunları gözden geçirin:- Eski cihazlar. FID kaydı Google Play hizmetleri
261200000veya sonrasını gerektirir. Zaten abone olan cihazlar mevcut push token’larını korur. Eski Android cihazlardaki veya Google Play hizmetleri güncellemeleri almayan cihazlardaki yeni kurulumlar, Google Play hizmetleri güncellenene kadar push alamaz. Bunlar notification_type durumu-34gösterir. - Diğer push SDK’ları. Ayar tüm uygulamanıza uygulanır ve her SDK için
getToken()iledeleteToken()’ı devre dışı bırakır. Bu çoğunlukla push bildirimleri gönderen diğer SDK’ları etkiler. Her birinin Firebase Installation ID’leri desteklediğini kontrol edin. - Push token biçimi.
OneSignal.User.pushSubscription.tokenveIPushSubscriptionObserver, FCM kayıt token’ı yerine bir Firebase Installation ID döndürür. Özellik türü değişmediğinden derleme zamanında hiçbir şey başarısız olmaz. Bu değeri FCM token’ı olarak saklayan, doğrulayan veya gönderen kodlar hata vermeden bozulur. - Özel Firebase entegrasyonları. Uygulamanızın kendi
FirebaseMessagingService’i varsa Firebase,onNewToken()yerineonRegistered()’ı çağırır. Token işlemenizionRegistered()’a taşıyın. UygulamanızdeleteToken()’ı çağırıyorsa (örneğin oturum kapatırken)unregister()’a geçin. OneSignal bu geri çağrıların hiçbirine ihtiyaç duymaz. Firebase’in Firebase Installation ID ile kayıt kılavuzuna ve OneSignal ile birlikte çalıştırmak için Firebase Messaging SDK çakışması bölümüne bakın. - Derleme gereksinimleri. Uygulamanız
firebase-messaging25.1.2 veya sonrasını bildirmeli veminSdk23 veya üzerini kullanmalıdır.firebase-messaging26.x’te uygulamanızınminSdk24 veya üzeri ve Kotlin 2.0.0 veya sonrası gerekir. Gereksinimler bölümüne bakın. - Geri almak yeni bir sürüm gerektirir. Ayar, uygulama derlemenizin bir parçasıdır. Açmak veya kapatmak yeni bir uygulama derlemesi ve mağaza sürümü gerektirir. Sunucu tarafında bir anahtar yoktur.
Uygulamanızda etkin mi? \
Yalnızca kendiAndroidManifest.xml dosyanızı değil, birleştirilmiş manifesti kontrol edin. Bir bağımlılık bu ayarı kaynağınızda görünmeden ekleyebilir.
1
Birleştirilmiş manifesti derleyin
2
Birleştirilmiş çıktıda arayın
android:value değerini okuyun. FID kaydı yalnızca bu değer boolean true olduğunda etkindir.meta-data girdisi yoksa veya birleştirilmiş değer false ise eski token yolundasınız demektir. Bir bağımlılık değeri true olarak ayarladığında değeri false olmaya zorlamak için FID kaydını devre dışı bırakma bölümüne bakın.FirebaseApp bulunup bulunmadığını ve register()’ın kullanılabilir olup olmadığını içerir. Başarılı bir kayıt bu üçünü günlüğe kaydetmez, bu nedenle ayrıntılı günlük kaydı sağlıklı bir cihazda bunları göstermez. Ayarı doğrulamak için birleştirilmiş manifesti kullanın.
Bu ayarı etkinleştirdiği bilinen SDK’lar. Braze Android SDK 43.0.0 ve sonrası, manifest birleştirme yoluyla
firebase_messaging_installation_id_enabled="true" ekler. Uygulamanız Braze 43+ içeriyorsa, ayarı kendiniz ekleyip eklemediğinizden bağımsız olarak FID kaydı etkindir.FID kaydını etkinleştirme \
FID kaydını etkinleştirmek için uygulamanıza kendi Firebase yapılandırmasını verin,firebase-messaging 25.1.2 veya sonrasını zorunlu kılın ve manifest ayarını açın. Ardından cihazların bir Firebase Installation ID ile kaydolduğunu doğrulayın.
Gereksinimler \
FID kaydı aşağıdakilerin tümünü gerektirir. Herhangi biri eksikse kayıt, Sorun giderme bölümündeki durumlardan biriyle başarısız olur.- OneSignal Android SDK
5.11.0veya sonrası ya da bunu içeren bir sarmalayıcı SDK sürümü. Minimum OneSignal SDK sürümleri bölümüne bakın - Uygulamanız tarafından bildirilen
com.google.firebase:firebase-messaging25.1.2veya sonrası. Daha eski 25.1.x sürümlerinde, yedek geri yüklendikten sonra veya uygulama verileri klonlandığında oluşan hatalar dahil kayıt hataları vardır - Android API 23+ (
firebase-messaging25.0.0 minimumu 21’den 23’e yükseltti).firebase-messaging26.x’te API 24+ ve Kotlin 2.0.0 veya sonrası. firebase-messaging 26.x kullanma bölümüne bakın - Cihazda Google Play hizmetleri sürüm
261200000veya sonrası - Kendi Firebase projeniz için varsayılan bir
FirebaseApp. Adım 1: google-services.json dosyasını uygulamanıza ekleyin bölümüne bakın - Eşleşen Firebase projeleri.
google-services.jsondosyanızdaki proje, OneSignal’a yüklenen FCM Hizmet Hesabıyla aynı proje olmalıdır. Firebase projelerinizi eşleştirin bölümüne bakın
Minimum OneSignal SDK sürümleri \
FID kaydı desteği OneSignal Android SDK5.11.0 ile geldi. Aşağıdaki her sarmalayıcı SDK, bunu içeren ilk sürümdür. Daha eski sürümler yalnızca eski token yolunu kullanır; bu nedenle ayar açıkken bu sürümlerde push kaydı başarısız olur.
Adım 1: google-services.json dosyasını uygulamanıza ekleyin \
FID kaydı, Firebase proje ayrıntılarınıza istemci tarafında ihtiyaç duyar.google-services.json dosyasını, OneSignal’a yüklenen FCM Hizmet Hesabıyla aynı Firebase projesinden indirin. Projeler eşleşmezse kayıt -6 ile başarısız olur. Dosyayı uygulamanıza ekleyin ve Google Services Gradle eklentisini uygulayın. Dosyanın konumu uygulamanıza bağlıdır. Adımlar için Firebase yapılandırma dosyanızı ekleme bölümüne bakın. Bu dosya zaten sizde olabilir.
Adım 2: firebase-messaging 25.1.2 veya sonrasını bildirin \
OneSignal, eski FCM kayıt token’ları içinFirebaseMessaging.getToken() kullanan firebase-messaging 24.x’e karşı derlenir.
FID kaydı, firebase-messaging 25.1.2 veya sonrasını gerektiren FirebaseMessaging.register()’ı kullanır.
firebase-messaging’i yükseltmek için uygulama modülünüzün Gradle dosyasına şunu ekleyin:
firebase-messaging 26.x kullanma \
[25.1.2, 25.99.99] aralığı uygulamanızı ek gereksinimi olmayan 25.x’te tutar. Uygulamanız veya başka bir bağımlılık firebase-messaging 26.x getirirse Gradle 26.x’e çözümler ve uygulamanız ayrıca şunlara ihtiyaç duyar:
minSdk24 veya üzeri- Kotlin 2.0.0 veya sonrası
Adım 3: Firebase manifest ayarını ekleyin \
AndroidManifest.xml dosyanızın <application> etiketinin içine şunu ekleyin:
AndroidManifest.xml
onesignal-expo-plugin yapılandırmasında (sürüm 2.8.0 veya sonrası) enableFirebaseInstallationId: true ayarlayın, ardından expo prebuild çalıştırın.
Adım 4: FID kaydını doğrulayın \
Bir cihazda derleyip çalıştırın, ardından günlükte veya Dashboard > Audience > Subscriptions içinde Push Token’ı kontrol edin.OneSignal Subscription’ınız Subscribed olmalı ve push token’ı,
dN8Ya5MTR2OO-0BXdqimCI:APA91bFw... gibi iki nokta içeren daha uzun bir eski FCM token’ı değil, cXp9fY-TRFCLSy9kVTqorZ gibi kısa bir Firebase Installation ID olmalıdır. Durum negatifse Sorun giderme bölümüne bakın.FID kaydını devre dışı bırakma \
Hangi yaklaşıma ihtiyacınız olduğu, ayarın nereden geldiğine bağlıdır.- Siz eklediyseniz
- Bir bağımlılık eklediyse
<meta-data> öğesini AndroidManifest.xml dosyanızdan kaldırın, ardından yeniden derleyin.Sorun giderme \
Subscription’ı Dashboard > Audience > Subscriptions içinde bulun ve durumunu kontrol edin. Aşağıdaki her durumun tek bir nedeni ve tek bir çözümü vardır. Yapılandırmayı düzeltip yeni bir derleme yayınladıktan sonra aynı Subscription sonraki bir oturumda düzelir. Yeniden kurulum gerekmez ve yeni bir Subscription oluşturulmaz.-32: Varsayılan Firebase uygulaması yok \
FID kaydı, uygulamanızın kendi varsayılanFirebaseApp’ini gerektirir. OneSignal’ın paylaşılan Firebase projesi bir installation ID üretemez.
En yaygın nedenler, sırasıyla:
google-services.jsoneksik. Firebase konsolunuzdan Project settings > Your apps altından indirin ve uygulamanıza ekleyin. Yerel Android uygulamalarıapp/dizinini kullanır. Diğer platformlar farklı yollar kullanır. Firebase yapılandırma dosyanızı ekleme bölümüne bakın.- Google Services Gradle eklentisi uygulanmamış. Dosya tek başına hiçbir şey yapmaz. Eklenti, dosyayı Firebase’in çalışma zamanında okuduğu kaynaklara dönüştürür. Firebase yapılandırma dosyanızı ekleme bölümüne bakın.
- Eklenti yanlış Gradle dosyasında uygulanmış.
apply, proje düzeyindeki dosyada değil, uygulama modülünüzünbuild.gradledosyasında olmalıdır. - Programatik başlatma çok geç çalıştı veya hiç çalışmadı. Varsayılan uygulamayı kendiniz başlatıyorsanız (örneğin Firebase’i kullanıcı onayına bağladığınız için), OneSignal başlatılmadan önce tamamlanmalıdır. google-services.json olmadan Firebase’i kurma bölümüne bakın.
-33: register API’si kullanılamıyor \
FirebaseMessaging.register() API’si, uygulamanızın çözümlediği firebase-messaging sürümünde mevcut değildir veya sürüm derlemenizden kaldırılmıştır.
-
firebase-messaging25.1.2 veya sonrasını bildirin.register()ilk kez 25.1.0’da ortaya çıktı ve OneSignal 24.x’e karşı derlenir, bu nedenle daha yeni kütüphaneyi uygulamanızın getirmesi gerekir. 25.1.0 veya 25.1.1 yerine 25.1.2 veya sonrasını kullanın. Gereksinimler bölümüne bakın. -
Çözümlenen sürümünüzü kontrol edin. Başka bir bağımlılık daha eski bir sürümü sabitliyor olabilir:
- Bu yalnızca sürüm derlemelerinde oluyorsa, R8 yöntemi kaldırmış veya yeniden adlandırmıştır. OneSignal’ın tüketici ProGuard kurallarının uygulandığını ve bunları devre dışı bırakmadığınızı doğrulayın.
-34: FID kaydı başarısız oldu \
Bu durum yeniden denenebilir. SDK sonraki bir oturumda tekrar dener.- Google Play hizmetleri güncel değil. FID kaydı
261200000veya sonraki bir sürüm gerektirir. Bu sürümün altında Firebase, installation ID’yi kaydetmek yerine eski bir token ister ve bu token uygulamanız için hiçbir zaman kullanılabilir olmaz. SDK, push alamayan bir Subscription bildirmek yerine başarısız olur. Cihazdaki Google Play hizmetlerini Play Store üzerinden güncelleyin. - Geçici bir Firebase hatası. Herhangi bir işlem gerekmez. Kayıt, sonraki bir uygulama açılışında düzelir.
-6: Sender ID uyuşmazlığı \
Kontrol panelindeInvalid Google Project Number olarak gösterilir. Uygulamanızın Firebase projesi ile OneSignal’a yüklenen FCM Hizmet Hesabı aynı proje değildir.
Proje uyuşmazlığı yalnızca FID kaydı açıkken bu duruma neden olur. Eski token yolunda aynı uyuşmazlık başarısız olmaz ve SDK bunun yerine OneSignal’ın paylaşılan Firebase projesi üzerinden kaydolur. Bu nedenle push daha önce çalışıyor olsa bile -6, FID kaydını etkinleştirdikten hemen sonra görünebilir.
İki projeyi Firebase projelerinizi eşleştirin ile karşılaştırın. Değerler farklıysa, doğru Firebase projesinin Hizmet Hesabını yükleyin veya Hizmet Hesabını yüklediğiniz projenin google-services.json dosyasını uygulamanızla birlikte gönderin.
SSS
FID kullanmasam bile google-services.json gerekli mi? \
Push bugün bu dosya olmadan çalışır, ancak eklemeniz gerekir. Dosyayı eklemek manifest ayarını açmaz. google-services.json’u atlarsam ne olur? bölümüne bakın.
Mevcut Subscription’larım kaybolacak mı? \
Hayır. Cihazlar bir sonraki uygulama açılışında yeniden kaydolur ve yeni bir push token değeriyle aynı Subscription’ı korur. Bu, etkinleştirme ve devre dışı bırakma olmak üzere her iki yönde de geçerlidir. İstisna, bir düzeltme yayınlayana kadar mevcut Subscription’ları geçersiz olarak işaretleyen Firebase proje uyuşmazlığıdır.-6 bölümüne bakın.
FID kaydını yalnızca OneSignal için etkinleştirebilir miyim? \
Hayır. Ayar tüm işleme uygulanır ve her SDK içingetToken()’ı devre dışı bırakır. Installation ID ile kayıt yalnızca varsayılan FirebaseApp’inizi kullanabilir. OneSignal’ın paylaşılan uygulaması bu ID’yi üretemez.
Push token’ımın biçimi neden değişti? \
Uygulamanız artık bir Firebase Installation ID ile kaydoluyor. Installation ID’ler kısadır ve iki nokta içermez, örneğincXp9fY-TRFCLSy9kVTqorZ. Eski FCM token’ları daha uzundur ve iki nokta içerir, örneğin dN8Ya5MTR2OO-0BXdqimCI:APA91bFw....
İlgili sayfalar
Android Firebase kimlik bilgileri
FCM Hizmet Hesabı özel anahtarınızı yükleyin ve uygulamanıza
google-services.json ekleyin.Android SDK kurulumu
OneSignal Android SDK’sını yükleyin ve başlatın.
Subscriptions
-6 ve FID durumları -32 ile -34 dahil Subscription durumlarına bakın.Hata ayıklama günlüğü yakalama
Kayıt hatalarını görmek için ayrıntılı SDK günlüklerini toplayın.