我想在一段时间后(例如10秒钟)发送本地通知。我想在xcassets的通知中添加图像,但imageURL
始终是nil
。
我尝试过创建一个Path,然后从该路径创建一个URL。我也尝试使用forResource
参数= nil
创建一个url,以便它找到任何带有"png"
作为扩展名的图像,并且仍然是 - nil
。
let content = UNMutableNotificationContent()
content.title = "Notification title"
content.subtitle = "notification subtitle"
content.body = "notification body"
let imageName = "delete"
guard let imageURL = Bundle.main.url(forResource: imageName, withExtension: "png") else {return}
let attachment = try! UNNotificationAttachment(identifier: imageName, url: imageURL, options: .none)
content.attachments = [attachment]
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 10, repeats: false)
let request = UNNotificationRequest(identifier: "notification.id.01", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
我添加了print
语句,看看会发生什么,我已经确认我的方法在guard
语句中返回。
图像可以位于以下两个位置之一:资产目录或捆绑。
当你说
guard let imageURL = Bundle.main.url(forResource: imageName, withExtension: "png") else {return}
你正在寻找捆绑中的图像。
但是你自己告诉我们,这不是形象所在!它在资产目录中。
这就是为什么在捆绑中寻找它失败。它不在那里。
除了Matt的答案之外,UNNotification的图像附件不能直接从xcassets中获取。如果要向其添加任何附件,则必须先将其转换为文件URL。
有关更多详细信息,请参阅此帖子:UNNotificationAttachment with UIImage or Remote URL