2013-04-10 6 views
11

ALAssetsフレームワークを使用してユーザーフォトライブラリにアクセスするアプリがあります。私は、アプリケーションが写真ライブラリにアクセスする権限を持っているかどうかを検出するコードを書いていました。そうでなければ、設定のアプリの位置情報サービスをオンにするよう警告メッセージを表示します。プライバシー設定の変更を検出したときにアプリを再起動する

問題は、ユーザーがプライバシー設定を手動で変更してアプリを再度開くと、iOSによってアプリがSIGKILLでクラッシュすることが強制されます。

他のアプリがこれを処理する方法は、プライバシー設定の変更を何らかの形で検出し、ユーザーが次に開くときにアプリを強制的に再起動することに気づきました。誰もこれを達成する方法を知っていますか?

答えて

12

あなたは何が起こっているのか誤解しています。あなたのアプリはクラッシュしていません(ただし、デバッガでアプリを実行していると表示されることがあります)。

設定アプリに切り替えて(アプリがバックグラウンドで一時停止されている)プライバシー設定を変更すると、一時停止したアプリは終了します。あなたがあなたのアプリに戻ったとき、それは単に再び開始されます。これは他の理由であなたのアプリが殺されることと変わりありません。

これまでの状態を復元することでこれを処理するようにアプリケーションを作成することは、お客様の責任です。あなたが話す他のアプリは、単にユーザーを以前の状態に戻すことです。多くのアプリがこれを行います。それはプライバシーの変更のために殺されることとは関係がありません。何らかの理由で殺された場合、アプリケーションは状態を復元します。

+0

ありがとうございます。あなたが言うように、私がxcodeからアプリケーションを実行していたとき、それは凍っているように見えました。しかし、私はちょうど電話からアプリを実行し、設定を変更すると、アプリは凍結の代わりに次回起動時に自動的に再起動します。 –

+0

これはシミュレータ固有のものですか?私はデバイス上のTwitterアクセス​​を変更しようとしましたが、Twitterアプリが殺されることはありませんでした。いつものようにバックグラウンドから戻ってきました。 –

+0

@CoDEFRo Xcodeでデバッグするときは、アプリがクラッシュした後に[停止]ボタンをクリックする必要があります。すると、アプリを正しく再起動できます。 – rmaddy

1

authorizationStatus class methodALAssetsLibraryを使用してフォトライブラリにアクセスする権限があるかどうかを確認できます。あなたのアプリケーションが "開く"たびに呼び出されるいくつかのメソッドでこの値をチェックし、それに応じてUIを更新する必要があります。

+0

これはまさに私がやっていることです。私がそれを検出したとき、それが許可されていなければ、設定アプリでそれを変更するように指示します。彼らが行ってそれを変更すると、アプリがクラッシュします。 –

+0

クラッシュするメソッドのコードを投稿できますか? – bdesham

+0

これは実際に自分のアプリケーション内でクラッシュするメソッドではありません。ユーザーがアプリの外で設定を変更すると、iOSによってアプリがクラッシュしています。これについて説明します:http://stackoverflow.com/questions/12652502/app-killed-by-sigkill-when-changing-privacy-settings –

関連する問題