Skip to content

Instantly share code, notes, and snippets.

@yunustek
Created December 5, 2018 12:21
Show Gist options
  • Save yunustek/e180d2a30f1611095c790476419be14d to your computer and use it in GitHub Desktop.
Save yunustek/e180d2a30f1611095c790476419be14d to your computer and use it in GitHub Desktop.
DownloadImageFunc
/// Bir görüntüyü indirmek ve bir bildirimde sunmak için bu işlevi kullanın
/// - Parametereler:
/// - url: Resmin url'i
/// - completion: Görüntüyü, sonuç olarak UNNotificationAttachment biçiminde döndür
private func downloadImageFrom(url: URL, with completionHandler: @escaping (UNNotificationAttachment?) -> Void) {
let task = URLSession.shared.downloadTask(with: url) { (downloadedUrl, response, error) in
// 1. Url yoksa nil gönder ve geri dön
guard let downloadedUrl = downloadedUrl else {
completionHandler(nil)
return
}
// 2. Kullanıcının temporary yolunu al
var urlPath = URL(fileURLWithPath: NSTemporaryDirectory())
// 3. Url dosya tipini .jpg olarak belirle
// (Sistem, ilgili bildirim isteğini zamanlamadan önce ekli dosyaların içeriğini doğrular.
// Bozuk, geçersiz veya desteklenmeyen bir dosya türü varsa, bildirim medyasız iletilecektir.)
let uniqueURLEnding = ProcessInfo.processInfo.globallyUniqueString + ".jpg"
urlPath = urlPath.appendingPathComponent(uniqueURLEnding)
// 4. downloadedUrl'i yeni oluşturulan urlPath yoluna taşı
try? FileManager.default.moveItem(at: downloadedUrl, to: urlPath)
// 5. Eki almayı ve completionHandler'a iletmeyi dene
do {
let attachment = try UNNotificationAttachment(identifier: "picture", url: urlPath, options: nil)
completionHandler(attachment)
}
catch {
completionHandler(nil)
}
}
task.resume()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment