Android অ্যাপে Firebase Cloud Messaging ব্যবহার শুরু করা

প্ল্যাটফর্ম বেছে নিন: iOS+ Android ওয়েব Flutter Unity C++


এই নির্দেশিকায় আপনার Android ক্লায়েন্ট অ্যাপে Firebase Cloud Messaging কীভাবে ব্যবহার শুরু করবেন তা বর্ণনা করা হয়েছে, যাতে আপনি নির্ভরযোগ্যভাবে মেসেজ পাঠাতে পারেন।

FCM ক্লায়েন্টদের এমন ডিভাইস প্রয়োজন যাতে Android 6.0 বা এর পরের যেকোনও ভার্সন চলে এবং Google Play Store অ্যাপ ইনস্টল করা থাকে অথবা এমন এমুলেটর প্রয়োজন যাতে Google API সহ Android 6.0 চলে। মনে রাখবেন, Google Play Store-এর মাধ্যমে আপনার Android অ্যাপ ডেপ্লয় করার ব্যাপারে কোনও বিধিনিষেধ নেই।

SDK সেট-আপ করা

আপনি আগে থেকে না করে থাকলে, আপনার Android প্রোজেক্টে Firebase যোগ করুন।

FCM-এর সাথে অপ্টিমাল অভিজ্ঞতা পেতে, আমরা আপনার প্রোজেক্টে চালু করার Google Analytics জন্য বিশেষভাবে সাজেস্ট করি। FCM-এর জন্য মেসেজ ডেলিভারি রিপোর্টিংয়ের ক্ষেত্রে Google Analytics প্রয়োজন।

আপনার অ্যাপ ম্যানিফেস্ট এডিট করা

