郑州 iOS 點 - 关于保持后台运行
2017-05-26 17:40
225 查看
今天直奔主题;
就两种,一种持久的,一种10分钟的;
先说持久的
![](http://img.blog.csdn.net/20170526173115440?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenpfaW9zX3VuaW9uXzIwMTY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
这个不多说,照着官方的做就 OK,但是注意,音频,VoIP 那样的如果你的程序里没有,就别上传了反正也过不了,注意要用就和自己 APP 相关backgroundmodes的来选择;
=====================================
然后是10分钟的,说短不短说长不长,在applicationDidEnterBackground粘上下面这段就 OK 了,但是一定要注意,只要贴上了,10分钟内用户不打开你的 APP,APP 就会自动走 Terminate:
UIApplication* apc = [UIApplication sharedApplication];
__block UIBackgroundTaskIdentifier bgt;
bgt = [apc beginBackgroundTaskWithExpirationHandler:^{
dispatch_async(dispatch_get_main_queue(), ^{
if (bgt != UIBackgroundTaskInvalid) {
bgt = UIBackgroundTaskInvalid;
}
});
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
dispatch_async(dispatch_get_main_queue(), ^{
if (bgt != UIBackgroundTaskInvalid)
{
bgt = UIBackgroundTaskInvalid;
}
});
});
就两种,一种持久的,一种10分钟的;
先说持久的
这个不多说,照着官方的做就 OK,但是注意,音频,VoIP 那样的如果你的程序里没有,就别上传了反正也过不了,注意要用就和自己 APP 相关backgroundmodes的来选择;
=====================================
然后是10分钟的,说短不短说长不长,在applicationDidEnterBackground粘上下面这段就 OK 了,但是一定要注意,只要贴上了,10分钟内用户不打开你的 APP,APP 就会自动走 Terminate:
UIApplication* apc = [UIApplication sharedApplication];
__block UIBackgroundTaskIdentifier bgt;
bgt = [apc beginBackgroundTaskWithExpirationHandler:^{
dispatch_async(dispatch_get_main_queue(), ^{
if (bgt != UIBackgroundTaskInvalid) {
bgt = UIBackgroundTaskInvalid;
}
});
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
dispatch_async(dispatch_get_main_queue(), ^{
if (bgt != UIBackgroundTaskInvalid)
{
bgt = UIBackgroundTaskInvalid;
}
});
});