پیامرسانی گروهی دستگاهها به شما امکان میدهد چندین دستگاه را به یک گروه واحد اضافه کنید. این روش مشابه پیامرسانی موضوعی است، اما شامل احراز هویت میشود تا اطمینان حاصل شود که عضویت در گروه فقط توسط سرورهای شما مدیریت میشود.
برای مثال، اگر میخواهید پیامهای مختلفی را به مدلهای مختلف تلفن ارسال کنید، سرورهای شما میتوانند ثبتنامها را به گروههای مناسب اضافه یا حذف کنند و پیام مناسب را به هر گروه ارسال کنند. پیامرسانی گروهی دستگاه با پیامرسانی موضوعی متفاوت است، زیرا شامل مدیریت گروههای دستگاه از سرورهای شما به جای مدیریت مستقیم در برنامه شما میشود.
حداکثر تعداد اعضای مجاز برای یک کلید اعلان، ۲۰ نفر است.
مدیریت گروههای دستگاه
قبل از ارسال پیام به یک گروه دستگاه، باید:
- برای هر دستگاهی که میخواهید به گروه اضافه کنید، توکنهای ثبتنام دریافت کنید.
- تابع
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
است.
اضافه کردن و حذف کردن دستگاهها از یک گروه دستگاه
برای اضافه کردن یا حذف کردن دستگاهها از یک گروه موجود، یک درخواست 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
را روی کلید اعلان گروه تنظیم کنید:
استراحت
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