إرسال صورة ضمن حمولة الإشعارات

تتيح واجهة برمجة التطبيقات 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 على العميل المستلِم لمعالجة الصورة المرسَلة في الحمولة.