আপনার অ্যাপের মেনিফেস্টে নিম্নলিখিত বিষয়গুলি যোগ করুন:

  • FirebaseMessagingService-এর মেয়াদ বাড়ানো যায় এমন পরিষেবা। আপনি যদি ব্যাকগ্রাউন্ডে অ্যাপে বিজ্ঞপ্তি পাওয়ার বাইরে কোনও মেসেজ ম্যানেজ করতে চান, তাহলে এটি প্রয়োজনীয়। ফোরগ্রাউন্ড অ্যাপে বিজ্ঞপ্তি পেতে, ডেটা পেলোড এবং আরও অনেক কিছু পেতে, আপনাকে এই পরিষেবার মেয়াদ বাড়াতে হবে।
  • <service
        android:name=".java.MyFirebaseMessagingService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
  • (ঐচ্ছিক) অ্যাপ্লিকেশন কম্পোনেন্টের মধ্যে, ডিফল্ট বিজ্ঞপ্তি আইকন ও রঙ সেট করার জন্য মেটাডেটা এলিমেন্ট। ইনকামিং মেসেজে আইকন বা রঙ স্পষ্টভাবে সেট করা না থাকলে Android এইসব ভ্যালু ব্যবহার করে।
  • <!-- Set custom default icon. This is used when no icon is set for incoming notification messages.
         See README(https://goo.gl/l4GJaQ) for more. -->
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_icon"
        android:resource="@drawable/ic_stat_ic_notification" />
    <!-- Set color used with incoming notification messages. This is used when no color is set for the incoming
         notification message. See README(https://goo.gl/6BKBk7) for more. -->
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_color"
        android:resource="@color/colorAccent" />
  • (ঐচ্ছিক) Android 8.0 (API লেভেল ২৬) ও এর পরের যেকোনও ভার্সনে, বিজ্ঞপ্তি চ্যানেল কাজ করে এবং এটি ব্যবহার করার সাজেশন দেওয়া হয়। FCM প্রাথমিক সেটিংস সহ একটি ডিফল্ট বিজ্ঞপ্তি চ্যানেল প্রদান করে। আপনি যদি নিজের ডিফল্ট চ্যানেল তৈরি করে ব্যবহার করতে চান, তাহলে দেখানো default_notification_channel_id-এর মান আপনার বিজ্ঞপ্তি চ্যানেল অবজেক্টের ID হিসেবে সেট করুন; ইনকামিং মেসেজ স্পষ্টভাবে কোনও বিজ্ঞপ্তি চ্যানেল সেট না করলে FCM এই মান ব্যবহার করবে। আরও জানতে, বিজ্ঞপ্তি চ্যানেল ম্যানেজ করা দেখুন।
  • <meta-data
        android:name="com.google.firebase.messaging.default_notification_channel_id"
        android:value="@string/default_notification_channel_id" />

Android 13+ ভার্সনে রানটাইম বিজ্ঞপ্তি সংক্রান্ত অনুমতির অনুরোধ করা

বিজ্ঞপ্তি দেখানোর জন্য Android 13 একটি নতুন রানটাইম অনুমতি চালু করেছে। এটি Android 13 বা তার পরবর্তী যেকোনও ভার্সনে চলে এমন সব অ্যাপকে প্রভাবিত করে যেগুলি FCM বিজ্ঞপ্তি ব্যবহার করে।

ডিফল্ট হিসেবে, FCM SDK (ভার্সন 23.0.6 বা তার পরের যেকোনও ভার্সন)-এ ম্যানিফেস্টে উল্লেখ করা POST_NOTIFICATIONS অনুমতি অন্তর্ভুক্ত থাকে। তবে, আপনার অ্যাপকেও এই অনুমতির রানটাইম ভার্সনের জন্য অনুরোধ করতে হবে কনস্ট্যান্ট, android.permission.POST_NOTIFICATIONS ব্যবহার করে। ব্যবহারকারী এই অনুমতি না দেওয়া পর্যন্ত আপনার অ্যাপকে বিজ্ঞপ্তি দেখাতে দেওয়া হবে না।

নতুন রানটাইম অনুমতির জন্য অনুরোধ করতে:

Kotlin

// Declare the launcher at the top of your Activity/Fragment:
private val requestPermissionLauncher = registerForActivityResult(
    ActivityResultContracts.RequestPermission(),
) { isGranted: Boolean ->
    if (isGranted) {
        // FCM SDK (and your app) can post notifications.
    } else {
        // TODO: Inform user that that your app will not show notifications.
    }
}

private fun askNotificationPermission() {
    // This is only necessary for API level >= 33 (TIRAMISU)
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) ==
            PackageManager.PERMISSION_GRANTED
        ) {
            // FCM SDK (and your app) can post notifications.
        } else if (shouldShowRequestPermissionRationale(Manifest.permission.POST_NOTIFICATIONS)) {
            // TODO: display an educational UI explaining to the user the features that will be enabled
            //       by them granting the POST_NOTIFICATION permission. This UI should provide the user
            //       "OK" and "No thanks" buttons. If the user selects "OK," directly request the permission.
            //       If the user selects "No thanks," allow the user to continue without notifications.
        } else {
            // Directly ask for the permission
            requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)
        }
    }
}

Java

// Declare the launcher at the top of your Activity/Fragment:
private final ActivityResultLauncher<String> requestPermissionLauncher =
        registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> {
            if (isGranted) {
                // FCM SDK (and your app) can post notifications.
            } else {
                // TODO: Inform user that that your app will not show notifications.
            }
        });

private void askNotificationPermission() {
    // This is only necessary for API level >= 33 (TIRAMISU)
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) ==
                PackageManager.PERMISSION_GRANTED) {
            // FCM SDK (and your app) can post notifications.
        } else if (shouldShowRequestPermissionRationale(Manifest.permission.POST_NOTIFICATIONS)) {
            // TODO: display an educational UI explaining to the user the features that will be enabled
            //       by them granting the POST_NOTIFICATION permission. This UI should provide the user
            //       "OK" and "No thanks" buttons. If the user selects "OK," directly request the permission.
            //       If the user selects "No thanks," allow the user to continue without notifications.
        } else {
            // Directly ask for the permission
            requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS);
        }
    }
}

সাধারণত, ব্যবহারকারীকে এমন একটি UI দেখাতে হবে যা ব্যাখ্যা করে যে অ্যাপকে বিজ্ঞপ্তি পোস্ট করার অনুমতি দিলে কোন কোন ফিচার চালু হবে। এই UI-তে ব্যবহারকারীকে সম্মতি বা অসম্মতি জানানোর বিকল্প দিতে হবে, যেমন ঠিক আছে এবং না, ধন্যবাদ বোতাম। ব্যবহারকারী ঠিক আছে বিকল্প বেছে নিলে, সরাসরি অনুমতি চেয়ে নিন। ব্যবহারকারী না থাক বিকল্প বেছে নিলে, তাকে বিজ্ঞপ্তি ছাড়াই চালিয়ে যেতে দিন।

