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