Ana içeriğe atla
Firebase Installation ID (FID) kaydı, 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.
firebase_messaging_installation_id_enabled uygulamanızın tamamına uygulanır. true olduğunda Firebase, işleminizdeki her SDK için getToken()’ı devre dışı bırakır: OneSignal, diğer tüm üçüncü taraf SDK’lar ve kendi Firebase kodunuz.Android, bağımlılıklarınızın manifestlerini birleştirdiği için başka bir SDK bu ayarı sizin için etkinleştirebilir. Bu yolu seçmemiş olsanız bile bu yolda olabilirsiniz.

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 261200000 veya 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 -34 gösterir.
  • Diğer push SDK’ları. Ayar tüm uygulamanıza uygulanır ve her SDK için getToken() ile deleteToken()’ı 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.token ve IPushSubscriptionObserver, 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() yerine onRegistered()’ı çağırır. Token işlemenizi onRegistered()’a taşıyın. Uygulamanız deleteToken()’ı ç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-messaging 25.1.2 veya sonrasını bildirmeli ve minSdk 23 veya üzerini kullanmalıdır. firebase-messaging 26.x’te uygulamanızın minSdk 24 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 kendi AndroidManifest.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

Bir grep eşleşmesi yeterli değildir. Birleştirilmiş 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.
Kayıt başarısız olduğunda hata; manifest değerini, varsayılan bir 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.0 veya 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-messaging 25.1.2 veya 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-messaging 25.0.0 minimumu 21’den 23’e yükseltti). firebase-messaging 26.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 261200000 veya 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.json dosyanı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 SDK 5.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çin FirebaseMessaging.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:
  • minSdk 24 veya üzeri
  • Kotlin 2.0.0 veya sonrası
Uygulamanızın hangi sürüme çözümlendiğini kontrol edin:

Adım 3: Firebase manifest ayarını ekleyin \

AndroidManifest.xml dosyanızın <application> etiketinin içine şunu ekleyin:
AndroidManifest.xml
Expo’da bunun yerine 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.
<meta-data> öğesini AndroidManifest.xml dosyanızdan kaldırın, ardından yeniden derleyin.
FID kaydını devre dışı bırakmak yalnızca OneSignal’ı değil, uygulamanızdaki her SDK’yı etkiler. Başka bir SDK FID kaydına bağlıysa, ayarı kapatmadan önce onun belgelerini kontrol edin.
Cihazlar bir sonraki uygulama açılışında yeniden kaydolur. Mevcut Subscription’lar korunur ve yeni bir token değeri alır.

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ılan FirebaseApp’ini gerektirir. OneSignal’ın paylaşılan Firebase projesi bir installation ID üretemez. En yaygın nedenler, sırasıyla:
  1. google-services.json eksik. 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.
  2. 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.
  3. Eklenti yanlış Gradle dosyasında uygulanmış. apply, proje düzeyindeki dosyada değil, uygulama modülünüzün build.gradle dosyasında olmalıdır.
  4. 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.
FID kaydını hiç kullanmayı amaçlamadıysanız, bunun yerine devre dışı bırakı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.
  1. firebase-messaging 25.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.
  2. Çözümlenen sürümünüzü kontrol edin. Başka bir bağımlılık daha eski bir sürümü sabitliyor olabilir:
  3. 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.
  1. Google Play hizmetleri güncel değil. FID kaydı 261200000 veya 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.
  2. 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 panelinde Invalid 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.
Diğer durumların aksine -6, mevcut Subscription’ları geçersiz olarak işaretler. Yapılandırmayı düzeltin ve güncellenmiş bir derleme yayınlayın; cihazlar bir sonraki açılışta yeniden kaydolur ve Subscribed durumuna döner.

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çin getToken()’ı 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ğin cXp9fY-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.