پیامرسانی گروه دستگاه به شما امکان میدهد چندین دستگاه را به یک گروه اضافه کنید. این شبیه به پیامرسانی موضوع است، اما شامل احراز هویت است تا اطمینان حاصل شود که عضویت گروه فقط توسط سرورهای شما مدیریت میشود. به عنوان مثال، اگر می خواهید پیام های مختلفی را به مدل های مختلف تلفن ارسال کنید، سرورهای شما می توانند ثبت نام ها را به گروه های مربوطه اضافه یا حذف کنند و پیام مناسب را برای هر گروه ارسال کنند. پیامرسانی گروه دستگاه با پیامرسانی موضوعی متفاوت است زیرا شامل مدیریت گروههای دستگاه از سرورهای شما به جای مستقیماً در برنامه شما است.
حداکثر تعداد اعضای مجاز برای یک کلید اعلان 20 نفر است.
مدیریت گروه های دستگاه
قبل از ارسال پیام به گروه دستگاه، باید:
برای هر دستگاهی که می خواهید به گروه اضافه کنید، نشانه های ثبت نام را دریافت کنید.
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" }
کلیدهای مدیریت گروه دستگاه
جدول زیر کلیدهای ایجاد گروه های دستگاه و افزودن و حذف اعضا را فهرست می کند.
پارامتر | استفاده | توضیحات |
---|---|---|
operation | مورد نیاز، رشته | عملیات اجرا می شود. مقادیر معتبر create ، add و remove می شوند. |
notification_key_name | مورد نیاز، رشته | نام تعریف شده توسط کاربر گروه دستگاه برای ایجاد یا تغییر. |
notification_key | مورد نیاز (به جز برای عملیات create ، رشته | شناسه منحصر به فرد گروه دستگاه. این مقدار در پاسخ برای یک عملیات create موفقیت آمیز برگردانده می شود و برای تمام عملیات های بعدی در گروه دستگاه لازم است. |
registration_ids | مورد نیاز، آرایه از رشته ها | نشانههای دستگاه برای افزودن یا حذف. اگر تمام نشانه های ثبت نام موجود را از یک گروه دستگاه حذف کنید، FCM گروه دستگاه را حذف می کند. |
ارسال پیام به گروه های دستگاه
برای ارسال پیام به گروه های دستگاه، از HTTP v1 API استفاده کنید. اگر در حال حاضر با استفاده از APIهای ارسال قدیمی قدیمی برای HTTP یا XMPP یا هر یک از نسخههای قدیمیتر Firebase Admin SDK برای Node.js بر اساس پروتکلهای قدیمی، به گروههای دستگاه ارسال میکنید، اکیداً توصیه میکنیم که به HTTP v1 مهاجرت کنید. API در اولین فرصت APIهای ارسال قدیمی در ژوئن 2024 غیرفعال و حذف خواهند شد.
ارسال پیام به یک گروه دستگاه بسیار شبیه به ارسال پیام به یک دستگاه جداگانه است، با استفاده از همان روش برای تأیید درخواستهای ارسال . فیلد 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
ارسال پیام های بالادستی به گروه های دستگاه
برای ارسال پیامهای بالادستی به گروههای دستگاه در برنامههای Apple، برنامه مشتری Apple باید FIRMessaging.sendMessage را پیادهسازی کند:
(void)sendMessage:(nonnull NSDictionary *)message to:(nonnull NSString *)receiver withMessageID:(nonnull NSString *)messageID timeToLive:(int64_t)ttl;