İleti önceliğini ayarlama ve yönetme

Android'de aşağı akış mesajlarına teslim önceliği atamak için iki seçeneğiniz vardır: normal ve yüksek öncelik. Normal ve yüksek öncelikli mesajların teslimi şu şekilde işler:

  • Normal öncelikli. Bu, veri mesajları için varsayılan önceliktir. Normal öncelikli mesajlar, cihaz uyku modunda değilken hemen teslim edilir. Cihaz Doz modundayken, cihaz dozdan çıkana kadar pil tasarrufu için teslimat gecikebilir. Yeni e-posta bildirimleri, kullanıcı arayüzünüzü senkronize etme veya arka planda uygulama verilerini senkronize etme gibi zaman açısından daha az iletiler için normal teslim önceliğini seçin.

    Android'de uygulamanız için arka plan veri senkronizasyonu isteğinde bulunan normal öncelikli mesaj aldığınızda, ağ kullanılabilir olduğunda bunu işlemek için WorkManager ile bir görev planlayabilirsiniz.

  • Yüksek öncelikli. FCM, yüksek öncelikli mesajları hemen iletmeye çalışarak FCM'nin gerektiğinde uykudaki bir cihazı uyandırmasına ve bazı sınırlı işlemler (çok sınırlı ağ erişimi dahil) çalıştırmasına izin verir. Yüksek öncelikli mesajlar, genellikle kullanıcının uygulamanızla veya bildirimleriyle etkileşime girmesine neden olur.

Android'de mesaj işleme ve önceliklerin azaltılması

Android'deki yüksek öncelikli mesajlar zamana duyarlı, kullanıcı tarafından görülebilen içeriğe yöneliktir ve kullanıcılara bildirim göndermelidir. FCM, mesajların kullanıcılara yönelik bildirimlerle sonuçlanmadığı bir kalıp algılarsa mesajlarınızın normal önceliğe sahip olması veya Google Play Hizmetleri tarafından işlenmesi için yetkilendirilmeniz mümkün olabilir.

FCM, mesajların önceliğinin düşürülüp atanmayacağını belirlerken 7 günlük mesaj davranışını kullanır; bu tespiti uygulamanızın her örneği için bağımsız olarak yapar. Yüksek öncelikli mesajlara yanıt olarak bildirimler, kullanıcının görebileceği şekilde gösterilirse gelecekteki yüksek öncelikli mesajlarınız etkilenmez.

Google Play Hizmetleri'nde bildirim yetkisi

Belirli ölçütleri karşılayan yüksek öncelikli bildirim mesajları (veri mesajları değil), önceliklerinin düşürülmesi yerine Google Play Hizmetleri tarafından proxy kullanılır. Yani bildirimler, Google Play Hizmetleri tarafından uygulamanın başlatılmasına gerek kalmadan uygulama adına gösterilir. Bu işlem, Android cihazlarda daha iyi bir genel kullanıcı deneyimi sağlamak için yapılır.

Proxy kullanılan bildirim mesajlarının, alınan mesajlarla ilgili analizlerin raporlanma şeklinde değişikliklere yol açtığını unutmayın:

  • Proxy kullanan bildirimlerle ilgili analizlerin raporlanabilmesi için uygulamanızın FCM SDK'sının 24.0.0 veya sonraki bir sürümünü kullanması gerekir.
  • Proxy kullanılan bildirimler kullanılmaya başlanmadan önceki sayıya kıyasla alınan mesaj sayısında gecikmeler veya düşüşler görebilirsiniz. Bunun nedeni, proxy kullanan bildirimlerle ilgili analizlerin yalnızca uygulamanız başladıktan sonra bildirilmesi ve bildirim, uygulamanın açılmasıyla sonuçlanmadığında hiç rapor edilmemesidir.

