FCM mesajlarını doğrudan başlatma modunda al

Cihazın kilidi açılmadan önce uygulamalara FCM mesaj göndermek istiyorsanız doğrudan başlatma modunu etkinleştirebilirsiniz. Örneğin, uygulamanızın kullanıcılarının kilitli bir cihazda bile alarm bildirimleri almasını istiyorsanız.

Bu kullanım alanını oluştururken doğrudan başlatma modu için genel en iyi uygulamaları ve kısıtlamaları inceleyin. Doğrudan başlatma özellikli mesajların görünürlüğünü göz önünde bulundurmak önemlidir. Cihaza erişimi olan tüm kullanıcılar, kullanıcı kimlik bilgilerini girmeden bu mesajları görüntüleyebilir.

Ön koşullar

  • Cihaz, doğrudan başlatma modu için ayarlanmış olmalıdır.
  • Cihazda Google Play Hizmetleri'nin yeni bir sürümü (19.0.54 veya sonraki sürümler) yüklü olmalıdır.
  • Uygulamanın FCM mesajlarını alabilmesi için FCM SDK'sını (com.google.firebase:firebase-messaging) kullanması gerekir.

Uygulamanızda doğrudan başlatma modu mesaj işlemeyi etkinleştirme

  1. Uygulama düzeyindeki Gradle dosyasına FCM doğrudan başlatma destek kitaplığı için bir bağımlılık ekleyin:

    implementation 'com.google.firebase:firebase-messaging-directboot:20.2.0'
    
  2. Uygulama manifestine android:directBootAware="true" özelliğini ekleyerek uygulamanın FirebaseMessagingService özelliğini doğrudan başlatma uyumlu hale getirin:

    <service
        android:name=".java.MyFirebaseMessagingService"
        android:exported="false"
        android:directBootAware="true">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
    

Bu FirebaseMessagingService uygulamasının doğrudan başlatma modunda çalışabildiğinden emin olmanız önemlidir. Aşağıdaki koşulları kontrol edebilirsiniz:

  • Hizmet, doğrudan başlatma modunda çalışırken kimlik bilgisi korumalı depolama alanına erişmemelidir.
  • Hizmet, doğrudan başlatma modunda çalışırken doğrudan başlatma uyumlu olarak işaretlenmemiş Activities, BroadcastReceivers veya diğer Services gibi bileşenleri kullanmaya çalışmamalıdır.
  • Hizmetin kullandığı kitaplıklar da doğrudan başlatma modunda çalışırken kimlik bilgisi korumalı depolama alanına erişmemeli veya directBootAware olmayan bileşenleri çağırmamalıdır. Bu, uygulamanın kullandığı ve hizmetten çağrılan tüm kitaplıkların doğrudan başlatma modunu tanıması veya uygulamanın doğrudan başlatma modunda çalışıp çalışmadığını kontrol etmesi ve bu modda kitaplıkları çağırmaması gerektiği anlamına gelir. Örneğin, Firebase SDK'ları doğrudan başlatma ile çalışır (doğrudan başlatma modunda kilitlenmeden bir uygulamaya dahil edilebilirler) ancak birçok Firebase API'si doğrudan başlatma modunda çağrılmayı desteklemez.
  • Uygulama özel bir Application kullanıyorsa Application'ın da doğrudan başlatma uyumlu olması gerekir (doğrudan başlatma modunda kimlik bilgisi korumalı depolama alanına erişim yoktur).

Doğrudan başlatma özellikli mesajlar gönderme

HTTP v1 API'yi kullanarak doğrudan başlatma modundaki cihazlara mesaj gönderebilirsiniz.

Mesaj isteği, istek gövdesinin AndroidConfig seçeneklerinde "direct_boot_ok": true anahtarını içermelidir. Örneğin:

https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send
Content-Type:application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA

{
  "message":{
    "token" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data": {
      "score": "5x1",
      "time": "15:10"
    },
    "android": {
      "direct_boot_ok": true,
    },
}