إرسال رسائل إلى مجموعات الأجهزة على Unity

تتيح لك ميزة المراسلة ضمن مجموعة الأجهزة إضافة أجهزة متعددة إلى مجموعة واحدة. يشبه ذلك المراسلة حسب المواضيع، ولكنّه يتضمّن مصادقة لضمان أنّه لا تدير خوادمك سوى عضوية المجموعة. على سبيل المثال، إذا كنت تريد إرسال رسائل مختلفة إلى طُرز هواتف مختلفة، يمكن لخوادمك إضافة/إزالة تسجيلات إلى المجموعات المناسبة وإرسال الرسالة المناسبة إلى كل مجموعة. تختلف المراسلة مع مجموعات الأجهزة عن المراسلة حسب المواضيع من حيث أنّها تتضمن إدارة مجموعات الأجهزة من خوادمك بدلاً من استخدام تطبيقك مباشرةً.

الحد الأقصى لعدد الأعضاء المسموح به لمفتاح الإشعار هو 20.

إدارة مجموعات الأجهزة

قبل إرسال الرسائل إلى مجموعة أجهزة، عليك تنفيذ ما يلي:

  1. احصل على الرموز المميّزة للتسجيل لكل جهاز تريد إضافته إلى المجموعة.

  2. أنشئ notification_key الذي يحدِّد مجموعة الأجهزة من خلال ربط مجموعة معيّنة (عادةً مستخدم) بجميع الرموز المميّزة المرتبطة بالتسجيل للمجموعة. يمكنك إنشاء مفاتيح الإشعارات في خادم التطبيقات.

يتم تنفيذ الإدارة الأساسية لمجموعات الأجهزة، مثل إنشاء المجموعات وإزالتها وإضافة الأجهزة أو إزالتها، من خلال HTTP v1 API، باستخدام الرموز المميّزة القصيرة الأجل من أجل تفويض طلبات الإرسال. اطّلِع على مفاتيح إدارة مجموعات الأجهزة للحصول على قائمة بالمفاتيح المتوافقة.

إدارة مجموعات الأجهزة على خادم التطبيقات

إنشاء مجموعة أجهزة

لإنشاء مجموعة أجهزة، أرسِل طلب POST يقدّم اسمًا للمجموعة وقائمة برموز التسجيل للأجهزة. تعرض الدالة FCM رمز notification_key جديدًا يمثّل مجموعة الأجهزة.

طلب HTTP POST

أرسِل طلبًا على النحو التالي إلى https://fcm.googleapis.com/fcm/notification:

https://fcm.googleapis.com/fcm/notification
Content-Type:application/json
access_token_auth: true
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
project_id:SENDER_ID

{
   "operation": "create",
   "notification_key_name": "appUser-Chris",
   "registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
                        "cR1rjyj4_Kc:APA91bGusqbypSuMdsh7jSNrW4nzsM...",
                        ... ]

العنصر notification_key_name هو اسم أو معرّف (مثل اسم مستخدم) فريد لمجموعة معيّنة. notification_key_name وnotification_key فريدان لمجموعة من الرموز المميّزة لتسجيل الأجهزة. من المهم أن يكون notification_key_name مختلفًا لكل تطبيق عميل إذا كانت لديك تطبيقات عملاء متعددة لمعرّف المُرسِل نفسه. ويضمن هذا عدم وصول الرسائل إلا إلى التطبيق المستهدَف المقصود.

تنسيق الردّ

يعرض الطلب الناجح notification_key مثل ما يلي:

{
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}

احفظ السمة notification_key وسمة notification_key_name المقابلة لاستخدامهما في العمليات اللاحقة.

استرداد مفتاح إشعار

إذا كنت بحاجة إلى استرداد مفتاح إشعار حالي، استخدِم العنصر notification_key_name في طلب GET كما هو موضَّح:

https://fcm.googleapis.com/fcm/notification?notification_key_name=appUser-Chris
Content-Type:application/json
access_token_auth: true
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
project_id:SENDER_ID
{}

لكل طلب GET لاسم مفتاح إشعار معيّن، يعرض الخادم سلسلة فريدة مُشفَّرة. ومع أنّ كل سلسلة قد تبدو كمفتاح مختلف، فإنّها في الواقع قيمة "مفتاح_إشعار" صالحة.

إضافة الأجهزة وإزالتها من مجموعة أجهزة

لإضافة أجهزة أو إزالتها من مجموعة حالية، أرسِل طلب POST وحدِّد المَعلمة operation على add أو remove، وقدِّم علامات تسجيل للإضافة أو الإزالة.

طلب HTTP POST

على سبيل المثال، لإضافة جهاز يتضمّن الرمز المميّز للتسجيل bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1... إلى appUser-Chris، سيتم إرسال هذا الطلب:

{
   "operation": "add",
   "notification_key_name": "appUser-Chris",
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
   "registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."]
}

تنسيق الردّ

يؤدي الطلب الناجح لإضافة جهاز أو إزالته إلى عرض notification_key على النحو التالي:

{
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}

مفاتيح إدارة مجموعة الأجهزة

يسرد الجدول التالي مفاتيح إنشاء مجموعات الأجهزة وإضافة الأعضاء وإزالتهم.

الجدول 10: مفاتيح إدارة مجموعات الأجهزة.

المَعلمة الاستخدام الوصف
operation مطلوب، سلسلة العملية المطلوب تنفيذها. القيم الصالحة هي create add وremove.
notification_key_name مطلوب، سلسلة الاسم الذي يحدّده المستخدم لمجموعة الأجهزة المطلوب إنشاؤها أو تعديلها.
notification_key مطلوبة (باستثناء عملية create، سلسلة المعرّف الفريد لمجموعة الأجهزة يتم عرض هذه القيمة في الاستجابة لنجاح عملية create ، وهي مطلوبة لجميع العمليات اللاحقة على مجموعة الأجهزة.
registration_ids مطلوب، مصفوفة من السلاسل الرموز المميّزة للجهاز المطلوب إضافتها أو إزالتها إذا أزلت جميع رموزها المميَّزة الحالية للتسجيل من مجموعة أجهزة، تحذف خدمة "إرسال الرسائل إلى الأجهزة الجوّالة من Google" مجموعة الأجهزة.

إرسال الرسائل إلى مجموعات الأجهزة

لإرسال رسائل إلى مجموعات أجهزة، استخدِم HTTP v1 API. إذا كنت في الوقت الحالي تُرسِل الرسائل إلى مجموعات الأجهزة باستخدام واجهات برمجة التطبيقات القديمة المتوقّفة نهائيًا لإرسال رسائل بروتوكول HTTP أو XMPP أو أي من الإصدارات القديمة من واجهة برمجة التطبيقات Firebase Admin SDK لـ Node.js استنادًا إلى البروتوكولات القديمة، ننصحك بشدة بالانتقال إلى واجهة برمجة التطبيقات HTTP v1 API في أقرب فرصة ممكنة. سيتم إيقاف واجهات برمجة التطبيقات القديمة المخصّصة للإرسال وإزالتها في حزيران (يونيو) 2024.

يشبه إرسال الرسائل إلى مجموعة أجهزة إلى حد كبير إرسال الرسائل إلى جهاز فردي، وذلك باستخدام الطريقة نفسها لتفويض طلبات الإرسال. اضبط الحقل token على مفتاح إشعار المجموعة:

REST

POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1

Content-Type: application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA

{
   "message":{
      "token":"APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
      "data":{
        "hello": "This is a Firebase Cloud Messaging device group message!"
      }
   }
}

أمر cURL

curl -X POST -H "Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA" -H "Content-Type: application/json" -d '{
"message":{
   "data":{
     "hello": "This is a Firebase Cloud Messaging device group message!"
   },
   "token":"APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}}' https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send

إرسال الرسائل إلى مجموعات الأجهزة

يمكن لتطبيقات العميل إرسال الرسائل إلى مجموعات الأجهزة من خلال توجيه الرسائل إلى مفتاح الإشعار المناسب في حقل to.

تُرسِل المكالمة التالية إلى FCM رسالة صعوديًا إلى مفتاح إشعار.

Firebase.Messaging.Message message;
message.To = notification_key;
message.MessageId = a_unique_message_id;
message.Data["hello"] = "world";
Firebase.Messaging.FirebaseMessaging.Send(message);