Qam*_*man 25 web-services objective-c background-process ios
当我的应用程序在后台时,我想知道是否可以发送一些webservice调用.skype是如何做到的?即使我按下主页按钮,我的通话也保持连接状态.
Nat*_*nes 34
在rckoenes所述的基础上,允许应用程序在用户点击主页按钮后注册后台任务.完成这些任务的时间限制为10或15分钟.同样,您可以在用户回家后立即注册任务以完成任务,这不允许您在退出应用程序一小时后执行代码.
UIApplication* app = [UIApplication sharedApplication];
task = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:task];
task = UIBackgroundTaskInvalid;
}];
// Start the long-running task and return immediately.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Do the work associated with the task.
NSLog(@"Started background task timeremaining = %f", [app backgroundTimeRemaining]);
if (connectedToNetwork) {
// do work son...
}
[app endBackgroundTask:task];
task = UIBackgroundTaskInvalid;
});
Run Code Online (Sandbox Code Playgroud)
更新:如果您的应用程序支持iOs 4之前的iOS版本,则还应检查以确保在注册后台任务之前支持多任务处理.使用以下内容:
UIDevice* device = [UIDevice currentDevice];
BOOL backgroundSupported = NO;
if ([device respondsToSelector:@selector(isMultitaskingSupported)])
backgroundSupported = device.multitaskingSupported;
Run Code Online (Sandbox Code Playgroud)
Gag*_*iOS 30
试试这个...在后台运行应用程序的优秀代码,没有时间限制.(我测试它是为了从网络服务下载超过600 MB的数据.)
- (void)applicationDidEnterBackground:(UIApplication *)application
{
UIApplication *app = [UIApplication sharedApplication];
UIBackgroundTaskIdentifier bgTask;
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
}];
}
Run Code Online (Sandbox Code Playgroud)
更新::
您可以在此Apple doc 背景执行中找到有关多冲程的更多信息.
请在设备上测试.
| 归档时间: |
|
| 查看次数: |
58187 次 |
| 最近记录: |