Google is committed to advancing racial equity for Black communities. See how.
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

إرسال رسائل المنبع على Android

إذا كان خادم التطبيق الخاص بك ينفذ بروتوكول خادم اتصال 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());

Kotlin + KTX

val fm = FirebaseMessaging.getInstance()
fm.send(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 . في حالات الخطأ ، يقوم onSendError بإرجاع SendException مع رمز خطأ. على سبيل المثال ، إذا SendException#ERROR_TOO_MANY_MESSAGES العميل إرسال المزيد من الرسائل بعد الوصول إلى حد 20 رسالة ، فإنه يقوم بإرجاع SendException#ERROR_TOO_MANY_MESSAGES .

في الحالات التي يكون فيها الجهاز غير متصل بالإنترنت أو خدمة FCM غير متاحة لإعادة توجيه الرسائل الأولية إلى الخادم الخاص بك ، يمكن لمثيلات تطبيق عميل Android تجميع 20 رسالة معلقة بحد أقصى. إذا انتهت صلاحية هذه الرسائل قبل أن تتمكن FCM من إرسالها بنجاح ، فإن onSendError تُرجع SendException#ERROR_TTL_EXCEEDED .

لتحسين استخدام الشبكة ، onMessageSent FCM الردود إلى onMessageSent و onSendError ، لذلك قد لا يكون الإقرار فوريًا لكل رسالة.

تلقي رسائل XMPP على خادم التطبيق

عندما يتلقى FCM مكالمة رسائل أولية من تطبيق عميل ، فإنه ينشئ مقطع XMPP الضروري لإرسال رسالة المنبع. FCM يضيف category و from الحقول، ومن ثم يرسل مقطع كما يلي بخادم التطبيق:

040933377 أ

إرسال رسالة ACK

استجابةً لرسالة أولية مثل المذكورة أعلاه ، يجب أن يستخدم خادم التطبيق نفس الاتصال لإرسال رسالة ACK تحتوي على معرف الرسالة الفريد. إذا لم تستلم FCM ACK ، فقد تعيد محاولة إرسال الرسالة إلى خادم التطبيق.

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

راجع مرجع خادم اتصال XMPP للحصول على مزيد من المعلومات حول بناء جملة الرسائل الأولية.