קבלת הודעות FCM במצב הפעלה ישירה

אם רוצים לשלוח הודעות לאפליקציות לפני שמבטלים את נעילת המכשיר, אפשר להפעיל את מצב האתחול הישיר.FCM לדוגמה, אם רוצים שהמשתמשים באפליקציה יקבלו התראות על אזעקה גם במכשיר נעול.

כשמפתחים את תרחיש השימוש הזה, חשוב לפעול לפי השיטות המומלצות וההגבלות הכלליות לגבי מצב אתחול ישיר. חשוב לשים לב לחשיפה של הודעות שמופעלת בהן האפשרות 'הפעלה ישירה'. כל משתמש שיש לו גישה למכשיר יכול לראות את ההודעות האלה בלי להזין פרטי כניסה.

דרישות מוקדמות

  • המכשיר צריך להיות מוגדר למצב אתחול ישיר.
  • במכשיר צריכה להיות מותקנת גרסה עדכנית של Google Play Services (גרסה 19.0.54 ואילך).
  • האפליקציה צריכה להשתמש ב-FCM SDK‏ (com.google.firebase:firebase-messaging) כדי לקבל הודעות FCM.

הפעלת טיפול בהודעות במצב Direct Boot באפליקציה

  1. בקובץ Gradle ברמת האפליקציה, מוסיפים תלות בספריית התמיכה של FCM Direct Boot:

    implementation 'com.google.firebase:firebase-messaging-directboot:20.2.0'
    
  2. כדי שהאפליקציה תתמוך בFirebaseMessagingService אתחול ישיר, מוסיפים את המאפיין android:directBootAware="true" במניפסט של האפליקציה:

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

חשוב לוודא שניתן להפעיל את FirebaseMessagingService במצב אתחול ישיר. אפשר לבדוק את הדרישות הבאות:

  • השירות לא אמור לגשת לאחסון שמוגן באמצעות אישורים בזמן שהוא פועל במצב אתחול ישיר.
  • השירות לא אמור לנסות להשתמש ברכיבים כמו Activities,‏ BroadcastReceivers או Services אחרים שלא מסומנים כרכיבים שניתן להשתמש בהם במצב אתחול ישיר, בזמן שהוא פועל במצב אתחול ישיר.
  • בנוסף, ספריות שבהן השירות משתמש לא יכולות לגשת לאחסון שמוגן באמצעות אישורים או לקרוא לרכיבים שלא תומכים ב-Direct Boot בזמן שהן פועלות במצב Direct Boot. המשמעות היא שכל הספריות שהאפליקציה משתמשת בהן ומופעלות מהשירות צריכות לתמוך באתחול ישיר, או שהאפליקציה צריכה לבדוק אם היא פועלת במצב אתחול ישיר ולא להפעיל אותן במצב הזה. לדוגמה, ערכות Firebase SDK פועלות עם אתחול ישיר (אפשר לכלול אותן באפליקציה בלי שהיא תקרוס במצב אתחול ישיר), אבל הרבה ממשקי API של Firebase לא תומכים בקריאה במצב אתחול ישיר.
  • אם האפליקציה משתמשת ב-Application בהתאמה אישית, גם ה-Application צריך לתמוך באתחול ישיר (ללא גישה לאחסון שמוגן באמצעות אישורים במצב אתחול ישיר).

שליחת הודעות עם הפעלה ישירה

אפשר לשלוח הודעות למכשירים במצב אתחול ישיר באמצעות HTTP v1 API.

בקשת ההודעה חייבת לכלול את המפתח "direct_boot_ok": true באפשרויות AndroidConfig של גוף הבקשה. לדוגמה:

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,
    },
}