API FCM HTTP v1 و Notifications Composer از ارسال پیوندهای تصویر در محموله یک اعلان نمایشگر برای دانلود تصویر به دستگاه پس از تحویل پشتیبانی میکنند. این قابلیت از تصاویر و ویدیوها برای برنامههای اپل پشتیبانی میکند (به اسناد اپل برای محدودیت اندازه فایل مراجعه کنید).
برای اینکه بتوانید تصاویر اعلان را در یک برنامه Apple دریافت و مدیریت کنید، باید یک برنامه افزودنی سرویس اعلان اضافه کنید. برنامه افزودنی سرویس اعلان به برنامه شما اجازه می دهد تا قبل از نمایش اعلان به کاربر نهایی، تصویر ارائه شده در محموله FCM را مدیریت کند.
برنامه افزودنی سرویس اعلان را تنظیم کنید
برای افزودن یک برنامه افزودنی سرویس، وظایف راهاندازی لازم را برای اصلاح و ارائه اعلانها در APNها انجام دهید و سپس API کمکی برنامه افزودنی FCM را در NotificationService.m
اضافه کنید. به طور خاص، به جای تکمیل تماس با self.contentHandler(self.bestAttemptContent);
، آن را با FIRMessaging extensionHelper
تکمیل کنید، همانطور که نشان داده شده است:
@interface NotificationService () <NSURLSessionDelegate>
@property(nonatomic) void (^contentHandler)(UNNotificationContent *contentToDeliver);
@property(nonatomic) UNMutableNotificationContent *bestAttemptContent;
@end
@implementation NotificationService
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
self.contentHandler = contentHandler;
self.bestAttemptContent = [request.content mutableCopy];
// Modify the notification content here as you wish
self.bestAttemptContent.title = [NSString stringWithFormat:@"%@ [modified]",
self.bestAttemptContent.title];
// Call FIRMessaging extension helper API.
[[FIRMessaging extensionHelper] populateNotificationContent:self.bestAttemptContent
withContentHandler:contentHandler];
}
...
درخواست ارسال را بسازید
در درخواست ارسال اعلان، گزینه های ApnsConfig زیر را تنظیم کنید:
-
fcm_options.image
حاوی URL تصویر -
headers({ "mutable-content": 1})
مثال زیر درخواست ارسال یک عنوان اعلان مشترک را به همه پلتفرم ها ارسال می کند، اما یک تصویر نیز ارسال می کند. در اینجا تقریبی از جلوه بصری روی دستگاه کاربر آورده شده است:
Node.js
const topicName = 'industry-tech';
const message = {
notification: {
title: 'Sparky says hello!'
},
android: {
notification: {
imageUrl: 'https://foo.bar.pizza-monster.png'
}
},
apns: {
payload: {
aps: {
'mutable-content': 1
}
},
fcm_options: {
image: 'https://foo.bar.pizza-monster.png'
}
},
webpush: {
headers: {
image: 'https://foo.bar.pizza-monster.png'
}
},
topic: topicName,
};
getMessaging().send(message)
.then((response) => {
// Response is a message ID string.
console.log('Successfully sent message:', response);
})
.catch((error) => {
console.log('Error sending message:', error);
});
استراحت
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":{
"topic":"industry-tech",
"notification":{
"title":"Sparky says hello!",
},
"android":{
"notification":{
"image":"https://foo.bar/pizza-monster.png"
}
},
"apns":{
"payload":{
"aps":{
"mutable-content":1
}
},
"fcm_options": {
"image":"https://foo.bar/pizza-monster.png"
}
},
"webpush":{
"headers":{
"image":"https://foo.bar/pizza-monster.png"
}
}
}
}
برای جزئیات کامل کلیدهای موجود در بلوکهای مخصوص پلتفرم در متن پیام، به مستندات مرجع HTTP v1 مراجعه کنید.
با تنظیم mutable-content
همانطور که نشان داده شده است، این درخواست ارسال به برنامه افزودنی سرویس در مشتری دریافت کننده امکان می دهد تا تصویر تحویل داده شده در محموله را مدیریت کند.