Check out what’s new from Firebase at Google I/O 2022. Learn more

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

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

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

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

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

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

জাভা

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());

কোটলিন+কেটিএক্স

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")
})

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

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

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

নেটওয়ার্ক ব্যবহার অপ্টিমাইজ করতে, এফসিএম ব্যাচ প্রতিক্রিয়াগুলি 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 সংযোগ সার্ভার রেফারেন্স দেখুন।