因此,以下代码用于附加图像的本地存储URL中的图像.我检查终端,看看图像是否存储,它确实存储图像没有任何问题.所以排除网址本身的任何问题. do {let attachment = try UNNotificationAttachment(
do { let attachment = try UNNotificationAttachment(identifier: imageTag, url: url, options: nil) content.attachments = [attachment] } catch { print("The attachment was not loaded.") }
与UserNotification创建一起使用的其他代码在正确的指定时间触发时工作正常.
代码总是进入catch块.任何人都可以指出我的错误,如果有任何实施.请帮忙.谢谢.
编辑:带打印(error.localizedDescription)错误消息是无效的附件文件URL.
Edit2:带打印(错误)错误消息是错误域= UNErrorDomain代码= 100“无效的附件文件URL”UserInfo = {NSLocalizedDescription =无效的附件文件URL}
我发现了背后的真正问题.在Apple文档中写道,url应该是一个文件URL,因此您可能面临问题.为了解决这个问题,我已将图像添加到临时目录,然后添加到UNNotificationAttachment.
请在下面找到代码. [在我的情况下,我得到的图像网址]
extension UNNotificationAttachment { /// Save the image to disk static func create(imageFileIdentifier: String, data: NSData, options: [NSObject : AnyObject]?) -> UNNotificationAttachment? { let fileManager = FileManager.default let tmpSubFolderName = ProcessInfo.processInfo.globallyUniqueString let tmpSubFolderURL = NSURL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(tmpSubFolderName, isDirectory: true) do { try fileManager.createDirectory(at: tmpSubFolderURL!, withIntermediateDirectories: true, attributes: nil) let fileURL = tmpSubFolderURL?.appendingPathComponent(imageFileIdentifier) try data.write(to: fileURL!, options: []) let imageAttachment = try UNNotificationAttachment.init(identifier: imageFileIdentifier, url: fileURL!, options: options) return imageAttachment } catch let error { print("error \(error)") } return nil }}
此函数的参数中的数据是图像数据.以下是我如何称呼这种方法.
let imageData = NSData(contentsOf: url) guard let attachment = UNNotificationAttachment.create(imageFileIdentifier: "img.jpeg", data: imageData!, options: nil) else { return } bestAttemptContent?.attachments = [attachment]