PHPhotoLibrary.requestAuthorizationでダイアログを開くかどうかの判断について調べてみました。
アプリ側からの指定不可
アプリ側からは、指定できません。
requestAuthorizationでダイアログが開かれるケース
過去に一度も、”Deny”/”Allow”のいずれも選択していないとiOSが表示する。
Simulatorでの確認ですが、このダイアログは、Modalで表示され、回答しない限り、閉じません。ホームボタンでも閉じることができないダイアログでした。
requestAuthorizationでダイアログが開かれないケース
つまり、過去に一度でもユーザーが選択していると開かれない。
ちなみに、過去に一度でも選択したかどうかは、Settingアプリでアプリがリストに追加されているかで判断できます。プログラム中で判断する方法があるかは、不明です。
ちなみに、ユーザーは、アプリからだけではなく、Settingアプリからいつでも設定を変更できます。アプリからアプリの意思で設定変更することはできないので、変更されてしまった場合は、ユーザーに再度依頼するしかありません。
なお、アプリからSettingアプリを開くこともできます。(設定変更することはできないので、ユーザーをアシストすることしかできません)
DispatchQueue.main.async { UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!) }
UIをいじるので、mainスレッドで実行させる必要があります。
Sponsor Link