Android'de yayın mesajlarına teslimat önceliği atamak için iki seçeneğiniz vardır: normal ve yüksek öncelik. Normal ve yüksek öncelikli iletilerin teslimatı ş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ün senkronize kalması veya uygulama verilerinin arka planda senkronize edilmesi gibi zamana duyarlı olmayan mesajlar için normal teslimat önceliğini seçin.
Android'de uygulamanız için arka plan veri senkronizasyonu isteyen normal öncelikli bir mesaj aldığınızda, ağ kullanılabilir olduğunda bu işlemi gerçekleştirmesi için WorkManager ile bir görev planlayabilirsiniz.
Yüksek öncelik. FCM, yüksek öncelikli mesajları hemen yayınlamaya çalışır. Bu sayede FCM, gerektiğinde uyuyan bir cihazı uyandırabilir ve bazı sınırlı işlemler (çok sınırlı ağ erişimi dahil) gerçekleştirebilir. Yüksek öncelikli mesajlar genellikle kullanıcının uygulamanızla veya bildirimlerinizle etkileşime girmesine yol açmalıdır.
Android'de mesajları işleme ve öncelik verme
Android'deki yüksek öncelikli mesajlar, zamana duyarlı ve kullanıcı tarafından görülebilen içerikler içindir ve kullanıcılara yönelik bildirimlerle sonuçlanmalıdır. FCM, mesajların kullanıcılara yönelik bildirimlerle sonuçlanmadığı bir kalıp algılarsa mesajlarınızın önceliği normal önceliğe ayarlanabilir veya Google Play Hizmetleri tarafından işlenmesi için devre dışı bırakılabilir.
FCM, mesajların önceliğini düşürüp düşürmeyeceğini veya mesajları proxy'den geçirip geçirmeyeceğini belirlerken 7 günlük mesaj davranışını kullanır. Bu belirlemeyi, 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 ile bildirim yetkilendirme
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. Bu, bildirimlerin uygulamayı başlatmaya gerek kalmadan uygulama adına Google Play Hizmetleri tarafından gösterildiği anlamına gelir. Bu işlem, Android cihazlarda daha iyi bir genel kullanıcı deneyimi sunmak için yapılır.
Proxy'lenmiş bildirim mesajlarının, alınan mesajlarla ilgili analizlerin raporlanma biçiminde değişiklikler yaptığı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'nin kullanıldığı bildirimler için analizlerin yalnızca uygulamanız çalıştırıldığında raporlanması ve bildirim uygulamanın açılmasına neden olmazsa hiç raporlanmamasıdır.
Bildirim mesajlarının bu şekilde proxy'lenmesi, Android Q ve sonraki sürümleri ile Google Play Hizmetleri 19054000 veya sonraki sürümleri kullanan uygulamalar için varsayılan davranıştır. HTTP v1 API üzerinden gönderilen mesajlar proxy'den geçer ancak Firebase Konsolu veya eski API'ler üzerinden gönderilen mesajlar proxy'den geçmez. Bu özelliğin şu anda beta sürümünde olduğunu ve değişiklik yapılabileceğini lütfen unutmayın.
Cihazın pili ve belleği üzerindeki avantajları nedeniyle yetkilendirmeyi etkin durumda bırakmanızı önemle tavsiye ederiz. Ancak bu davranışı aşağıdaki yöntemlerden herhangi biriyle 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 özel 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. - Mesaj başına: Gönderme isteği için
AndroidNotification
nesnesindeproxy
anahtarınıDENY
olarak ayarlayın.
Android'de mesajların önceliğini düşürme özelliğini ölçme
Tek tek iletiler. İleti teslim edilirken, getPriority() işlevinden elde edilen yayınlanma önceliğini getOriginalPriority() işlevinden elde edilen orijinal öncelikle karşılaştırarak bir iletinin önceliğinin düşürülüp düşürülmediğini belirleyebilirsiniz.
Tüm Mesajlar FCM Toplu Yayınlama Veri API'si, Android'e gönderdiğiniz tüm mesajların yüzde kaçının önceliği düşürüldüğünü bildirebilir. Bazı mesajlar toplu veri raporlarından çıkarılabilir ancak genel olarak bu raporlar, mesajların öncelik sırasının düşürülmesi oranlarına dair genel bir görünüm sunar. Daha fazla bilgi ve API'yi sorgulamaya yönelik örnek kod için toplu yayınlama verileri hakkındaki makalemizi inceleyin. Bu makaleyi API gezgininden de keşfedebilirsiniz.
Proxy uygulanan bildirimler. Proxy'ler aracılığıyla gönderilen bildirimler mevcut FCM veya GA yayınlama metriklerinde sayılmaz. Bu nedenle, bildirim yayınlama metriklerinde% 15'e varan bir düşüş yaşayabilirsiniz. Proxy ile iletilen iletiler hakkında rapor oluşturmak için FCM Toplu Yayınlama Veri API'sini 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 ve mesajlarınızın önceliği düşürülür. Bir uygulama örneğine yüksek öncelikli mesajlar göndermeden önce bildirimlerin etkinleştirildiğini doğrulamanız gerekir.
Bildirim yayınlamadan önce evi aramayın. Android mobil nüfusunun küçük bir kısmı yüksek gecikmeli ağlarda olduğundan, bildirim görüntülemeden önce sunucularınızla bağlantı kurmaktan kaçının. İzin verilen işleme süresi sona ermeden önce sunucuyu geri çağırmanız, yüksek gecikmeli ağlardaki kullanıcılar için riskli olabilir. Bunun yerine, bildirim içeriğini FCM mesajına ekleyin ve hemen gösterin. Android'de ek uygulama içi içerik için senkronizasyon yapmanız gerekiyorsa bu işlemi arka planda gerçekleştirmek üzere WorkManager ile bir görev planlayabilirsiniz.