iOS实现长时间后台运行

转载 2016年05月30日 15:19:15

前段时间做一个闹钟类型的产品,使用localnotification不太符合要求。

对于ios7,苹果支持几种后台运行模式,backgroundTask,voip,后台播放音乐等,具体看官方文档就好。

我这边需要在后台跑一个长时间运行的计时器,所以就不能让app进入suspend状态。

很早以前听说可以通过后台播放音乐来实现,借鉴了一下,测试好几天,找出来了一个还比较靠谱的方案:

首先在

- (void)applicationDidEnterBackground:(UIApplication *)application{

}

里面申请backgroundTask

[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil]

实现一个可以运行几分钟的权限。

然后写一个计时器实时检测 backgroundTimeRemaining

- (void)tik{

    if ([[UIApplication sharedApplication] backgroundTimeRemaining] < 61.0) {

       [[CKAudioTool sharedInstance] playSound];

        [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil];

    }

}

 [[CKAudioTool sharedInstance] playSound];这段代码是去播放了一个无声的音乐,很关键的一点是

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:&error]

这样后台播放就不会影响到别的程序播放音乐了。

我这个计时器每分钟运行一次tik函数,如果发现后台运行时间小于一分钟了,就再去申请一个backgroundTask。

神奇的地方在于:backgroundTask不能在程序已经进入后台的时候申请,可以用一个播放音乐的假前台状态去申请,所以可以做到不断申请到权限,也就完成了长时间后台执行。

应用实例大家可以去看一款app “同学闹钟”。去app store就可以下到。

相关文章推荐

ios实现长时间后台运行

ios实现长时间后台运行  2015-04-24 16:07 165人阅读 评论(0) 收藏 举报  分类: IOS(621)  前段时间做一个闹钟类型的产...
  • Lu_Ca
  • Lu_Ca
  • 2016年01月08日 17:28
  • 658

iOS开发:保持程序在后台长时间运行

iOS为了让设备尽量省电,减少不必要的开销,保持系统流畅,因而对后台机制采用墓碑式的“假后台”。除了系统官方极少数程序可以真后台,一般开发者开发出来的应用程序后台受到以下限制: 1.用户按Home之...

iOS后台长时间运行解决方案

关于IOS后台执行 1.默认创建的工程,Application does not run in background默认为NO(疑), 此时的application.backgroundTime...

实现iOS长时间后台的两种方法:Audiosession和VOIP

我们知道iOS开启后台任务后可以获得最多600秒的执行时间,而一些需要在后台下载或者与服务器保持连接的App是如何突破600秒的限制的呢?像网易公开课就可以在后台持续下载,优酷也可以在后台持续缓存,这...
  • think12
  • think12
  • 2013年01月24日 14:03
  • 4149

实现iOS长时间后台的两种方法:Audiosession和VOIP

我们知道iOS开启后台任务后可以获得最多600秒的执行时间,而一些需要在后台下载或者与服务器保持连接的App是如何突破600秒的限制的呢?像网易公开课就可以在后台持续下载,优酷也可以在后台持续缓存,这...

iOS开发:后台运行以及保持程序在后台长时间运行

第一部分 1.先说说iOS 应用程序5个状态: 停止运行-应用程序已经终止,或者还未启动。 不活动-应用程序处于前台但不再接收事件(例如,用户在app处于活动时锁住了设备)。 活动-app...

iOS开发:后台运行以及保持程序在后台长时间运行

第一部分 1.先说说iOS 应用程序5个状态: 停止运行-应用程序已经终止,或者还未启动。 不活动-应用程序处于前台但不再接收事件(例如,用户在app处于活动时锁住了设备)。 ...

iOS开发---后台运行以及保持程序在后台长时间运行

第一部分 1.先说说iOS 应用程序5个状态:停止运行-应用程序已经终止,或者还未启动。不活动-应用程序处于前台但不再接收事件(例如,用户在app处于活动时锁住了设备)。活动-app处于“使用中”的...

iOS开发:后台运行以及保持程序在后台长时间运行

苹果没有支持后台下载的backgroundMode,所以需要后台下载唯有借助其他方法去完成,一般的做法是把app伪装成定位和音乐程序,但这样往往被苹果审核驳回。 转自:http://www.jian...

后台长时间定时定位iOS

  • 2017年07月19日 19:09
  • 132KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS实现长时间后台运行
举报原因:
原因补充:

(最多只允许输入30个字)