پیام های FCM را در حالت راه اندازی مستقیم دریافت کنید

اگر می‌خواهید قبل از باز شدن قفل دستگاه، پیام‌های FCM را به برنامه‌ها ارسال کنید، می‌توانید حالت بوت مستقیم را فعال کنید. به عنوان مثال، اگر می خواهید کاربران برنامه شما حتی در یک دستگاه قفل شده اعلان های هشدار دریافت کنند.

هنگام ایجاد این مورد استفاده، بهترین شیوه ها و محدودیت های کلی را برای حالت راه اندازی مستقیم رعایت کنید. مهم است که قابلیت مشاهده پیام‌های فعال بوت مستقیم را در نظر بگیرید. هر کاربر با دسترسی به دستگاه می تواند این پیام ها را بدون وارد کردن اطلاعات کاربری مشاهده کند.

پیش نیازها

  • دستگاه باید برای حالت بوت مستقیم تنظیم شود.
  • دستگاه باید یک نسخه جدید از خدمات Google Play (19.0.54 یا جدیدتر) نصب کرده باشد.
  • برنامه باید از FCM SDK ( com.google.firebase:firebase-messaging ) برای دریافت پیام های FCM استفاده کند.

مدیریت پیام حالت بوت مستقیم را در برنامه خود فعال کنید

  1. در فایل Gradle در سطح برنامه، یک وابستگی به کتابخانه پشتیبانی مستقیم بوت FCM اضافه کنید:

    implementation 'com.google.firebase:firebase-messaging-directboot:20.2.0'
    
  2. با افزودن ویژگی android:directBootAware="true" در مانیفست برنامه، بوت مستقیم FirebaseMessagingService برنامه را آگاه کنید:

    <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 که به‌عنوان آگاه از راه‌اندازی مستقیم علامت‌گذاری نشده‌اند، استفاده کند.
  • هیچ کتابخانه‌ای که این سرویس استفاده می‌کند نباید به فضای ذخیره‌سازی حفاظت‌شده اعتبار دسترسی داشته باشد و در حین اجرا در حالت راه‌اندازی مستقیم، مؤلفه‌های غیرdirectBootAware را فراخوانی نکند. این بدان معناست که هر کتابخانه‌ای که برنامه استفاده می‌کند و از سرویس فراخوانی می‌شود، باید از راه‌اندازی مستقیم آگاه باشد یا برنامه باید بررسی کند که آیا در حالت راه‌اندازی مستقیم اجرا می‌شود و آنها را در آن حالت فراخوانی نکند. برای مثال، 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,
    },
}