আপনার অ্যাপ কখন ব্যবহারকারীর কাছ থেকে POST_NOTIFICATIONS অনুমতি চাওয়া উচিত সেই সম্পর্কে আরও পেশাদার পদ্ধতি জানতে বিজ্ঞপ্তি রানটাইম অনুমতি লিঙ্ক দেখুন।

Android 12L (API লেভেল 32) বা এর আগের যেকোনও ভার্সনকে টার্গেট করা অ্যাপের জন্য বিজ্ঞপ্তি সংক্রান্ত অনুমতি

আপনার অ্যাপ প্রথমবার বিজ্ঞপ্তি চ্যানেল তৈরি করলে, যতক্ষণ অ্যাপটি ফোরগ্রাউন্ডে থাকে, ততক্ষণ Android অটোমেটিক ব্যবহারকারীর কাছে অনুমতি চায়। তবে, চ্যানেল তৈরি করার সময় এবং অনুমতির অনুরোধের ব্যাপারে গুরুত্বপূর্ণ বিষয় মনে রাখতে হবে:

  • আপনার অ্যাপ ব্যাকগ্রাউন্ডে চলার সময় প্রথম বিজ্ঞপ্তি চ্যানেল তৈরি করলে, FCM SDK FCM বিজ্ঞপ্তি পাওয়ার সময় তা করে।Android বিজ্ঞপ্তি দেখাতে দেবে না এবং আপনার অ্যাপ পরের বার না খোলা পর্যন্ত বিজ্ঞপ্তি অনুমতির জন্য ব্যবহারকারীকে প্রম্পট করবে না। এর অর্থ হল, আপনার অ্যাপ খোলার আগে এবং ব্যবহারকারী অনুমতিতে সম্মতি জানানোর আগে পাওয়া যেকোনও বিজ্ঞপ্তি আর দেখা যাবে না।
  • অনুমতির অনুরোধ করার জন্য প্ল্যাটফর্মের API-এর সুবিধা নিতে, আমরা আপনাকে Android 13+ ভার্সনের জন্য আপনার অ্যাপ আপডেট করার জন্য বিশেষভাবে সাজেস্ট করি। এটি সম্ভব না হলে, বিজ্ঞপ্তি অনুমতি ডায়ালগ ট্রিগার করতে এবং কোনও বিজ্ঞপ্তি যাতে মিস না হয় তা নিশ্চিত করতে, অ্যাপে কোনও বিজ্ঞপ্তি পাঠানোর আগে আপনার অ্যাপকে বিজ্ঞপ্তি চ্যানেল তৈরি করতে হবে। আরও তথ্যের জন্য বিজ্ঞপ্তি সংক্রান্ত অনুমতি পেশাদার পদ্ধতি দেখুন।

ঐচ্ছিক: POST_NOTIFICATIONS অনুমতি সরানো

ডিফল্ট হিসেবে, FCM SDK-তে POST_NOTIFICATIONS অনুমতি অন্তর্ভুক্ত থাকে। আপনার অ্যাপ যদি বিজ্ঞপ্তি মেসেজ ব্যবহার না করে (FCM বিজ্ঞপ্তি, অন্য SDK-এর মাধ্যমে অথবা আপনার অ্যাপের মাধ্যমে সরাসরি পোস্ট করা) এবং আপনি যদি চান যে আপনার অ্যাপে অনুমতি অন্তর্ভুক্ত না থাকুক, তাহলে আপনি ম্যানিফেস্ট মার্জারের remove মার্কার ব্যবহার করে এটি সরিয়ে দিতে পারবেন। মনে রাখবেন, এই অনুমতি সরিয়ে দিলে, শুধু FCM বিজ্ঞপ্তি নয়, সব বিজ্ঞপ্তি দেখানো বন্ধ হয়ে যাবে। আপনার অ্যাপের ম্যানিফেস্ট ফাইলে নিম্নলিখিত তথ্য যোগ করুন:

<uses-permission android:name="android.permission.POST_NOTIFICATIONS" tools:node="remove"/>

