我想知道,如果我的 iOS 应用程序正在终止,如果我发送 HTTP 请求通知服务器用户下线,服务器会收到此请求吗?
我的代码如下:
- (void)applicationWillTerminateUIApplication *)application {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
NSMutableDictionary *para = [[NSMutableDictionary alloc]initWithCapacity:0];
[para setObject:[[NSUserDefaults standardUserDefaults] valueForKey"UserBindId"] forKey"unionId"];
[para setObject(0) forKey"OnlineState"];
[Post updateOnlineWithParameters:para withBlock:^(NSDictionary *commitResult, NSError *error) {
NSLog(@"applicationWillTerminate = %@", commitResult);
}];
}
Best Answer-推荐答案 strong>
见 Executing Finite-Length Tasks例如,当应用进入后台模式时,如何让应用请求一点额外时间(最多 3 分钟,这对于您的目的应该绰绰有余)。
- (void)applicationDidEnterBackgroundUIApplication *)application
{
bgTask = [application beginBackgroundTaskWithName"GoingOffline" expirationHandler:^{
// Well, we ran out of time before network request finished ... handle that however you want
// but tell the OS that we understand, and that the background task is done
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
NSDictionary *para = @{@"unionID" : [[NSUserDefaults standardUserDefaults] valueForKey"UserBindId"],
@"OnlineState" : @0};
[Post updateOnlineWithParameters:para withBlock:^(NSDictionary *commitResult, NSError *error) {
// when done, tell the OS that the background task is done
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
}
我尝试稍微简化您的参数(不需要可变字典......您可以使用字典文字),因此请根据您的需要进行调整。但希望你能按照这里的基本思路,如果你想在应用进入后台时做某事,你必须请求权限。
关于ios - 如果app在终止期间发送http请求,服务器会收到吗?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/31420556/
|