تتيح واجهة برمجة التطبيقات FCM HTTP v1 وأداة إنشاء الإشعارات إرسال روابط الصور في الحمولة الأساسية للإشعار المعروض، وذلك لتنزيل الصور على الجهاز بعد تسليمها. تتيح هذه الوظيفة استخدام الصور والفيديوهات في تطبيقات Apple (اطّلِع على مستندات Apple لمعرفة الحدود القصوى لحجم الملفات).
لتتمكّن من تلقّي صور الإشعارات ومعالجتها في تطبيق Apple، يجب إضافة إضافة خدمة الإشعارات. تسمح إضافة خدمة الإشعارات لتطبيقك بمعالجة الصورة المرسَلة في الحمولة في إطار خدمة "إشعارات Google من خادم Firebase" قبل عرض الإشعار على المستخدم النهائي.
إعداد إضافة خدمة الإشعارات
لإضافة إضافة خدمة، عليك تنفيذ مهام الإعداد المطلوبة لتعديل الإشعارات وعرضها في APN، ثم إضافة واجهة برمجة التطبيقات المساعِدة لإضافة خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" في 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);
});
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":{
"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 1 للحصول على تفاصيل كاملة عن المفاتيح المتاحة في الكتل الخاصة بالنظام الأساسي في نص الرسالة.
عند ضبط mutable-content
كما هو موضّح، يفعّل طلب الإرسال هذا إضافة service
على العميل المستلِم لمعالجة الصورة المرسَلة في الحمولة.