美文网首页
iOS应用后台常驻

iOS应用后台常驻

作者: 圈少 | 来源:发表于2016-06-29 10:08 被阅读0次

根据苹果文档中关于后台执行的描述,任何app都有10分钟左右的后台任务执行时间。 10分钟后,app会被iOS强行挂起。

但是,有5类app允许有“无限的”后台运行时间:

1.  Audio。

2.  Location/GPS。

3.  VoIP。

4.  Newsstand。

5.  Exernal Accessory 。

你可以将任何app声明为上述5种类型以获得无限的后台运行时间,但当你提交app到App Store时,苹果会审查你的app,一旦发现你“滥用”了后台API,你的app将被拒绝。

当然,对于企业开发而言,不存在“滥用”的问题——企业app可以通过OTA部署,不经过苹果商店审查。

在企业部署中,你可以将一个app声明为VoIP,但这个程序根本和VoIP无关,我们的目的只是为了让iOS给我们无限后台执行的权限。声明过程是在app的Info.plist文件中加入以下key:

首先在plist文件中的Required background modes这一项中新增以下两项:App play audio or streams audio/video using AirPlay和App provides Voice over IP services 。

UIBackgroundModes

voip

我测试了以下代码:

- (void)backgroundHandler {

NSLog(@"### -->backgroundinghandler");

UIApplication*app = [UIApplicationsharedApplication];

bgTask= [appbeginBackgroundTaskWithExpirationHandler:^{

[appendBackgroundTask:bgTask];

bgTask=UIBackgroundTaskInvalid;

}];

// Start the long-running task

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

while(1) {

NSLog(@"counter:%ld",counter++);

sleep(1);

}

});

}

- (void)applicationDidEnterBackground:(UIApplication*)application

{

BOOLbackgroundAccepted = [[UIApplicationsharedApplication]setKeepAliveTimeout:600handler:^{ [selfbackgroundHandler]; }];

if(backgroundAccepted)

{

NSLog(@"backgrounding accepted");

}

[selfbackgroundHandler];

}

通过测试,我获得了“无限的”后台执行时间。我不知道你认为“无限”到底是多长时间,但在这个例子中,后台任务至少运行了55个小时以上,一直到我失去耐心停止测试。

相关文章

  • iOS应用后台常驻

    根据苹果文档中关于后台执行的描述,任何app都有10分钟左右的后台任务执行时间。 10分钟后,app会被iOS强行...

  • iOS PushKit的使用

      由于iOS 10禁止了VoIP类应用常驻后台的权限,导致Xcode 8 打包出来的VoIP类应用后台长连接失效...

  • iOS 后台常驻

    伪后台? “Android是真后台,iOS是伪后台”这一条,Android是真后台真没错,它允许APP留存在后台,...

  • IOS后台定位以及位置上传方案

    IOS后台定位以及位置上传方案 iOS定位原理和使用建议 iOS后台持续定位并定时上传 iOS 通过定位获取常驻后...

  • iOS 常用常驻后台

    苹果官方给出以下可以申请后台运行 Audio and AirPlay(音频播放) Location updates...

  • 一种可以让应用常驻后台的方法

    废话 现在有的需求需要应用常驻后台,苹果只允许地图类和音乐类的软件常驻后台,但如国我们的应用不是这样的呢,就需要我...

  • 另类的"APP常驻"——UIStateRes

    在之前的项目中被iOS应用后台常驻这一问题所困扰,很多解决方法都有瑕疵,在应用审核时很容易被pass,比如:播放无...

  • iOS程序进入后台后仍运行定时器NSTimer

    iOS常驻后台 1、步骤一:在Info.plist中,添加"Required background modes"键...

  • iOS死灰复燃SDK 常驻后台运行 自动复活进程

    撸大师死灰复燃SDK 功能:用于iOS开发,令iOS APP进入后台或手机锁屏下常也能常驻后台活动、定位,即使杀死...

  • iOS蓝牙APP常驻后台

    如果你的应用在后台时也需要处理蓝牙事件,就必须在Info.plist中声明应用要支持蓝牙后台模式,这样,当有蓝牙事...

网友评论

      本文标题:iOS应用后台常驻

      本文链接:https://www.haomeiwen.com/subject/ohjerttx.html