2015-09-29 23 views
7

İki farklı seçeneğe sahip bir eylem sayfası görüntüleyen aşağıdaki işleve sahibim. Şu anda, uygulanan tek seçenek "Fotoğraflar" başlıklı başlıktır. Eylem sayfası doğru bir şekilde sunulur ve uygun eylem aranır. Benim problemim, simülatörde ve gerçek bir cihazda, fotoğraf kitaplığına erişim talep eden istemi görüntüleyemem.PHPhotoLibrary.requestAthorization(), iOS 9 üzerinde yetkilendirme istemini tetiklemiyor

PHPhotoLibrary.authorizationStatus() döner .Denied ve fotoğraflara erişimi yok anki uygulama bildiren modal sunar: Zaten "temizlenmiş" ettik enter image description here

@IBAction func attachPhotoButtonTapped(sender: AnyObject) { 
    let actionSheetController = UIAlertController(title: "Images", message: "Select image source...", preferredStyle: .ActionSheet) 
    let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) { 
     (action) in 
     // ... 
    } 
    actionSheetController.addAction(cancelAction) 

    let takePictureAction = UIAlertAction(title: "Camera", style: .Default) { 
     (action) in 
     // ... 
    } 
    actionSheetController.addAction(takePictureAction) 

    let choosePictureAction = UIAlertAction(title: "Photos", style: .Default) { 
     (action) in 
     PHPhotoLibrary.requestAuthorization({(status:PHAuthorizationStatus) in 
      switch status{ 
       case .Authorized: 
        dispatch_async(dispatch_get_main_queue(), { 
         print("Authorized") 
        }) 
        break 
       case .Denied: 
        dispatch_async(dispatch_get_main_queue(), { 
         print("Denied") 
        }) 
        break 
       default: 
        dispatch_async(dispatch_get_main_queue(), { 
         print("Default") 
        }) 
        break 
      } 
     }) 
    } 
    actionSheetController.addAction(choosePictureAction) 

    presentViewController(actionSheetController, animated: true, completion: nil) 
} 

proje ve simülatör ayarlarını sıfırlamak, ama yine de değil görüntülenmek için istem almak.

+0

Olası yinelenen [App fotoğraflar veya videolar iOS erişimi yok 9] (http://stackoverflow.com/questions/32768012/app-does-not-have-access-to- kendi fotoğraflarınız ya da videolarınız-ios-9) – bummi

cevap

7

Bu, Info.plist dosyanızdaki CFBundleDisplayName anahtarının boş bir değere sahip olması ve Fotoğraf Kitaplığı'na erişmek için izin isteyen uyarıdaki iletinin yapılamaması nedeniyle gerçekleşir. Aşağıdaki satırları ekleme projesini temizlik ve bina tekrar sorunu giderir:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>CFBundleDisplayName</key> 
    <string>$(PRODUCT_NAME)</string> 
    <!-- More keys and values --> 
</dict> 
</plist> 

Teşekkür Vladimir Gorbenko beni bu çözümüne yardım için.

+0

cankurtaran - bunu asla kendi başıma çözemezdim – Tys

+0

iOS 10.1 simülatöründe çalışmıyor. Burada bir sorun yayınladım. http://stackoverflow.com/questions/40386819/ios-request-permission-does-not-show/40386997#40386997 –

1

Info.plist adresine gidin ve Bundle Display adı ekleyin.Ardından kodu ekleyin.

enter image description here