אם רוצים לשלוח הודעות לאפליקציות לפני שמבטלים את הנעילה של המכשיר, אפשר להפעיל את מצב האתחול הישיר.FCM לדוגמה, אם רוצים שהמשתמשים באפליקציה יקבלו התראות על אזעקה גם במכשיר נעול.
כשמפתחים את תרחיש השימוש הזה, חשוב לפעול לפי השיטות המומלצות וההגבלות הכלליות לגבי מצב אתחול ישיר. חשוב לשים לב לחשיפה של הודעות שמופעלת בהן האפשרות 'הפעלה ישירה'. כל משתמש שיש לו גישה למכשיר יכול לראות את ההודעות האלה בלי להזין פרטי כניסה.
דרישות מוקדמות
- המכשיר צריך להיות מוגדר למצב אתחול ישיר.
- במכשיר צריכה להיות מותקנת גרסה עדכנית של Google Play Services (גרסה 19.0.54 ואילך).
- האפליקציה צריכה להשתמש ב-FCM SDK (
com.google.firebase:firebase-messaging) כדי לקבל הודעות FCM.
הפעלת טיפול בהודעות במצב Direct Boot באפליקציה
בקובץ Gradle ברמת האפליקציה, מוסיפים תלות בספריית התמיכה FCM בהפעלה ישירה:
implementation 'com.google.firebase:firebase-messaging-directboot:20.2.0'כדי שהאפליקציה תהיה
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,
},
}