Firebase ইনস্টলেশন আইডি অ্যাক্সেস করা

আপনার অ্যাপ প্রথমবার চালু করার সময়, FCM SDK অ্যাপ ইনস্ট্যান্সকে FCM-এর সাথে রেজিস্টার করে এবং অ্যাপ ইনস্ট্যান্সের জন্য একটি শনাক্তকারী রিটার্ন করে। আপনি যদি আলাদা আলাদা অ্যাপ ইনস্ট্যান্স টার্গেট করতে চান, তাহলে আপনাকে FirebaseMessagingService এক্সটেন্ড করে এবং onRegistered() ওভাররাইড করে এই শনাক্তকারী অ্যাক্সেস করতে হবে। সেরা প্র্যাক্টিস হিসেবে, লেটেস্ট আপডেট করা শনাক্তকারী রিট্রিভ করুন, কারণ প্রাথমিক স্টার্ট-আপের পরে শনাক্তকারী রোটেট করতে পারে।

Firebase ইনস্টলেশন আইডির মাধ্যমে রেজিস্ট্রেশন চালু করা

FCM-এর সাথে আপনার অ্যাপ ইনস্ট্যান্স রেজিস্টার করার সুবিধা চালু করতে Firebase ইনস্টলেশন আইডি (FID) ব্যবহার করুন, আপনার AndroidManifest.xml ফাইলে নিম্নলিখিত মেটাডেটা ফ্ল্যাগ যোগ করুন:
<meta-data
    android:name="firebase_messaging_installation_id_enabled"
    android:value="true" />

onRegistered() কলব্যাক প্রয়োগ করা

Firebase ইনস্টলেশন আইডি (FID) ব্যবহার করে অ্যাপ ইনস্ট্যান্সকে টার্গেট করা হয়, একবার সেগুলি FCM-এর সাথে রেজিস্টার হয়ে গেলে । রেজিস্ট্রেশনের পরে FID পেতে, onRegistered() কলব্যাক প্রয়োগ করুন। কোনও অ্যাপ ইনস্ট্যান্স রেজিস্টার করা হয়ে গেলে, FCM SDK অটোমেটিক FID পরিবর্তন মনিটর করে এবং কোনও পরিবর্তন শনাক্ত করা হলে কলব্যাক ইনভোক করে। অটোমেটিক ইনিশিয়ালাইজেশন চালু করা থাকলে, FCM SDK অটোমেটিক FCM ব্যাকএন্ডের সাথে সিঙ্ক করে রেজিস্ট্রেশন ফ্রেশ রাখে এবং আপনার অ্যাপ সার্ভারে যাতে বর্তমান শনাক্তকারী থাকে তা নিশ্চিত করতে কলব্যাক ইনভোক করে। FID হারিয়ে যাওয়া বা পুরনো FID থেকে সুরক্ষিত থাকতে, এই কলব্যাক ট্রিগার করলেই আপনার অ্যাপ সার্ভারে FID পাঠানো উচিত।

Kotlin

  /**
   * There are three scenarios when `onRegistered` is called:
   * 1) Every time a manual `register()` call finishes successfully
   * 2) Whenever the FID is changed and the app is re-registered with FCM via the new FID.
   * 3) Automatically on app startup or routine sync when auto-initialization is enabled.
   * Under #2, there are three scenarios when the existing FID is changed:
   * A) App is restored to a new device
   * B) User uninstalls/reinstalls the app
   * C) User clears app data
   */
  override fun onRegistered(installationId: String) {
      Log.d(TAG, "Registered installation ID: $installationId")

      // Send the Firebase Installation ID to your app server.
      sendRegistrationToServer(installationId)
  }
    

জাভা

  /**
   * There are three scenarios when `onRegistered` is called:
   * 1) Every time a manual `register()` call finishes successfully
   * 2) Whenever the FID is changed and the app is re-registered with FCM via the new FID
   * 3) Automatically on app startup or routine sync when auto-initialization is enabled.
   * Under #2, there are three scenarios when the existing FID is changed:
   * A) App is restored to a new device
   * B) User uninstalls/reinstalls the app
   * C) User clears app data
   */
  @Override
  public void onRegistered(@NonNull String installationId) {
      Log.d(TAG, "Registered installation ID: " + installationId);

      // Send the Firebase Installation ID to your app server.
      sendRegistrationToServer(installationId);
  }
    

