সরাসরি বুট মোডে FCM বার্তা গ্রহণ করুন

ডিভাইসটি আনলক হওয়ার আগে আপনি যদি অ্যাপগুলিতে FCM বার্তা পাঠাতে চান, আপনি সরাসরি বুট মোড সক্ষম করতে পারেন। উদাহরণস্বরূপ, যদি আপনি চান যে আপনার অ্যাপের ব্যবহারকারীরা এমনকি একটি লক করা ডিভাইসেও অ্যালার্ম বিজ্ঞপ্তি পান।

এই ব্যবহারের ক্ষেত্রে তৈরি করার সময়, সরাসরি বুট মোডের জন্য সাধারণ সর্বোত্তম অনুশীলন এবং বিধিনিষেধগুলি পর্যবেক্ষণ করুন। সরাসরি বুট-সক্ষম বার্তাগুলির দৃশ্যমানতা বিবেচনা করা গুরুত্বপূর্ণ। ডিভাইসে অ্যাক্সেস সহ যে কোনও ব্যবহারকারী ব্যবহারকারীর শংসাপত্রগুলি প্রবেশ না করেই এই বার্তাগুলি দেখতে পারেন৷

পূর্বশর্ত

  • ডিভাইসটি সরাসরি বুট মোডের জন্য সেট আপ করা আবশ্যক।
  • ডিভাইসটিতে অবশ্যই Google Play পরিষেবাগুলির একটি সাম্প্রতিক সংস্করণ ইনস্টল থাকতে হবে (19.0.54 বা তার পরে)।
  • FCM বার্তাগুলি পেতে অ্যাপটিকে অবশ্যই FCM SDK ( com.google.firebase:firebase-messaging ) ব্যবহার করতে হবে৷

আপনার অ্যাপে সরাসরি বুট মোড বার্তা পরিচালনা সক্ষম করুন

  1. অ্যাপ-লেভেল গ্রেডল ফাইলে, 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 যা সরাসরি বুট মোডে চলাকালীন সরাসরি বুট সচেতন হিসাবে চিহ্নিত করা হয় না৷
  • পরিষেবা ব্যবহার করে এমন কোনও লাইব্রেরিগুলিকে অবশ্যই শংসাপত্রের সুরক্ষিত স্টোরেজ অ্যাক্সেস করতে হবে না বা সরাসরি বুট মোডে চলাকালীন অ-ডাইরেক্ট বুটঅ্যায়ার উপাদানগুলিকে কল করতে হবে না। এর মানে হল যে অ্যাপটি ব্যবহার করে এমন যেকোন লাইব্রেরিগুলিকে পরিষেবা থেকে কল করা হয় সরাসরি বুট সচেতন হতে হবে, অথবা অ্যাপটিকে সরাসরি বুট মোডে চলছে কিনা তা পরীক্ষা করতে হবে এবং সেগুলিকে সেই মোডে কল করতে হবে না। উদাহরণস্বরূপ, 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,
    },
}