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

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

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

পূর্বশর্ত

  • ডিভাইসটিকে ডাইরেক্ট বুট মোডের জন্য সেট আপ করতে হবে।
  • ডিভাইসটিতে গুগল প্লে সার্ভিসের সাম্প্রতিক সংস্করণ (১৯.০.৫৪ বা তার পরবর্তী সংস্করণ) ইনস্টল করা থাকতে হবে।
  • FCM বার্তা গ্রহণ করার জন্য অ্যাপটিকে অবশ্যই FCM SDK ( com.google.firebase:firebase-messaging ) ব্যবহার করতে হবে।

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

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