最近在做一个app,其中的需求 获取手机验证码的时候需要实现60s倒计时。
但由于app本身不是音频类的,所以想试试利用音频类app的特权实现我app的倒计时功能,
又害怕 通不过app store的审核,在网上搜了一下资料了解到。
app所谓的后台是一个虚拟的后台,app进入后台之后主线程就会被挂起。定时器(实现倒计时功能)是在主线程里面的。所以在主线程被挂起的时候,定时器也被挂起了,解决办法是在app进入到后台的时候利用 UIApplication 的 beginBackgroundTaskWithExpirationHandler:实例方法,来向 iOS 借点时间。
默认情况下,如果在这个期限内,长期任务没有被完成,iOS 将终止程序。可以使用 beginBackgroundTaskWithExpirationHandler:实例方法,来向 iOS 再借点时间。完成后,要告诉iOS,任务完成,提交完成申请“好借好还”。
参考链接: