Я внедряю Push -уведомления с изображением в моем приложении для iOS с использованием обмена сообщениями Firebase Cloud (FCM). Я создал пользовательские уведомления ServiceExtension для обработки загрузки и вложения изображения. Тем не менее, изображение не отображается в уведомлении.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)
}
}
< /code>
FCM Payload
Вот полезная нагрузка, которую я отправляю с сервера: < /p>
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', '')
)
),
)
< /code>
Проблема: < /p>
Уведомления принимаются на iOS, но изображение не отображается. /> Добавлено уведомление Speersextensension для обработки прикрепления изображения. < /li>
Проверьте image_url в полезной нагрузке и доступен. /> У меня не хватает каких -либо шагов при настройке уведомлений, правильно ли структурированная обработка изображений?>
Подробнее здесь: https://stackoverflow.com/questions/792 ... e-cloud-me
Почему изображение не отображается в iOS Push -уведомлениях с использованием обмена облачными сообщениями Firebase? ⇐ IOS
Программируем под IOS
1745824387
Anonymous
Я внедряю Push -уведомления с изображением в моем приложении для iOS с использованием обмена сообщениями Firebase Cloud (FCM). Я создал пользовательские уведомления ServiceExtension для обработки загрузки и вложения изображения. Тем не менее, изображение не отображается в уведомлении.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)
}
}
< /code>
FCM Payload
Вот полезная нагрузка, которую я отправляю с сервера: < /p>
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', '')
)
),
)
< /code>
Проблема: < /p>
Уведомления принимаются на iOS, но изображение не отображается. /> Добавлено уведомление Speersextensension для обработки прикрепления изображения. < /li>
Проверьте image_url в полезной нагрузке и доступен. /> У меня не хватает каких -либо шагов при настройке уведомлений, правильно ли структурированная обработка изображений?>
Подробнее здесь: [url]https://stackoverflow.com/questions/79296394/why-is-the-image-not-appearing-in-ios-push-notifications-using-firebase-cloud-me[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия