Mesaj önceliğini belirleme ve yönetme

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 öncelik. Bu, veri ve bildirim mesajları için varsayılan önceliktir. Normal öncelikli mesajlar, cihaz uykuda değilken hemen teslim edilir. Cihaz Dinlenme modundayken cihaz dinlenme modundan çıkana kadar pil tasarrufu sağlamak için yayın geciktirilebilir. 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.

  • 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) çalıştırabilir. Yüksek öncelikli mesajlar genellikle kullanıcının uygulamanızla veya bildirimlerinizle etkileşime girmesine yol açmalıdır.

Yüksek ve normal öncelikli mesajlar arasında karar verme

Normal öncelikli mesajlar genel güncellemeler için uygun olsa da acil konular veya işlemler için hemen teslim edilmesini sağlamanız gerektiğinde yüksek önceliği seçin. Normal öncelikli mesajların teslimat süresi Uyku modu'ndan etkilenebileceğinden, kullanıcı tarafından görülebilen bildirimlerinizin çoğunu yüksek önceliğe ayarlamak, bunların hemen teslim edilmesini sağlar. Ö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 mesaj yükünün işlenmesi birkaç saniye sürer. İleti yayının eşzamansız işlenmesini gerektiren bildirimler için WorkManager gibi bir yapı kullanmanızı öneririz. Bu işlem, onMessageReceived işleyiciye verilen süreyi aşabilir.

Yüksek öncelikli mesajlar için Android WorkManager'ı kullanarak bir hızlandırılmış iş planlayabilirsiniz. Bu sayede, bu bildirimlerin öncelikli olarak işlenmesini ve tamamlanmasını sağlayabilirsiniz.

Normal öncelikli mesajlar için Android WorkManager'ı kullanarak normal bir OneTimeWorkRequest planlayabilirsiniz. Bu sayede, öncelikli işleme kullanılmadan gerekli ek çalışmaların işlenmesi sağlanır.

Mesajların önceliğini ayarlama

Admin SDK, FCM REST API'si ve Firebase konsolunu kullanarak kullanıcılarınıza bildirim gönderebilirsiniz. Öncelik ayarınızı Admin SDK ve FCM REST API'den değiştirmek için mesaj JSON yükünü güncellemeniz gerekir. Önceliği nasıl yüksek olarak ayarlayacağınızı görmek için aşağıdaki kod örneğini kullanabilirsiniz. Konsoldan gönderilen bildirimler için Android'e özgü bildirim alanları ayarlama 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"
          }
      }
  }
}

Uyku modunda yüksek öncelikli bildirimlerinizi test etme

Yüksek öncelikli bildirimlerinizin kullanıcılar tarafından alındığında doğru şekilde alınıp işlenmesini sağlamak için bildirimlerinizi test etmek üzere aşağıdaki talimatları uygulayın:

  1. Uygulamanızı Doze ile test etme başlıklı makaledeki talimatları uygulayarak cihazınızı Doze moduna ayarlayın.
  2. Test cihazındaki uygulamanızdan FCM kayıt jetonunuza erişin. Jetona nasıl erişeceğiniz hakkında daha fazla bilgi için Arka plan uygulamasına test mesajı gönderme başlıklı makaleyi inceleyin.
  3. FCM jetonunu aldıktan sonra, FCM bildirim gönderme kodunuzu veya yüksek öncelikli bildiriminizle eşleşen yapılandırma parametrelerine sahip bir cURL komutunu (%3B%0A%7D)-,cURL,-curl%20%2DX) kullanarak yüksek öncelikli bildiriminizi test cihazına gönderin.

Android'de yüksek öncelikli FCM için önceliği düşürme

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 devredilebilir.

FCM, iletilerin önceliğini düşürüp düşürmeyeceğini veya iletileri proxy'den geçirip geçirmeyeceğini 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 yetkilendirme

Belirli ölçütleri karşılayan yüksek öncelikli bildirim mesajları, önceliği düşürülmek yerine Google Play Hizmetleri tarafından proxy'lenir. Bu, bildirimlerin uygulamayı başlatmaya gerek kalmadan uygulama adına Google Play Hizmetleri tarafından gösterildiği anlamına gelir. Bu, 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'lenmiş bildirimlerin analizlerinin raporlanabilmesi için uygulamanızın 24.0.0 veya sonraki bir FCM SDK sürümünü kullanması gerekir.
  • Proxy'li bildirimlerin kullanıma sunulmasından önceki duruma kıyasla, alınan mesaj sayısında gecikme veya düşüş fark edebilirsiniz. Bunun nedeni, proxy'nin kullanıldığı bildirimler için analizlerin yalnızca uygulamanız çalıştı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 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çirilir ancak Firebase Konsolu veya eski API'ler üzerinden gönderilen mesajlar proxy'den geçirilmez. 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 etsek de bu davranışı aşağıdaki yöntemlerden herhangi biriyle devre dışı bırakabilirsiniz:

  • Uygulama düzeyinde: Uygulama manifest dosyanıza <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, uygulamanızın kullanıcı arayüzü akışında belirli kullanım alanına bağlı olarak fun setNotificationDelegationEnabled(disable: Boolean): Task<Void!> değerini ayarlayın.
  • Mesaj başına: Gönderme isteği için AndroidNotification nesnesinde proxy 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 Verileri 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, mesaj önceliklerinin 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'den gönderilen iletiler hakkında rapor oluşturmak için FCM Toplu Yayınlama Verileri API'sini kullanın. ProxyNotificationInsightPercents, başarıyla proxy'lenmiş bildirimlerin yüzdesini ve başarıyla proxy'lenemeyen mesajlarla ilgili ayrıntıları raporlar.

Bildirim gecikmeleriyle 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 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.

  • Bildiriminizi işlerken ek ağ çağrıları 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ıza bağlantı açmaktan 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.