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

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

برای مثال، اگر می‌خواهید پیام‌های مختلفی به مدل‌های مختلف تلفن ارسال کنید، کارسازهایتان می‌توانند ثبت‌نام‌ها را به گروه‌های مناسب اضافه کنند یا از آن‌ها بردارند و پیام مناسب را به هر گروه ارسال کنند. پیام‌رسانی گروه دستگاه با پیام‌رسانی موضوعی تفاوت دارد، زیرا در پیام‌رسانی گروه دستگاه، گروه‌های دستگاه از سرورهای شما مدیریت می‌شوند، نه مستقیماً در برنامه شما.

حداکثر تعداد اعضای مجاز برای کلید اعلان ۲۰ نفر است.

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

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

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

درحال بازیابی FCM کد برای گروه‌های دستگاه

اگر باید FCM دارایی متعلق به گروه دستگاه را بازیابی کنید، از notification_key در درخواست GET به‌صورت زیر استفاده کنید:

https://fcm.googleapis.com/fcm/notification?notification_key=APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ
Content-Type:application/json
access_token_auth: true
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
project_id:SENDER_ID
{}

پاسخ به این شکل است:

{
   "notification_key_name": "appUser-Chris",
   "registration_ids": ["token1", "token2"]
}

افزودن و برداشتن دستگاه‌ها از گروه دستگاه

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

درخواست HTTP POST

برای مثال، برای افزودن دستگاهی با کد ثبت bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1... به appUser-Chris، این درخواست را ارسال می‌کنید:

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": "add",
   "notification_key_name": "appUser-Chris",
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
   "registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."]
}
قالب پاسخ

درصورت موفقیت‌آمیز بودن درخواست افزودن یا برداشتن دستگاه، notification_key مانند مورد زیر برمی‌گرداند:

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

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

جدول زیر کلیدهای ایجاد گروه‌های دستگاه و افزودن و برداشتن اعضا را فهرست می‌کند.

پارامتر کاربرد شرح
operation الزامی، رشته عملیاتی که باید اجرا شود.مقادیر معتبر عبارت‌اند از create، add، و remove.
notification_key_name الزامی، رشته نام تعریف‌شده توسط کاربر برای گروه دستگاهی که باید ایجاد یا اصلاح شود.
notification_key الزامی (به‌جز برای عملیات create، رشته) شناسه یکتای گروه دستگاه. این مقدار در پاسخ به عملیات موفق create برگردانده می‌شود و برای همه عملیات‌های بعدی در گروه دستگاه الزامی است.
registration_ids الزامی، آرایه رشته‌ها نشانه‌های دستگاه برای افزودن یا برداشتن. اگر همه نشان‌های ثبت موجود را از گروه دستگاهی بردارید، FCM گروه دستگاه را حذف می‌کند.

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

ارسال پیام به گروه دستگاه بسیار شبیه به ارسال پیام به یک دستگاه فردی است و از همان روش برای مجوز دادن به درخواست‌های ارسال استفاده می‌کند. فیلد 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