Öncelikle Photos library'si ni import edelim.
import Photos
Daha sonra kayıt işlemini yaptırmak istediğin yerde veya dilersen uygulama ilk açıldığında, aşağıdaki şekilde authorization durumunu kontrol edebilir ve bir alert yardımıyla kullanıcının ayarlar sayfasına yönlendirilmesini sağlayabilirsin.
Bu tamamen kullanıcının insiyatifine bırakılması gereken bir durum, kullanıcı bunun için zorlanmamalı.
// authorization durumunu blok içerisinde alabiliriz. Eğer info.plist'de gerekli key'leri ayarlamadan bu bloğu çağırırsan çökmeye neden olur.
// O nedenle info.plist içerisinde gerekli camera rulosuna erişim keyleri ve açıklamalarını girmiş olmamız şart.
PHPhotoLibrary.requestAuthorization { (auth) in
if auth != PHAuthorizationStatus.authorized { // Eğer durum authorized değilse alert'le kullanıcının ayarlar sayfasına gidebilmesi için bir seçenek sunacağız.
DispatchQueue.main.async { // ÖNEMLİ. Bu blok mainThread dışında çağrılıyor. Dolayısıyla önce mainThread'a geçiyoruz.
// alert'i hazırlayalım
let alertController:UIAlertController = UIAlertController(title: "Needs action!", message: "You have to grant permission to access your camera roll to save the images.", preferredStyle: UIAlertController.Style.alert)
// Alert penceresinde "Cancel" ve "Go to settings" diye iki buton yer alacak.
// "Go to settings" buton aksiyonunda launchSettingsPage fonksiyonunu çağıracağız.
let settingsAction:UIAlertAction = UIAlertAction(title: "Go to settings", style: UIAlertAction.Style.default) { (action:UIAlertAction) in
self.launchSettingsPage()
}
let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertAction.Style.cancel, handler: nil)
alertController.addAction(cancelAction)
alertController.addAction(settingsAction)
self.present(alertController, animated: true, completion: nil)
}
}
}
// UIApplication.openSettingsURLString string'i üzerinden uygulamanın cihaz ayarlarında yer alan izinler sayfasının URL string'ini elde ediyoruz.
// IOS sürümüne göre openURL veya open metotlarını kullanarak kullanıcının uygulamadan çıkartılarak ilgili izinlerin yer aldığı sayfaya yönlendirilmesini sağlıyoruz.
func launchSettingsPage() {
guard let url = URL(string : UIApplication.openSettingsURLString) else {
return
}
guard #available(iOS 10, *) else {
UIApplication.shared.openURL(url)
return
}
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}