Catch up on highlights from Firebase at Google I/O 2023. Learn more

به گروه های دستگاه در Unity پیام بفرستید

پیام‌رسانی گروه دستگاه به شما امکان می‌دهد چندین دستگاه را به یک گروه اضافه کنید. این شبیه به پیام‌رسانی موضوع است، اما شامل احراز هویت است تا اطمینان حاصل شود که عضویت گروه فقط توسط سرورهای شما مدیریت می‌شود. به عنوان مثال، اگر می خواهید پیام های مختلفی را به مدل های مختلف تلفن ارسال کنید، سرورهای شما می توانند ثبت نام ها را به گروه های مربوطه اضافه یا حذف کنند و پیام مناسب را برای هر گروه ارسال کنند. پیام‌رسانی گروه دستگاه با پیام‌رسانی موضوعی متفاوت است زیرا شامل مدیریت گروه‌های دستگاه از سرورهای شما به جای مستقیماً در برنامه شما است.

می‌توانید از پیام‌رسانی گروه دستگاه از طریق پروتکل‌های قدیمی XMPP یا HTTP در سرور برنامه خود استفاده کنید. نسخه‌های قدیمی‌تر Firebase Admin SDK برای Node.js مبتنی بر پروتکل‌های قدیمی هستند و همچنین قابلیت‌های پیام‌رسانی گروه دستگاه را ارائه می‌کنند. حداکثر تعداد اعضای مجاز برای یک کلید اعلان 20 نفر است.

مدیریت گروه های دستگاه

قبل از ارسال پیام به گروه دستگاه، باید:

  1. برای هر دستگاهی که می خواهید به گروه اضافه کنید، نشانه های ثبت نام را دریافت کنید.

  2. notification_key را ایجاد کنید، که گروه دستگاه را با نگاشت یک گروه خاص (معمولاً یک کاربر) به همه نشانه‌های ثبت نام مرتبط با گروه شناسایی می‌کند. می توانید کلیدهای اعلان را در سرور برنامه ایجاد کنید.

مدیریت اولیه گروه‌های دستگاه - ایجاد و حذف گروه‌ها، و افزودن یا حذف دستگاه‌ها - از طریق سرور برنامه انجام می‌شود. برای فهرستی از کلیدهای پشتیبانی شده به مرجع پروتکل HTTP قدیمی مراجعه کنید.

مدیریت گروه های دستگاه در سرور برنامه

ایجاد گروه دستگاه

برای ایجاد یک گروه دستگاه، یک درخواست POST ارسال کنید که نامی برای گروه و لیستی از نشانه های ثبت نام برای دستگاه ها ارائه می کند. FCM یک notification_key جدید برمی گرداند که نشان دهنده گروه دستگاه است.

درخواست HTTP POST

درخواستی مانند زیر را به https://fcm.googleapis.com/fcm/notification ارسال کنید:

https://fcm.googleapis.com/fcm/notification
Content-Type:application/json
Authorization:key=API_KEY
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
Authorization:key=API_KEY
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"
}

ارسال پیام های پایین دستی به گروه های دستگاه

ارسال پیام به یک گروه دستگاه بسیار شبیه به ارسال پیام به یک دستگاه جداگانه است. پارامتر to روی کلید اعلان یکتا برای گروه دستگاه تنظیم کنید. برای جزئیات بیشتر در مورد پشتیبانی بار به انواع پیام مراجعه کنید. مثال‌های موجود در این صفحه نحوه ارسال پیام‌های داده به گروه‌های دستگاه در پروتکل‌های قدیمی HTTP و XMPP را نشان می‌دهند.

درخواست HTTP POST گروه دستگاه

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{
  "to": "aUniqueKey",
  "data": {
    "hello": "This is a Firebase Cloud Messaging Device Group Message!",
   }
}

پاسخ HTTP گروه دستگاه

در اینجا یک مثال از "موفقیت" آمده است - notification_key دارای 2 نشانه ثبت نام مرتبط با آن است و پیام با موفقیت برای هر دوی آنها ارسال شد:

{
  "success": 2,
  "failure": 0
}

در اینجا یک مثال از "موفقیت جزئی" آمده است - notification_key دارای 3 نشانه ثبت نام مرتبط با آن است. پیام فقط به یکی از نشانه های ثبت نام با موفقیت ارسال شد. پیام پاسخ، نشانه‌های ثبت نام ( registration_ids ) را که موفق به دریافت پیام نشده‌اند، فهرست می‌کند:

{
  "success":1,
  "failure":2,
  "failed_registration_ids":[
     "regId1",
     "regId2"
  ]
}

هنگامی که پیامی به یک یا چند نشانه ثبت نام مرتبط با یک notification_key تحویل داده نمی‌شود، سرور برنامه باید با پشتیبان بین تلاش‌های مجدد، مجدداً تلاش کند.

اگر سرور بخواهد پیامی را به گروه دستگاهی که هیچ عضوی ندارد ارسال کند، پاسخ به شکل زیر است، با 0 موفقیت و 0 شکست:

{
  "success": 0,
  "failure": 0
}

پیام XMPP گروه دستگاه

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "to": "aUniqueKey",
      "message_id": "m-1366082849205" ,
      "data": {
          "hello":"This is a Firebase Cloud Messaging Device Group Message!"
      }
  }
  </gcm>
</message>

پاسخ XMPP گروه دستگاه

هنگامی که پیام با موفقیت به یکی از دستگاه های گروه ارسال می شود، سرور اتصال XMPP با یک ACK پاسخ می دهد. اگر همه پیام‌های ارسال شده به همه دستگاه‌های گروه ناموفق باشند، سرور اتصال XMPP با NACK پاسخ می‌دهد.

در اینجا یک مثال از "موفقیت" آمده است - notification_key دارای 3 نشانه ثبت نام مرتبط با آن است و پیام با موفقیت برای همه آنها ارسال شد:

{
  "from": "aUniqueKey",
  "message_type": "ack",
  "success": 3,
  "failure": 0,
  "message_id": "m-1366082849205"
}

در اینجا یک مثال از "موفقیت جزئی" آمده است - notification_key دارای 3 نشانه ثبت نام مرتبط با آن است. پیام فقط به یکی از نشانه های ثبت نام با موفقیت ارسال شد. پیام پاسخ، نشانه های ثبت نامی را که پیام را دریافت نکرده اند فهرست می کند:

{
  "from": "aUniqueKey",
  "message_type": "ack",
  "success":1,
  "failure":2,
  "failed_registration_ids":[
     "regId1",
     "regId2"
  ]
}

وقتی سرور اتصال FCM نتواند به همه دستگاه‌های گروه تحویل دهد. سرور برنامه یک پاسخ ناک دریافت خواهد کرد.

برای لیست کامل گزینه های پیام، اطلاعات مرجع پروتکل سرور اتصال انتخابی خود، HTTP یا XMPP را ببینید.

ارسال پیام های بالادستی به گروه های دستگاه

برنامه های سرویس گیرنده می توانند با هدف قرار دادن پیام ها به کلید اعلان مناسب در فیلد 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);