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