图像文件消失,即使FileManager说“存在”

时间:2019-04-22 07:20:47

标签: swift uilocalnotification nsfilemanager nsdocumentdirectory

当应用程序用户检测到“ iBeacon”时,我正在尝试显示一些来自LocalNotification的图像。

程序

  • 应用在后台状态下检测到iBeacon。
  • 从API提取图像数据。
  • 将图像数据以JPEG格式写入文档目录文件夹。
  • 成功后,使用附加的保存的图像数据URL推送LocalNotification。
  • LocalNotification被推送并显示在锁定屏幕上,并显示“已保存的图像”。

在这里,FileManager.default.fileExisits()说“是”。然后我确认Xcode下载的ContainerData中存在文件。

但是这里出现了问题。

  • 在锁定屏幕上点击LocalNotification。
  • 应用调用userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void)
  • 然后使用FileManager.default.fileExisits()检查附加的已保存图像网址
  • 结果为False。这些图像不可用。还可以通过检查ContainerData来确认。
  • 无法在Foreground应用程序状态下显示图像。

我完全想知道为什么会这样...

我已经尝试过了。

这是我的一些代码。

// Doing this after fetching image data from API.
// This writing is always Success.
if FileManager.default.fileExists(atPath: fileURL.path) {
    print(#function, "FileExsit")
    try FileManager.default.removeItem(at: fileURL)
} else {
    print(#function, "Not FileExsit")
}
try data.write(to: fileURL)
// Getting DocumentDirectory
public func urlForAdImage(beaconPrimaryID: String) -> URL? {

    let directoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("BeaconAds")

    var isDir : ObjCBool = false
    if FileManager.default.fileExists(atPath: directoryURL.path, isDirectory: &isDir) == false {
        do {
            try FileManager.default.createDirectory(at: directoryURL, withIntermediateDirectories: true, attributes: nil)
        } catch {
            print(#function, error)
            return nil
        }
    }

    return directoryURL.appendingPathComponent("\(beaconPrimaryID).jpg")
}

感谢您阅读。

0 个答案:

没有答案