【发布时间】:2015-01-02 20:53:41
【问题描述】:
我想知道当应用程序终止时,如何继续在前台启动的异步 NSURLConnection。 目前,当应用程序进入后台时,我正在启动一个 NSURLConnection 。只要用户想要终止应用程序时的连接速度比连接慢,这种方法就可以正常工作。但是当用户比它快时,无法建立连接。 这是我的代码:
// AppDelegate.m
- (void)applicationDidEnterBackground:(UIApplication *)application
{
AnObject *newObject = [[AnObject alloc] init];
[newObject InactiveApp];
}
// AnObject.m
- (void)InactiveApp
{
self.backgroundTaskID = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL];
// setting up the NSURLRequest
// [...]
dispatch_async(dispatch_get_main_queue(), ^
{
[NSURLConnection connectionWithRequest:request delegate:self];
});
}
// delegate functions, endBackgroundTask-closing, etc. is following
不幸的是,这不起作用,我想知道是否有人知道另一种解决方法。必须有一种类似于 Snapchat 或 WhatsApp 的方式,因为当您编写消息并在按下发送后立即终止应用程序时,消息将被传递。
我能想到的唯一方法是通过后台获取来完成,但我认为这不是最好的解决方案,因为我只想在应用程序发送到后台时建立一个连接。
【问题讨论】:
-
使用 NSURLSession 和后台配置。
-
我从 NSURLSession 阅读了类参考,我想我会尝试使用 下载会话 的 NSURLSession。谢谢你!
标签: ios objective-c background nsurlconnection