Bildirim mesajlarını bu şekilde proxy yapmak, Android Q+ ve Google Play Hizmetleri 19054000 veya sonraki sürümlerini kullanan uygulamalar için varsayılan davranıştır. HTTP v1 API üzerinden gönderilen mesajlarda proxy kullanılır ancak Firebase konsolu veya eski API'ler üzerinden gönderilen mesajlara proxy uygulanmaz. Bu özelliğin şu anda beta sürümünde olduğunu ve değişebileceğini unutmayın.

Cihaz pili ve bellek açısından sunduğu avantajlar için yetki verme özelliğini etkin durumda bırakmanızı önemle tavsiye etsek de bu davranışı aşağıdaki yöntemlerden birini kullanarak devre dışı bırakabilirsiniz:

  • Uygulama düzeyinde: Uygulama manifest'inize <meta-data android:name= "delivery_metrics_exported_to_big_query_enabled" android:value="false"/> yönergesini ekleyin.
  • Uygulama örneği bazında: Uygulama örneği için, belirli kullanım alanına bağlı olarak uygulamanızın kullanıcı arayüzü akışında fun setNotificationDelegationEnabled(disable: Boolean): Task<Void!> değerini ayarlayın.
  • İleti başına: Gönderme isteği için AndroidNotification nesnesinde proxy anahtarını DENY olarak ayarlayın.

Android'de mesaj önceliklerinin azaltılmasını ölçme

  • Bireysel Mesajlar. Teslim sırasında, tek bir mesajın önceliklendirilmemiş olup olmadığını belirlemek için getPriority() ile getOriginalPriority() kullanılan orijinal önceliğinin iletim önceliğini karşılaştırabilirsiniz.

  • Tüm Mesajlar. FCM Aggregate Delivery Data API, Android'e gönderilen tüm mesajlarınızın yüzde kaçının önceliksiz bırakıldığını bildirebilir. Bazı mesajlar birleştirilmiş veri raporlarından çıkarılabilir, ancak genel olarak mesaj önceliklendirme oranlarının genel bir görünümünü sunmalıdır. Daha fazla bilgi ve API'yi sorgulamayla ilgili örnek kod için toplu teslim verileri ile ilgili makalemize bakın. Bu veriler, API gezgininden de incelenebilir.

  • Proxy Bildirimler. Proxy kullanılan bildirimler mevcut FCM veya GA yayınlanma metriklerine dahil edilmez. Bu nedenle, bildirim yayınlama metriklerinde% 15'e varan bir düşüş görebilirsiniz. Proxy kullanılan mesajlar hakkında rapor oluşturmak için FCM Aggregate Delivery Data API'yi kullanın. ProxyNotificationInsightPercents, başarıyla proxy uygulanan bildirimlerin yüzdesini ve başarıyla proxy kullanılamayan mesajların ayrıntılarını bildirir.

Sorun giderme

  • Uygulama örneğinizde bildirimlerin etkinleştirildiğinden emin olun. Kullanıcı, uygulamanız için bildirim iznini devre dışı bıraktıysa bildirimlerinizin hiçbiri yayınlanmaz. Bunun sonucunda, mesajlarınızın önceliği kaldırılır. Bir uygulama örneğine yüksek öncelikli iletiler göndermeden önce bildirimlerin etkinleştirildiğini doğrulamanız gerekir.

  • Bildirim yayınlamadan önce evi aramayın. Android mobil cihaz popülasyonunun küçük bir kısmı yüksek gecikmeli ağlarda olduğundan, bildirim görüntülemeden önce sunucularınızla bir bağlantı açmaktan kaçının. İzin verilen işleme süresi dolmadan sunucunun geri çağrılması, yüksek gecikmeli ağlardaki kullanıcılar için riskli olabilir. Bunun yerine, bildirim içeriğini FCM mesajına dahil edin ve hemen görüntüleyin. Android'de ek uygulama içi içerikler için senkronizasyon yapmanız gerekiyorsa bunu arka planda işleyecek WorkManager ile bir görev planlayabilirsiniz.