অ্যান্ড্রয়েডে আপস্ট্রিম বার্তা পাঠানো হচ্ছে

যদি আপনার অ্যাপ সার্ভার XMPP সংযোগ সার্ভার প্রোটোকল প্রয়োগ করে, তাহলে এটি ব্যবহারকারীর ডিভাইস থেকে ক্লাউডে আপস্ট্রিম বার্তাগুলি গ্রহণ করতে পারে। একটি আপস্ট্রিম বার্তা শুরু করতে, ক্লায়েন্ট অ্যাপ নিম্নলিখিতগুলি সম্বলিত একটি অনুরোধ পাঠায়:

  • SENDER_ID@fcm.googleapis.com ফরম্যাটে প্রাপক অ্যাপ সার্ভারের ঠিকানা।
  • একটি বার্তা আইডি যা প্রতিটি প্রেরকের আইডির জন্য অনন্য হওয়া উচিত।
  • বার্তার পেলোডের মূল-মান জোড়া সমন্বিত বার্তা ডেটা।

যখন এটি এই ডেটা গ্রহণ করে, FCM অ্যাপ সার্ভারে পাঠানোর জন্য একটি XMPP স্তবক তৈরি করে, পাঠানো ডিভাইস এবং অ্যাপ সম্পর্কে কিছু অতিরিক্ত তথ্য যোগ করে।

একটি Android ক্লায়েন্ট অ্যাপ থেকে একটি আপস্ট্রিম বার্তা পাঠান

আপনার Android অ্যাপ FirebaseMessaging.send ব্যবহার করে একটি আপস্ট্রিম বার্তা পাঠাতে পারে:

Kotlin+KTX

val fm = Firebase.messaging
fm.send(
    remoteMessage("$SENDER_ID@fcm.googleapis.com") {
        setMessageId(messageId.toString())
        addData("my_message", "Hello World")
        addData("my_action", "SAY_HELLO")
    },
)

Java

FirebaseMessaging fm = FirebaseMessaging.getInstance();
fm.send(new RemoteMessage.Builder(SENDER_ID + "@fcm.googleapis.com")
        .setMessageId(Integer.toString(messageId))
        .addData("my_message", "Hello World")
        .addData("my_action","SAY_HELLO")
        .build());

আপস্ট্রিম বার্তা কলব্যাক পরিচালনা করুন

FirebaseMessaging মাধ্যমে, আপনি আপস্ট্রিম বার্তাগুলির স্থিতি পরীক্ষা করতে onMessageSent এবং onSendError কলব্যাকগুলি প্রয়োগ করতে পারেন। ত্রুটির ক্ষেত্রে, onSendError একটি ত্রুটি কোড সহ একটি SendException প্রদান করে। উদাহরণস্বরূপ, যদি ক্লায়েন্ট 20-বার্তার সীমা অতিক্রম করার পরে আরও বার্তা পাঠানোর চেষ্টা করে, তবে এটি SendException#ERROR_TOO_MANY_MESSAGES প্রদান করে।

যে ক্ষেত্রে ডিভাইসটি অফলাইন থাকে বা FCM পরিষেবা আপনার সার্ভারে আপস্ট্রিম মেসেজ ফরওয়ার্ড করার জন্য অনুপলব্ধ থাকে, Android ক্লায়েন্ট অ্যাপ ইনস্ট্যান্স সর্বাধিক 20টি পেন্ডিং মেসেজ জমা করতে পারে। যদি এই ধরনের বার্তা FCM সফলভাবে পাঠানোর আগেই মেয়াদ শেষ হয়ে যায়, onSendError SendException#ERROR_TTL_EXCEEDED ফেরত দেয়।

নেটওয়ার্ক ব্যবহার অপ্টিমাইজ করতে, FCM onMessageSent এবং onSendError এ প্রতিক্রিয়া ব্যাচ করে, তাই প্রতিটি বার্তার জন্য স্বীকারোক্তি তাৎক্ষণিক নাও হতে পারে।

অ্যাপ সার্ভারে XMPP বার্তা পান

যখন FCM একটি ক্লায়েন্ট অ্যাপ থেকে একটি আপস্ট্রিম মেসেজিং কল পায়, তখন এটি আপস্ট্রিম বার্তা পাঠানোর জন্য প্রয়োজনীয় XMPP স্তবক তৈরি করে। FCM category এবং ক্ষেত্রগুলি from যোগ করে এবং তারপরে অ্যাপ সার্ভারে নিম্নলিখিতগুলির মতো একটি স্তবক পাঠায়:

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "category":"com.example.yourapp", // to know which app sent it
      "data":
      {
          "hello":"world",
      },
      "message_id":"m-123",
      "from":"REGID"
  }
  </gcm>
</message>

একটি ACK বার্তা পাঠানো হচ্ছে

উপরের মত একটি আপস্ট্রিম বার্তার প্রতিক্রিয়া হিসাবে, অ্যাপ সার্ভারকে অবশ্যই একই সংযোগ ব্যবহার করে একটি ACK বার্তা পাঠাতে হবে যাতে অনন্য বার্তা আইডি রয়েছে৷ যদি FCM একটি ACK না পায়, তাহলে এটি অ্যাপ সার্ভারে বার্তা পাঠানোর পুনরায় চেষ্টা করতে পারে।

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "to":"REGID",
      "message_id":"m-123"
      "message_type":"ack"
  }
  </gcm>
</message>

আপস্ট্রিম বার্তা সিনট্যাক্স সম্পর্কে আরও তথ্যের জন্য XMPP সংযোগ সার্ভার রেফারেন্স দেখুন।