1

アプリが突然強制終了またはクラッシュしたときにログアウト機能を実行したい。このタスクを実行するには、Web サービスを呼び出してサーバー側データベースから情報を削除する必要があります。しかし、アプリの強制終了またはクラッシュ時に Web サービスを呼び出すことができません。だから、これを解決するために私を助けてください。

applicationWillTerminate

applicationWillResignActive

デリゲート メソッドが機能しませんでした。

ありがとう!

4

3 に答える 3

4

インターセプトしてコードを実行させることが困難な (おそらく不可能な) 場所でアプリを終了させる方法があります。ホストシステムに切断またはタイムアウトを検出させ、その側からユーザーを自動的にログアウトさせる方がよいでしょう。

于 2012-08-03T21:24:58.603 に答える
2

2 つの回避策が機能する可能性があります。

  1. タイムアウト機能を搭載。ユーザーが特定の時間内に情報を処理しないか、アクティブなコードをトリガーして登録しない場合は、Web サービスへのリクエストを自動化して、ユーザーの情報を削除します。

  2. アプリのバックグラウンドで小さな繰り返しコードを常に実行します。メモリ フットプリントを減らすために、できる限り最小限にします。コードが少しずつまたはバイト単位の情報をサーバーに頻繁に送信するようにします。必要に応じて、サーバーはそれを自動的に削除できます。この「シグナル」が停止した場合は、Web サービスへのリクエストを自動化して、そのユーザーの情報を削除します。

于 2012-08-03T22:16:25.720 に答える
1

「強制終了」とは、システムがアプリを強制終了することを意味すると思います。この場合、applicationWillTerminateメソッドが呼び出されます。Appleドキュメントから:

...このメソッドは、アプリケーションがバックグラウンドで実行されており(一時停止されていない)、システムが何らかの理由でアプリケーションを終了する必要がある場合に呼び出される可能性があります

ユーザーがタスクスイッチャーからアプリを強制終了したときにも同じことが起こると思います(テストする必要があります)。

アプリがクラッシュした場合、失敗の性質上、appDelegateメソッドは呼び出されません。

于 2012-08-03T21:33:16.707 に答える