50

私の iOS アプリは、ユーザーの写真にALAssetsLibrary. アプリのプライバシー設定を変更すると ([設定] → [プライバシー] → [写真])、アプリがシステムによって強制終了されます ( SIGKILL)。これはバグですか?

4

6 に答える 6

37

これはバグか、少なくとも文書化が不十分で予期しない動作だと思います。ただし、強制的に再起動するだけでクラッシュしません。SIGKILL メッセージは表示されますが、クラッシュ ログは表示されません。

登録済みの Apple 開発者である場合は、フォーラムでこの問題に関するディスカッションを確認できます。

この動作を防ぐ方法はわかりませんが、Apple にバグ レポートを提出してください。バグの重大度を測定する方法として、バグの複製を使用していると噂されています。再起動時にアプリの状態を復元するために、アプリの状態を保存できる場合があります。

于 2012-10-17T16:11:41.720 に答える
10

これは、UIImagePickerController を使用する場合にも発生します。シーケンスは次のようになります。

  1. UIImagePickerController を表示します。最初は、小さなアラートがユーザーにフォト ライブラリの使用許可を求めます。ユーザーがノーと言ったとしましょう。

  2. この時点でユーザーがピッカー コントローラーでできることはキャンセルだけなので、それが起こると仮定しましょう。

  3. 後で、UIImagePickerController を表示します。フォト ライブラリにはアクセスできないが、ユーザーは [設定] でアクセスを有効にできるという、カスタマイズできないメッセージが含まれるようになりました。

  4. ユーザーは [設定] に切り替えて、このアプリのフォト ライブラリへのアクセスを有効にします。

  5. アプリがバックグラウンドでクラッシュします。ユーザーがピッカーをキャンセルしたか、表示したままにしているかは問題ではありません。

これについてバグを報告しました。状況に応じて、同じことを行うことをお勧めします。Apple は iOS 6 で新しいプライバシー システムを導入しましたが、問題が解決されていないことは明らかです。

于 2012-12-01T17:50:11.717 に答える
2

シミュレーターを使用してアプリをテストするとき。アプリの権限を変更すると、ブレークポイントが得られます。コンソールに「c」と入力すると、アプリを引き続き実行して元の状態に戻すことができます。しかし、実際のデバイスでは、話ではありません。アプリを再起動するだけです。

于 2015-11-30T03:25:18.017 に答える
1

SIGKILL エラーが中断エラーとして機能する場合があります。これは、アプリを再起動する必要があることを iOS に通知し、同時にアプリのタスクを管理しています。その場合、中断メッセージの送信方法はアプリによって処理されません。

私の場合.....アプリでの写真とカメラへのアクセスを許可していません。これらの機能へのアクセスを許可するときはいつでも、アプリを最小化してこれらの設定を有効にします。これらを有効にすると、iOS が中断され、アプリがこれを受け取りますが、処理できず、アプリが終了または閉じられます。

于 2015-11-14T10:01:41.397 に答える
0

OK my 1st time to write an answer. I hope I get it right :)

assetForURL:resultBlock:failureBlock: を使用してアセット ライブラリにアクセスしていますか?

そうであれば、ALAssetLibrary の失敗ブロックを処理していない可能性が高いです。

次のようなことができます

ALAssetsLibraryAccessFailureBlock failureBlock = ^(NSError *error)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Access to Photo Library is Denied "
                                                            message:@"Please allow <YOUR APP NAME> to access your Photo library from Privacy Settings"
                                                           delegate:nil
                                                  cancelButtonTitle:@"OK"
                                                  otherButtonTitles:nil];
            [alert show];
            [alert release];
}

そのため、アプリがフォトライブラリにアクセスできない場合、ユーザーにそれを行うように依頼します。

于 2012-10-14T14:26:59.943 に答える