Почему изображение не отображается в push-уведомлениях iOS с помощью Firebase Cloud Messaging?IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Почему изображение не отображается в push-уведомлениях iOS с помощью Firebase Cloud Messaging?

Сообщение Anonymous »

Я реализую push-уведомления с изображением в своем приложении iOS с помощью Firebase Cloud Messaging (FCM). Я создал собственное расширение NotificationServiceExtension для обработки загрузки и прикрепления изображений. Однако изображение не отображается в уведомлении.
Вот код, который я использую:
NotificationService.swift::

Код: Выделить всё

import UIKit
import UserNotifications
import FirebaseMessaging

class NotificationService: UNNotificationServiceExtension {
private var contentHandler: ((UNNotificationContent) -> Void)?
private var bestAttemptContent: UNMutableNotificationContent?
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
self.contentHandler = contentHandler
bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)defer {
contentHandler(bestAttemptContent ?? request.content)
}
guard let attachment = request.attachment else {
return
}
bestAttemptContent?.attachments = [attachment]
}
override func serviceExtensionTimeWillExpire() {
if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent {
contentHandler(bestAttemptContent)
}
}
}

extension UNNotificationRequest {
var attachment: UNNotificationAttachment? {
guard let attachmentURL = content.userInfo["image"] as? String,
let imageData = try? Data(contentsOf: URL(string: attachmentURL)!) else {
return nil
}
return try? UNNotificationAttachment(data: imageData, options: nil)
}
}

extension UNNotificationAttachment {
convenience init(data: Data, options: [NSObject: AnyObject]?) throws {
let fileManager = FileManager.default
let temporaryFolderName = ProcessInfo.processInfo.globallyUniqueString
let temporaryFolderURL = URL(fileURLWithPath: NSTemporaryDirectory())
.appendingPathComponent(temporaryFolderName, isDirectory: true)
try fileManager.createDirectory(at: temporaryFolderURL, withIntermediateDirectories: true, attributes: nil)

let imageFileIdentifier = UUID().uuidString + ".jpg"
let fileURL = temporaryFolderURL.appendingPathComponent(imageFileIdentifier)
try data.write(to: fileURL)
try self.init(identifier: imageFileIdentifier, url: fileURL, options: options)
}
}
Полезная нагрузка FCM
Вот полезная нагрузка, которую я отправляю с сервера:

Код: Выделить всё

message = messaging.Message(
data=convert_to_firebase_compatible(data),
token=registration_id,
android=messaging.AndroidConfig(
priority='high',
ttl=ttl
),
notification=messaging.Notification(
title=data.get('title', 'ABC'),
body=data.get('message', ''),
image=data.get('image_url', '')
),
apns=messaging.APNSConfig(
headers={
'apns-priority': '10',
},
payload=messaging.APNSPayload(
aps=messaging.Aps(
sound='default',
mutable_content='1'
),
),
fcm_options=messaging.APNSFCMOptions(
image=data.get('image_url', '')
)
),
)
Проблема:
  • Уведомления приходят на iOS, но изображение не отображается.
  • Я подтвердил, что URL-адрес изображения в полезных данных userInfo действителен и доступен.
Выполненные действия:
  • Добавлено расширение NotificationServiceExtension для обработки изображений. Attachment.
  • Проверил, что image_url в полезных данных правильный и доступен.
  • Подтвердил, что для mutable_content в полезных данных установлено значение «1».
  • Подтверждено, что для параметра mutable_content установлено значение «1».
  • li>
Вопросы:
  • Пропустили ли я какие-либо шаги по настройке NotificationServiceExtension для обработки изображений ?
  • Является ли FCM полезная нагрузка правильно структурирована для отправки изображений в уведомлениях iOS?
  • Нужно ли мне настраивать что-либо еще для APN или FCM для поддержки изображений в уведомлениях?


Подробнее здесь: https://stackoverflow.com/questions/792 ... e-cloud-me
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»