אם רוצים לשלוח הודעות 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מודעת ל-Direct Boot, מוסיפים את המאפיין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 פועלות עם אתחול ישיר (אפשר לכלול אותן באפליקציה בלי שהיא תקרוס במצב אתחול ישיר), אבל הרבה ממשקי Firebase API לא תומכים בקריאה במצב אתחול ישיר.
- אם האפליקציה משתמשת ב-
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,
},
}