web-dev-qa-db-ja.com

iOS 8の設定からカメラアクセスを有効にするとアプリがクラッシュする

私はiPhone用のアプリを開発しています。バーコードのスキャンと写真の撮影にカメラを使用しています。 Cameraアクセスがなく、ユーザーがCamera Accessを有効にすると、アプリがクラッシュして再度開きます。

これを修正するのを手伝ってくれませんか?

前もって感謝します。

50
Nuraiz

初めてカメラにアクセスすると、OSは自動的に許可プロンプトを表示します。ユーザーがプロンプトを許可するか拒否するかにかかわらず、アプリは引き続き実行されます。ユーザーがある時点でアドレス帳、カレンダー、リマインダー、カメラ、または写真の権限を変更すると、iOSがアプリをSIGKILLします。このアクションを実行して、アプリが以前に承認したデータを保持していないことを確認します。ユーザーが設定アプリからサードパーティアプリに戻ると、最初から起動され、承認ステータスが拒否になりました。この動作の結果として、2つの推奨事項があります。

  1. 権限が拒否されたことを検出し、ユーザーが設定アプリの権限を切り替える必要があることを説明するUIをいくつか提示します。 iOS 8では、[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]を使用して、アプリのエントリに直接移動できます。

  2. アプリを終了して再起動すると、以前に表示されていたビュー/機能にユーザーが戻るように、何らかの状態の復元を実装します。

ソース (開発者アカウントが必要)

73
jszumski

あなたの提案は正しいです。以前に拒否した場合は、カメラと連絡先の権限を変更するために設定アプリに移動するようユーザーに要求する警告ビューを表示します。私にとっての問題は、あなたの2番目の推奨事項です。私はサインアッププロセスの奥深くにいて、名前、電子メール、生年月日などのサインアップ情報を収集しました。次に、「権限のリクエスト」画面があります。強制終了した後にアプリを再起動すると、このサインアップ情報はもうありません。おそらく、アラートビューを表示する前にサインアップ情報を(電話に)保存してから、アプリを再起動したときに、以前に保存されたサインアップ情報があるかどうかを確認します。その場合は、許可を求める画面に戻り、保存されているサインアップ情報を削除します。

0
Sidd Rajput