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实现长时间后台运行

前段时间做一个闹钟类型的产品,使用localnotification不太符合要求。 对于ios7,苹果支持几种后台运行模式,backgroundTask,voip,后台播放音乐等,具体看官方文档就好...
  • xxq_2011
  • xxq_2011
  • 2015年05月04日 12:45
  • 2497

ios实现长时间后台运行

前段时间做一个闹钟类型的产品,使用localnotification不太符合要求。 对于ios7,苹果支持几种后台运行模式,backgroundTask,voip,后台播放音乐等,具体看官方文档...
  • majiakun1
  • majiakun1
  • 2015年04月24日 16:07
  • 574

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

关于IOS后台执行 1.默认创建的工程,Application does not run in background默认为NO(疑), 此时的application.backgroundTime...
  • firekyrin
  • firekyrin
  • 2016年01月17日 18:17
  • 4201

ios后台长时间运行的选择策略及注意事项

概述本篇文章是介绍ios程序的后台长时间运行的策略的选择。如果想了解后台运行的基本原理,请查看上一篇博文http://blog.csdn.net/smiling8866/article/details...
  • Smiling8866
  • Smiling8866
  • 2016年04月05日 13:41
  • 612

ios 实现在后台运行的长期任务

当用户点击home键,ios系统会让我们的程序进入到后台状态,对于许多应用来说,程序进入到后台后会被挂起,挂起应用能够提高电池的使用时间,还能让ios把重要的系统资源分配给正在前台运行的程序。   ...
  • zhaogengzi
  • zhaogengzi
  • 2015年05月09日 20:45
  • 2219

NSTimer计时器后台运行的解决方法

思路: 切换至后台计时器暂停,记录下当前时间,切换回前台计时器回复,计算中间时间差 [[NSNotificationCenter defaultCenter] addObserver:self s...
  • lqzitongyezu
  • lqzitongyezu
  • 2016年08月10日 17:25
  • 1777

让App进入后台以后长时间在后台运行,并且能正常接收来自前台的消息

以前关于让app在后台长时间运行是用播放一个无声的音乐来实现,但是这样也智能争取到最多10分钟的后台运行时间,如果是跟蓝牙通信有关的app的话,倒是可以通过配置info.plist文件的键值对来实现a...
  • IOS_dashen
  • IOS_dashen
  • 2015年12月08日 10:31
  • 955

iOS 低功耗蓝牙 在后台长期运行的解决方案

最近一段在做低功耗蓝牙的项目,  有个需求是需要在后台长期运行蓝牙的连接 重连 数据传输等操作,但是苹果对后台运行的程序比较严格,网上现有的很多方案都不合适,后面在苹果文档上找到了答案,完美解决! 就...
  • wfawff
  • wfawff
  • 2015年09月14日 10:57
  • 3622

iOS 让 APP 在后台长时间运行

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

iOS 如何让一个程序在后台运行不被挂起,不死掉

iOS 如何让一个程序在后台运行不被挂起,不死掉前言:这是本人的第一篇博客,本来对这种写博客这种东西无感,但是发现有些东西如果不晒在网上,会让很多人费很多的时间去找一种问题的解决方法,于是我决定不做一...
  • u010818357
  • u010818357
  • 2016年04月22日 16:05
  • 14085
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS实现长时间后台运行
举报原因:
原因补充:

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