ViewController がプッシュされたアプリケーションがあります。JSON Web サービスにログインし、データを取得して、アプリケーションがアクティブな間に何らかの作業を行います。アプリを閉じたり、バックグラウンドに移動したりしたときに、ログオフしたい。
私のJSONローダーは独自のスレッドでWebサービスを呼び出し、NSDictionaryと呼び出しの結果を表す列挙型を使用してデリゲートを呼び出します。
アプリケーションが次の関数でバックグラウンドに送信されると、この呼び出しが見逃されます。
- (void)applicationWillResignActive:(UIApplication *)application
{
JSONLoader *json = self.startViewController.json;
NSString *usr_no = [self.startViewController.user.usr_no stringValue];
//ask json for logoff
NSString *relativePath = [NSString stringWithFormat:@"users/%@?action=logout", usr_no];
NSURL *logoutUrl = [NSURL URLWithString:relativePath relativeToURL:kBaseURLString];
[json loadWithURL:logoutUrl sendResult:kJSONLogoutSuccess];
}
ログアウトはしますが、ログアウトが成功したことを確認する必要があるデリゲートの手順には到達しません。
-(void)updatedDictionaryFromJson:(NSDictionary *)items withResult:(JsonResult)result{
// do some other stuff..
if (result == kJSONLogoutSuccess) {
//user logout was successful
NSLog(@"got some logout json");
}
}
アプリケーションがバックグラウンドになるときに呼び出しがないのはなぜですか?似たような経験をした人はいますか? アプリケーションはまだバックグラウンドにありますか? または、スレッドを辞任する必要がありますか?助言がありますか?