1

再会。

我收到一条带有图片 URL 的消息。每当我收到图像 URL 时,我都必须通过本地通知显示它。像这样

在此处输入图像描述

但是,我使用UNNotificationAttachment

convenience init(identifier: String, 
             url URL: URL, 
         options: [AnyHashable : Any]? = nil) throws

提到的地方

The URL of the file you want to attach to the notification. 
The URL must be a file URL and the file must be readable by the current process. 
This parameter must not be nil.

但是,当我收到消息时,我先下载它然后触发本地通知

func downloadImage(from remoteUrl: URL, completion: @escaping(URL?) -> Void) {
     URLSession.shared.downloadTask(with: remoteUrl) { localURL, response, error

       //move to the directory and return the URL
         
       completion(document directory path I have saved)
     }.resumeTask()
}

它成功返回本地 URL,并且我能够成功显示通知。

我已经保存了最后一个路径,因为我已经下载了图像。我不想再下载了。

但是每当我打开应用程序并想要访问下载的文件时,它就会出现错误

Error Domain=NSCocoaErrorDomain Code=260 "The operation couldn’t be completed. No such file or directory. 

完成以下测试:

  1. 两个 URL 路径相同。

  2. 我收到通知后下载了容器,通知上出现了图像,但在文档目录中没有找到图像。

那么处理这种情况的最佳方法是什么?

4

1 回答 1

2

但在文档目录中没有找到图片

因为您没有将其保存到文档目录中。downloadTask是易变的。一旦您从完成处理程序返回,它下载文件的 URL 就会被删除。如果您不想丢失它,则必须将其复制到更安全的位置。

于 2021-12-11T05:17:39.180 回答