search
LoginSignup
12

More than 3 years have passed since last update.

posted at

updated at

Organization

iOS11以降のフォトライブラリへのアクセス許可について

iOS11から UIImagePickerController でフォトライブラリへアクセスする際にinfo.plistで Privacy - Photo Library Usage Description を設定してもアクセス権限の確認が自動で行われなくなり、アラートが自動で表示されなくなりました。
iOSの変更によるものなのでフォトライブラリに関してはアクセス許可の設定をしなくてもリジェクト対象ではない気もしますが、ガイドラインには

ユーザーは、現在の場所、予定表、連絡先情報、通知、写真などの個人情報にアクセスするためのアプリのアクセス許可を付与する必要があります。

と記載されており、写真という表記があるため、もしかしたらリジェクト対象になる可能性があります。

もしリジェクトされてしまった場合は下記のようにこちら側でアクセス権限の確認アラートを表示しましょう。

info.plist

Privacy - Photo Library Usage Descriptionを追加

UIImagePickerControllerの呼び出し

import Photos

if PHPhotoLibrary.authorizationStatus() != .authorized {
            PHPhotoLibrary.requestAuthorization { status in
                if status == .authorized {
                    // フォトライブラリを表示する
                } else if status == .denied {
                    // フォトライブラリへのアクセスが許可されていないため、アラートを表示する
                    let alert = UIAlertController(title: "タイトル", message: "メッセージ", preferredStyle: .alert)
                    let settingsAction = UIAlertAction(title: "設定", style: .default, handler: { (_) -> Void in
                        guard let settingsURL = URL(string: UIApplication.openSettingsURLString ) else {
                            return
                        }
                        UIApplication.shared.open(settingsURL, options: [:], completionHandler: nil)
                    })
                    let closeAction: UIAlertAction = UIAlertAction(title: "キャンセル", style: .cancel, handler: nil)
                    alert.addAction(settingsAction)
                    alert.addAction(closeAction)
                    self.present(alert, animated: true, completion: nil)
                }
            }
        } else {
            // フォトライブラリを表示する
        }

PHPhotoLibrary.requestAuthorizationを呼び出すことで今まで勝手に出てきた確認のアラートが表示されるようになります。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
12