Я работал над богатым опытом уведомлений, который был внедрен в iOS10 и застрял с передачей изображений в качестве вложений в UNNotificationContentExtension
.
Здесь мой ContentExtension:
class NotificationViewController: UIViewController, UNNotificationContentExtension {
@IBOutlet weak var attachmentImage: UIImageView!
func didReceive(_ notification: UNNotification) {
if let attachment = notification.request.content.attachments.first {
if attachment.url.startAccessingSecurityScopedResource() {
attachmentImage.image = UIImage(contentsOfFile: attachment.url.path)
attachment.url.stopAccessingSecurityScopedResource()
}
}
}
}
Как учебник, я следил за видео с расширенными уведомлениями из WWDC.
Я проверил - UIImage
Я назначаю UIImageView:
- не
nil
- имеет собственный
CGSize
(191x191) - attachment.url.path равно
/var/mobile/Library/SpringBoard/PushStore/Attachments/<bundle of app>/<...>.png
Здесь, как я отправляю локальное уведомление из приложения:
let content = UNMutableNotificationContent()
content.title = "Sample title"
content.body = "Sample body"
content.categoryIdentifier = "myNotificationCategory"
let attachement = try! UNNotificationAttachment(identifier: "image",
url: Bundle.main.url(forResource: "cat", withExtension: "png")!,
options: nil)
content.attachments = [ attachement ]
let request = UNNotificationRequest(identifier:requestIdentifier, content: content, trigger: nil)
UNUserNotificationCenter.current().delegate = self
UNUserNotificationCenter.current().add(request){(error) in
if (error != nil){
}
}
"cat.png" - это просто фиктивный ресурс, который я добавил в proj.
Как вы можете видеть, уведомление показывает рисунок, поэтому я предполагаю, что я его отправляю правильно, но в расширенном состоянии (в NotificationViewController
) мне никогда не удается показать одно и то же изображение.
Что я делаю неправильно? Спасибо!