Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.

Info.plist'de verilen izinlerin kontrol edilmesi

0 oy
33 kez görüntülendi
20, Eylül, 20 ios development kategorisinde sereisoglu tarafından soruldu

Info.plist'den kullanicinin galerisine erisim izni aldiktan sonra kullanici izni kaldirirsa, kullanicinin tekrardan izin vermesi icin nasil ayarlar kismina yonlendirilir? bunun kontrolu nasil saglanir? ve bu kontrolu nerede yapmaliyiz?

1 cevap

0 oy
20, Eylül, 20 yasin tarafından cevaplandı
23, Eylül, 23 sereisoglu tarafından seçilmiş
 
En İyi Cevap

Ö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)
    }
23, Eylül, 23 sereisoglu tarafından yorumlandı

Tamamdir anladim olayi.
Peki yukaridaki paylastiginiz kod hangi izinleri kapsiyor?

23, Eylül, 23 yasin tarafından yorumlandı

İşte kamer rulosuna fotoğraf/video kaydetmek veya pickerview kullanmadan tüm içeriğe direkt olarak erişmek istersen bu izinlere ve kontrol mekanizmasına ihtiyacın olacaktır.

23, Eylül, 23 sereisoglu tarafından yorumlandı

Pickerview kullanmadan baska neyle kullanicinin galerisine erisebiliriz?

24, Eylül, 24 yasin tarafından yorumlandı

Photos framework'u ile direkt erişim sağlayabilirsin.

25, Eylül, 25 sereisoglu tarafından yorumlandı

tesekkurler.

...