অটোমেটিক ইনিশিয়ালাইজেশন বন্ধ করা থাকলে ম্যানুয়ালি রেজিস্টার করা

আপনাকে যদি অটো-ইনিশিয়ালাইজেশন বন্ধ করতেই হয়, তাহলে FCM SDK অটোমেটিক সিঙ্ক করবে না বা স্টার্ট-আপে onRegistered() কলব্যাক ট্রিগার করবে না। বিজ্ঞপ্তি সংক্রান্ত অনুমতি দেওয়ার পরে অটোমেটিক ইনিশিয়ালাইজেশন আবার চালু করার জন্য জোরালোভাবে সাজেস্ট করা হয়। আরও জানতে, অটো-ইনিশিয়ালাইজেশন আবার চালু করুন দেখুন।

অটো-ইনিশিয়ালাইজেশন বন্ধ রাখতেই হলে, অ্যাপ চালু হওয়ার সময় FirebaseMessaging.getInstance().register() কল করে onRegistered() কলব্যাকের মাধ্যমে রেজিস্ট্রেশন ও FID ডেলিভারি ট্রিগার করুন। আপনি এই কলটি আপনার মূল Activity-এর onCreate() পদ্ধতির মধ্যে এক্সিকিউট করতে পারবেন।

Kotlin

  // Trigger manual registration if auto-initialization is turned off.
  // Consider calling this every time the app starts to guarantee sync status.
  FirebaseMessaging.getInstance().register()
      .addOnCompleteListener(this) { task ->
        if (!task.isSuccessful()) {
          // Registration failed. Consider retrying the registration with exponential backoff.
          Log.w(TAG, "Failed to register with Firebase Cloud Messaging", task.exception)
        }
        // Success! The Firebase Installation ID can be used to target messages to this app
        // instance and will be delivered asynchronously to your `onRegistered()` callback.
      }
    

জাভা

  // Trigger manual registration if auto-initialization is turned off.
  // Consider calling this every time the app starts to guarantee sync status.
  FirebaseMessaging.getInstance().register()
      .addOnCompleteListener(task -> {
        if (!task.isSuccessful()) {
          // Registration failed. Consider retrying the registration with exponential backoff.
          Log.w(TAG, "Failed to register with Firebase Cloud Messaging", task.exception)
        }
        // Success! The Firebase Installation ID can be used to target messages to this app
        // instance and will be delivered asynchronously to your `onRegistered()` callback.
      });
    

FCM রেজিস্ট্রেশন টোকেন (সচল নয়) অ্যাক্সেস করা

আপনার অ্যাপ প্রথমবার চালু করার সময়, FCM SDK ক্লায়েন্ট অ্যাপ ইনস্ট্যান্সের জন্য একটি রেজিস্ট্রেশন টোকেন তৈরি করে। আপনি যদি কোনও অ্যাপের একটি ইনস্ট্যান্সকে টার্গেট করতে চান বা ডিভাইস গ্রুপ তৈরি করতে চান, তাহলে আপনাকে FirebaseMessagingService এবং ওভাররাইড onNewToken এক্সটেন্ড করে এই টোকেন অ্যাক্সেস করতে হবে। প্রাথমিক স্টার্ট-আপের পরে টোকেনটি রোটেট করা হতে পারে, তাই আপনাকে লেটেস্ট আপডেট করা রেজিস্ট্রেশন টোকেনটি রিট্রিভ করার জন্য অত্যন্ত সাজেস্ট করা হচ্ছে।

নিম্নলিখিত কারণে রেজিস্ট্রেশন টোকেন পরিবর্তন হতে পারে:

  • নতুন ডিভাইসে অ্যাপটি রিস্টোর করা হয়
  • ব্যবহারকারী অ্যাপটি আনইনস্টল/আবার ইনস্টল করেন
  • ব্যবহারকারী অ্যাপ ডেটা মুছে দেন।

বর্তমান রেজিস্ট্রেশন টোকেন ফিরিয়ে আনা

বর্তমান টোকেন রিট্রিভ করার প্রয়োজন হলে, FirebaseMessaging.getInstance().getToken()-কে কল করুন:

