I've been working on rich notification experience which has been introduced in iOS10 and stuck with passing images as attachments to UNNotificationContentExtension.
Here's my 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()
            }
        }
    }
}
As a tutorial, I've been following Advanced Notifications video from WWDC.
I've checked - UIImage I'm assigning to UIImageView:
- is not nil
- has proper CGSize(191x191)
- attachment.url.path equals  /var/mobile/Library/SpringBoard/PushStore/Attachments/<bundle of app>/<...>.png
Here's how I send local notification from the app:
    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" is just a dummy resource I've added to proj.

As you can see, notification shows the pic, so I assume, that I'm sending it correctly, but in the expanded state(in NotificationViewController)  I've never succeed at showing the same image.
What am I doing wrong? Thanks!
 
                        
When you create an UIImage with
contentsOfFile, the UIImage object reads the image header only, which indicates basic info, such as image size, etc.So, try move
stopAccessingSecurityScopedResourceto[NotificationViewController dealloc].Or using following:
objective-c code:
swift code:
There is no document saying that
contentsOfFileonly reads the image header. But when I run the following code:An error occurs:
So I made a conclusion that UIImage
contentsOfFileonly reads the image header.