Я добавляю миниатюру в расширенное уведомление. Я создаю изображение для использования в качестве вложения следующим образом:
let url = URL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true)
let fileURL = url.appendingPathComponent("someImageName", isDirectory: false).appendingPathExtension("png")
do{
try UIImagePNGRepresentation(image)?.write(to: fileURL)
}catch{
print("Could not write: ", error)
}
Это успешно. Если я сейчас запущу этот код:
let content = try? FileManager.default.contentsOfDirectory(atPath: NSTemporaryDirectory())
print(content ?? "error")
он печатает это: ["someImageName.png"]
.
Затем я создаю вложение, например:
let attachment = try? UNNotificationAttachment(identifier: "image", url: url, options: nil)
let content = UNMutableNotificationContent()
content.title = "Test"
content.attachments = [attachment!]
let request = UNNotificationRequest(identifier: "someID", content:content, trigger: /*someTrigger*/)
UNUserNotificationCenter.current().add(request, withCompletionHandler:...)
Это все работает. Уведомление отправляется, и вложение прикрепляется. Но если я сейчас распечатаю содержимое моей временной папки, она пуста! Изображение, которое я сохранил ранее, было удалено из этой папки.
После долгих проб и ошибок я обнаружил, что изображение удаляется в тот самый момент, когда я добавляю уведомление. Почему мое уведомление удаляет мое изображение? Я не могу найти никакой документации по этому поводу!
Если я сделаю все вышеперечисленное, но закомментирую эту строку: //content.attachments = [attachment!]
, что означает, что мое сохраненное изображение не будет добавлено в качестве приложения к моему уведомлению, то мое изображение не будет удалено из временной папки!
Эти файлы очищаются после использования? Или мне нужно искать в другой папке после исчезновения уведомления и чистить их вручную? Я не хочу, чтобы мое приложение создавало сотни изображений, которые больше никогда не будут использоваться, без возможности их удаления.