Kotlin

FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
    if (!task.isSuccessful) {
        Log.w(TAG, "Fetching FCM registration token failed", task.exception)
        return@OnCompleteListener
    }

    // Get new FCM registration token
    val token = task.result

    // Log and toast
    val msg = getString(R.string.msg_token_fmt, token)
    Log.d(TAG, msg)
    Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show()
})

Java

FirebaseMessaging.getInstance().getToken()
    .addOnCompleteListener(new OnCompleteListener<String>() {
        @Override
        public void onComplete(@NonNull Task<String> task) {
          if (!task.isSuccessful()) {
            Log.w(TAG, "Fetching FCM registration token failed", task.getException());
            return;
          }

          // Get new FCM registration token
          String token = task.getResult();

          // Log and toast
          String msg = getString(R.string.msg_token_fmt, token);
          Log.d(TAG, msg);
          Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
        }
    });

টোকেন জেনারেশন মনিটর করা

নতুন টোকেন তৈরি হলেই onNewToken কলব্যাক ফায়ার হয়।

Kotlin

/**
 * Called if the FCM registration token is updated. This may occur if the security of
 * the previous token had been compromised. Note that this is called when the
 * FCM registration token is initially generated so this is where you would retrieve the token.
 */
override fun onNewToken(token: String) {
    Log.d(TAG, "Refreshed token: $token")

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // FCM registration token to your app server.
    sendRegistrationToServer(token)
}

Java

/**
 * There are two scenarios when onNewToken is called:
 * 1) When a new token is generated on initial app startup
 * 2) Whenever an existing token is changed
 * Under #2, there are three scenarios when the existing token is changed:
 * A) App is restored to a new device
 * B) User uninstalls/reinstalls the app
 * C) User clears app data
 */
@Override
public void onNewToken(@NonNull String token) {
    Log.d(TAG, "Refreshed token: " + token);

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // FCM registration token to your app server.
    sendRegistrationToServer(token);
}

টোকেন পাওয়ার পরে, আপনি এটি অ্যাপ সার্ভারে পাঠাতে এবং আপনার পছন্দের পদ্ধতি ব্যবহার করে এটি সেভ করতে পারবেন।

Google Play পরিষেবা চেক করা

যেসব অ্যাপ Play Services SDK-এর উপর নির্ভর করে, সেগুলিকে Google Play পরিষেবা ফিচার অ্যাক্সেস করার আগে ডিভাইসে সবসময় মানানসই Google Play পরিষেবা APK আছে কিনা তা চেক করে নিতে হবে। আরও জানতে, Google Play পরিষেবা সেট-আপ করা দেখুন। এটি দুটি জায়গায় করার সাজেশন দেওয়া হয়: মূল অ্যাক্টিভিটির onCreate() পদ্ধতিতে এবং এর onResume() পদ্ধতিতে। onCreate()চেক-ইন করার মাধ্যমে এটি নিশ্চিত করা হয় যে, সফলভাবে চেক না করে অ্যাপটি ব্যবহার করা যাবে না। onResume()-এ চেক করে নিশ্চিত করা হয় যে ব্যবহারকারী যদি ব্যাক বোতামের মতো অন্য কোনও উপায়ে চলমান অ্যাপে ফিরে আসেন, তাহলে চেকটি এখনও পারফর্ম করা হয়।

ডিভাইসে Google Play পরিষেবার মানানসই ভার্সন না থাকলে, আপনার অ্যাপ GoogleApiAvailability.makeGooglePlayServicesAvailable() কল করতে পারে যাতে ব্যবহারকারীরা Play Store থেকে Google Play পরিষেবা ডাউনলোড করতে পারেন।

অটোমেটিক শুরু হওয়া আটকানো

FCM রেজিস্ট্রেশন তৈরি হলে, লাইব্রেরি Firebase-এ আইডেন্টিফায়ার ও কনফিগারেশন ডেটা আপলোড করে। আপনি যদি অটোমেটিক রেজিস্ট্রেশন বন্ধ করতে চান, তাহলে Analytics সংগ্রহ করা ও FCM অটোমেটিক চালু করা বন্ধ করুন (আপনাকে দুটিই বন্ধ করতে হবে)। এর জন্য আপনার AndroidManifest.xml-এ এইসব মেটাডেটা ভ্যালু যোগ করুন:

