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

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

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

পূর্বশর্ত

  • ডিভাইসটি সরাসরি বুট মোডের জন্য সেট আপ করতে হবে।
  • ডিভাইসটিতে গুগল প্লে পরিষেবার একটি সাম্প্রতিক সংস্করণ ইনস্টল করা থাকতে হবে (১৯.০.৫৪ বা তার পরবর্তী)।
  • 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 ব্যবহার করে সরাসরি বুট মোডে ডিভাইসগুলিতে বার্তা পাঠাতে পারেন।

বার্তা অনুরোধে অনুরোধের মূল অংশের AndroidConfig বিকল্পগুলিতে "direct_boot_ok": true কীটি অন্তর্ভুক্ত থাকতে হবে। উদাহরণস্বরূপ:

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,
    },
}