从xcassets中的图像创建URL总是返回nil

时间:2019-04-10 01:54:04

标签: ios swift notifications

我正在尝试在一段时间(例如10秒)后发送本地通知。我想将图像添加到 xcassets 的通知中,但是imageURL始终是nil

我尝试创建路径,然后从该路径创建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语句中返回。

2 个答案:

答案 0 :(得分:2)

图像可以位于以下两个位置之一:资产目录或分发包。

当你说

guard let imageURL = Bundle.main.url(forResource: imageName, withExtension: "png") else {return}

您正在寻找捆绑包中的图像。

但是您已经告诉我们自己,那不是图像的所在!它在资产目录中。

这就是为什么在捆绑包中查找失败。它不在那里。

答案 1 :(得分:0)

除了Matt的回答之外,不能直接从xcassets中获取UNNotification的图像附件。如果要向其添加任何附件,则必须首先将其转换为文件URL。

有关更多详细信息,请参见此帖子:UNNotificationAttachment with UIImage or Remote URL