Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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

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

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

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

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

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

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

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

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

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

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

درخواست ارسال HTTP

ارسال درخواست مانند زیر به 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 منحصر به فرد در هر برنامه سرویس گیرنده است که اگر شما برنامه های سرویس گیرنده های متعدد برای همان ID فرستنده . این اطمینان می دهد که پیامها فقط به برنامه مورد نظر می روند.

قالب پاسخگویی

درخواست موفق گرداند 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 برای یک نام کلید اعلان ، سرور یک رشته رمزگذاری شده منحصر به فرد را برمی گرداند. اگرچه ممکن است به نظر برسد که هر رشته یک کلید متفاوت است ، اما در واقع یک مقدار `notification_key` معتبر است.

افزودن و حذف دستگاه ها از گروه دستگاه

برای افزودن یا حذف دستگاه از یک گروه موجود، یک درخواست POST با ارسال operation مجموعه پارامتر به add و یا remove ، و ارائه نشانه ثبت نام برای افزودن یا حذف.

درخواست ارسال HTTP

برای مثال، برای اضافه کردن یک دستگاه با ثبت نام رمز 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 پاسخ HTTP

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

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

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

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

زمانی که یک پیام نتواند به به یک یا چند از ثبت نام نشانه با یک همراه تحویل داده می شود notification_key ، سرور برنامه باید با backoff بین مجدد دوباره سعی کنید.

اگر سرور سعی کند پیامی را به گروه دستگاهی ارسال کند که هیچ عضوی ندارد ، پاسخ به شکل زیر است ، با 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 ثبت نام نشانه با آن همراه است. پیام فقط با موفقیت به 1 مورد از علائم ثبت نام ارسال شد. پیام پاسخ نشانه های ثبت نامی را که در دریافت پیام ناموفق بودند نشان می دهد:

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

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

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

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

برای ارسال پیام های بالادست به گروه های دستگاه در iOS، برنامه مشتری در iOS نیاز به پیاده سازی FIRMessaging.sendMessage :

(void)sendMessage:(nonnull NSDictionary *)message
     to:(nonnull NSString *)receiver
withMessageID:(nonnull NSString *)messageID
timeToLive:(int64_t)ttl;