<meta-data
    android:name="firebase_messaging_auto_init_enabled"
    android:value="false" />
<meta-data
    android:name="firebase_analytics_collection_enabled"
    android:value="false" />

অটোমেটিক ইনিশিয়ালাইজেশন আবার চালু করা

FCM অটো-ইনিট আবার চালু করতে, রানটাইম কল করুন:

Kotlin

Firebase.messaging.isAutoInitEnabled = true

Java

FirebaseMessaging.getInstance().setAutoInitEnabled(true);

Analytics সংক্রান্ত তথ্য সংগ্রহ আবার চালু করতে, FirebaseAnalytics ক্লাসের setAnalyticsCollectionEnabled() মেথড কল করুন। যেমন:

setAnalyticsCollectionEnabled(true);

এইসব ভ্যালু একবার সেট করা হয়ে গেলে, অ্যাপ রিস্টার্ট করা হলেও সেগুলি থেকে যায়।

বিজ্ঞপ্তি মেসেজ পাঠানো

আপনার Android ক্লায়েন্ট সঠিকভাবে সেট-আপ করা হয়েছে কিনা তা নিশ্চিত করতে, নিম্নলিখিত নির্দেশাবলী ব্যবহার করে আপনি একটি টেস্ট বিজ্ঞপ্তি মেসেজ পাঠাতে পারেন:

  1. টার্গেট ডিভাইসে অ্যাপটি ইনস্টল করে চালান।

  2. ডিভাইসে অ্যাপটি ব্যাকগ্রাউন্ডে চলছে কিনা তা নিশ্চিত করুন।

  3. Firebase কনসোলে গিয়ে DevOps ও এনগেজমেন্ট > মেসেজিং বিকল্পে যান

  4. ক্যাম্পেন তৈরি করুন।

    • এটি আপনার প্রথম মেসেজ হলে:

      1. আপনার প্রথম ক্যাম্পেন তৈরি করুন বিকল্প বেছে নিন।

      2. Firebase বিজ্ঞপ্তি মেসেজ বেছে নিয়ে তৈরি করুন বিকল্প বেছে নিন।

    • আপনি আগে ক্যাম্পেন তৈরি করে থাকলে:

      1. ক্যাম্পেন ট্যাবে গিয়ে নতুন ক্যাম্পেন বিকল্প বেছে নিন।

      2. বিজ্ঞপ্তি বিকল্পে ক্লিক করুন।

  5. মেসেজের টেক্সট লিখুন। অন্যান্য সব ফিল্ড ঐচ্ছিক।

  6. ডানদিকের প্যানেল থেকে পরীক্ষামূলক মেসেজ পাঠান বিকল্প বেছে নিন।

  7. FCM রেজিস্ট্রেশন টোকেন যোগ করুন লেবেল করা ফিল্ডে, এই গাইডের আগের বিভাগে আপনি যে রেজিস্ট্রেশন টোকেন পেয়েছেন সেটি লিখুন।

  8. টেস্ট বিকল্প বেছে নিন।

টার্গেট করা ক্লায়েন্ট ডিভাইসে, ব্যাকগ্রাউন্ডে অ্যাপ চালু থাকলে, বিজ্ঞপ্তি পাওয়ার কথা।

আপনার অ্যাপে মেসেজ ডেলিভারি সংক্রান্ত ইনসাইট পেতে, Firebase কনসোলে DevOps ও এনগেজমেন্ট > মেসেজিং > রিপোর্ট ড্যাশবোর্ডে যান। এই ড্যাশবোর্ড Apple ও Android ডিভাইসে পাঠানো ও খোলা মেসেজের সংখ্যা রেকর্ড করে। এর সাথে Android অ্যাপের জন্য "ইম্প্রেশন" (ব্যবহারকারীদের দেখা বিজ্ঞপ্তি) সংক্রান্ত ডেটাও রেকর্ড করে।

পরবর্তী ধাপ

সেট-আপ ধাপগুলি সম্পূর্ণ করার পরে, Android-এর জন্য FCM-এর সাথে এগিয়ে যাওয়ার জন্য এখানে কয়েকটি বিকল্প দেওয়া হল: