メモリ不足、メモリ リークなどの一般的なクラッシュによるクラッシュ時にアプリが終了したときに、サーバーと何らかの対話を行いたいと考えています。知りたいのですが、このシナリオで呼び出されるデリゲートメソッドはありますか?これにより、クラッシュによりアプリが終了する直前にサーバーにすばやく接続できます。
ありがとうございました。
メモリ不足、メモリ リークなどの一般的なクラッシュによるクラッシュ時にアプリが終了したときに、サーバーと何らかの対話を行いたいと考えています。知りたいのですが、このシナリオで呼び出されるデリゲートメソッドはありますか?これにより、クラッシュによりアプリが終了する直前にサーバーにすばやく接続できます。
ありがとうございました。
あなたが説明したように、サーバーを親密にする必要があるため、クラッシュのためにアプリが終了する直前にサーバーに接続できます。
その場合、通知を受け取るように設定する必要がexception handler
ありますexception
これを行う方法を参照してください
このNSSetUncaughtExceptionHandler (&uncaughtExceptionHandler)
コード行をクラスapplicationDidFixnishLaunchin
のメソッドに記述しますAppdelegate
-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:
(NSDictionary*)launchOptions
{
NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
EDIT:
if( [[NSUserDefaults standardUserDefaults] boolForKey:@"isExceptionOccured"])
{
//call sever code here
[[NSUserDefaults standardUserDefaults] setBool:FALSE forKey:@"isExceptionOccured"];
}
//rest of your code
}
void uncaughtExceptionHandler(NSException *exception)
{
NSLog(@"Exception Got %@",[exception description]);
//do what ever you what here
//can save any `bool` so that as aaplication run on immediate next launching of crash
//could intimate any thing
EDIT:
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isExceptionOccured"];
}
エラーをキャッチするために、独自の例外ハンドラーを追加します。
最初に例外メソッドを定義します。
void uncaughtExceptionHandler(NSException *exception) {
// You code here, you app will already be unload so you can only see what went wrong.
}
次に、例外ハンドラーを使用するようにアプリに指示します。
- (void)applicationDidFinishLaunching:(UIApplication *)application {
NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
// The rest if you code ....
}
それがあなたを助けることを願っています。