Android'de alt akış iletilerine teslimat önceliği atamak için iki seçeneğiniz vardır: normal ve yüksek öncelik. Normal ve yüksek öncelikli iletilerin teslimi şu şekilde çalışır:
Normal öncelik Bu, veri ve bildirim mesajları için varsayılan önceliktir. Normal öncelikli iletiler, cihaz uyku modunda değilken hemen teslim edilir. Cihaz Doze modundayken, cihaz Doze modundan çıkana kadar pilden tasarruf etmek için teslimat gecikebilir. Yeni e-posta bildirimleri, kullanıcı arayüzünüzü senkronize tutma veya uygulama verilerini arka planda senkronize etme gibi daha az zamana duyarlı iletiler için normal teslimat önceliğini seçin.
Yüksek öncelikli.FCM, yüksek öncelikli mesajları hemen teslim etmeye çalışır. Bu sayede FCM, gerektiğinde uyuyan bir cihazı uyandırabilir ve sınırlı işlemeler (çok sınırlı ağ erişimi dahil) gerçekleştirebilir. Yüksek öncelikli mesajlar genellikle kullanıcının uygulamanızla veya bildirimleriyle etkileşimde bulunmasına neden olmalıdır.
Yüksek ve normal öncelikli iletiler arasında karar verme
Normal öncelikli iletiler genel güncellemeler için uygun olsa da acil konular veya işlemler için anında teslimatı sağlamanız gerektiğinde yüksek önceliği seçin. Normal öncelikli mesajların teslim süresi Doze modundan etkilenebileceğinden, kullanıcıların görebileceği bildirimlerinizin çoğunu yüksek öncelikli olarak ayarlarsanız bu bildirimlerin zamanında teslim edilmesini sağlayabilirsiniz. Örneğin, sohbet mesajları, hesapla ilgili sorunlar veya yemek teslimatı güncellemeleri gibi bildirimler yüksek öncelikli olarak ayarlanmalıdır.
Yüksek ve normal öncelikli iletiler için ileti işleme
Android cihazda alınan hem yüksek hem de normal öncelikli bildirimler için, onMessageReceived
işleyicisinde ileti yükünün işlenmesi için birkaç saniye verilir. Mesaj yükünün eşzamansız işlenmesini gerektiren tüm bildirimler için onMessageReceived
işleyiciye verilen süre aşılabileceğinden WorkManager gibi bir yapı kullanmanızı öneririz.
Yüksek öncelikli mesajlar için, bu bildirimlerin önceliklendirilmesini ve tamamlanmasını sağlamak üzere Android WorkManager'ı kullanarak hızlandırılmış bir iş planlayabilirsiniz.
Normal öncelikli mesajlar için Android WorkManager'ı kullanarak normal OneTimeWorkRequest planlayabilirsiniz. Bu sayede, öncelikli işleme kullanılmadan gerekli ek işlemlerin yapılması sağlanır.
İletilerin önceliğini ayarlama
Admin SDK, FCM REST API'si ve Firebase konsolunu kullanarak kullanıcılarınıza bildirim gönderebilirsiniz. Admin SDK ve FCM REST API'den öncelik ayarınızı değiştirmek için mesaj JSON yükünü güncellemeniz gerekir. Önceliği yüksek olarak ayarlamayı görmek için aşağıdaki kod örneğini kullanabilirsiniz. Konsoldan gönderilen bildirimler için Android'e özgü bildirim alanlarının ayarlanması desteklenmez.
{
"message": {
"notification": {
"body": "Purchase exceeding $500 detected",
"title": "Credit card purchase"
},
"data": {
"purchaser": "Your child",
"items": "Gravity Defier Sneakers"
},
"android": {
"priority": "high"
},
"apns": {
"headers": {
"apns-priority": "5"
}
}
}
}
Yüksek öncelikli bildirimlerinizi Doze modunda test etme
Yüksek öncelikli bildirimlerinizin kullanıcılar tarafından alındığında doğru şekilde alınmasını ve işlenmesini sağlamak için bildirimlerinizi test etmek üzere aşağıdaki talimatları uygulayın:
- Test your app with Doze (Uygulamanızı Doze ile test etme) başlıklı makaledeki talimatları kullanarak cihazınızı Doze moduna ayarlayın.
- Test cihazındaki uygulamanızdan FCM kayıt jetonunuza erişin. Jetona erişme hakkında daha fazla bilgi için Arka plan uygulamasına test mesajı gönderme başlıklı makaleyi inceleyin.
- FCM jetonunu aldıktan sonra, FCM bildirim gönderme kodunuzu veya yüksek öncelikli bildiriminize uygun yapılandırma parametrelerine sahip bir cURL komutu kullanarak yüksek öncelikli bildiriminizi test cihazına gönderin.
Android'de yüksek öncelikli FCM öğesinin önceliğini düşürme
Android'deki yüksek öncelikli mesajlar, zamana duyarlı ve kullanıcı tarafından görülebilen içerikler için tasarlanmıştır ve kullanıcıya yönelik bildirimlere yol açmalıdır. FCM, iletilerin kullanıcıya yönelik bildirimlere yol açmadığı bir kalıp tespit ederse iletilerinizin önceliği normal önceliğe düşürülebilir veya Google Play Hizmetleri tarafından işlenmek üzere devredilebilir.
FCM, iletilerin önceliğini düşürüp düşürmeyeceğini veya iletilere proxy uygulayıp uygulamayacağını belirlerken 7 günlük ileti 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ı tarafından görülebilecek şekilde gösteriliyorsa gelecekteki yüksek öncelikli mesajlarınız etkilenmez.
Google Play Hizmetleri ile bildirim temsilciliği
Belirli ölçütleri karşılayan yüksek öncelikli bildirim mesajları, önceliği düşürülmek yerine Google Play Hizmetleri tarafından proxy'lenir. Bu, uygulamayı başlatmaya gerek kalmadan Google Play Hizmetleri tarafından uygulama adına bildirimlerin gösterilmesi anlamına gelir. Bu işlem, Android cihazlarda genel olarak daha iyi bir kullanıcı deneyimi sağlamak için yapılır.
Proxy'li bildirim mesajlarının, alınan mesajlarla ilgili analizlerin nasıl raporlandığında değişikliklere neden olduğunu unutmayın:
- Proxy'li bildirimlerle ilgili analizlerin raporlanması için uygulamanızın FCM SDK'sının 24.0.0 veya sonraki bir sürümünü kullanması gerekir.
- Proxy'li bildirimler kullanıma sunulmadan önceki sayıya kıyasla, alınan mesaj sayısında gecikmeler veya düşüşler fark edebilirsiniz. Bunun nedeni, proxy'li bildirimlerin analizlerinin yalnızca uygulamanız başlatıldıktan sonra 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 Google Play Hizmetleri'nin 19054000 veya sonraki sürümlerini kullanan uygulamalar için varsayılan davranıştır. HTTP v1 API üzerinden gönderilen mesajlar proxy'lenir ancak Firebase konsolu veya eski API'ler üzerinden gönderilen mesajlar proxy'lenmez. Bu özelliğin şu anda beta sürümünde olduğunu ve değişikliğe tabi olduğunu lütfen unutmayın.
Cihazın pili ve belleği açısından faydaları nedeniyle temsilci erişimini etkin bırakmanızı önemle tavsiye etsek de bu davranışı aşağıdaki yöntemlerden herhangi biriyle devre dışı bırakabilirsiniz:
- Uygulama düzeyinde: Uygulama manifestinize
<meta-data android:name= "delivery_metrics_exported_to_big_query_enabled" android:value="false"/>
yönergesini ekleyin. - Uygulama örneği temelinde: 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!>
ayarını yapın. - İleti bazında: Gönderme isteği için
AndroidNotification
nesnesindeproxy
anahtarınıDENY
olarak ayarlayın.
Android'de iletilerin önceliğinin düşürülmesini ölçme
Bireysel Mesajlar. Teslimat sırasında, getPriority() işlevinden alınan teslim edilen önceliği getOriginalPriority() işlevinden alınan orijinal önceliğiyle karşılaştırarak tek bir iletinin önceliğinin düşürülüp düşürülmediğini belirleyebilirsiniz.
Tüm mesajlar FCM Toplu Teslim Verileri API'si, Android'e gönderdiğiniz tüm mesajların ne kadarının önceliğinin düşürüldüğünü bildirebilir. Bazı iletiler toplu veri raporlarına dahil edilmeyebilir ancak genel olarak iletilerin önceliğinin düşürülme oranları hakkında genel bir görünüm sunarlar. API'yi sorgulamak için daha fazla bilgi ve örnek kod için toplu yayın verileri hakkındaki makalemize bakın. Bu veriler API Explorer'dan da incelenebilir.
Proxy uygulanan bildirimler. Proxy'li bildirimler mevcut FCM veya GA teslim metriklerinde sayılmaz. Bu nedenle, bildirim teslim metriklerinde% 15'e kadar düşüş yaşayabilirsiniz. Proxy'li iletilerle ilgili rapor oluşturmak için FCM Aggregate Delivery Data API'yi kullanın.
ProxyNotificationInsightPercents
, başarıyla proxy'lenen bildirimlerin yüzdesini ve başarıyla proxy'lenemeyen iletilerle ilgili ayrıntıları bildirir.
Bildirimlerdeki gecikmelerle ilgili sorunları giderme
Uygulama örneğinizde bildirimlerin etkinleştirildiğinden emin olun. Kullanıcı, uygulamanız için bildirim iznini devre dışı bıraktıysa bildirimleriniz 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.
Bildiriminizi işlerken ek ağ aramaları yapmaktan kaçının. Android mobil kullanıcılarının küçük bir kısmı yüksek gecikmeli ağlarda olduğundan, bildirim göstermeden önce sunucularınızla bağlantı açmaktan kaçının. İzin verilen işleme süresi sona ermeden önce sunucuyu geri çağırmak, 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örüntüleyin. Android'de uygulama içi ek içerikler için senkronizasyon yapmanız gerekiyorsa bu işlemi arka planda gerçekleştirmek üzere WorkManager ile bir görev planlayabilirsiniz.