美文网首页iOS开发
iOS 后台完成倒计时的功能

iOS 后台完成倒计时的功能

作者: 文刂丽 | 来源:发表于2016-03-11 15:04 被阅读3087次

最近在做一个app,其中的需求 获取手机验证码的时候需要实现60s倒计时。

但由于app本身不是音频类的,所以想试试利用音频类app的特权实现我app的倒计时功能,

又害怕 通不过app store的审核,在网上搜了一下资料了解到。

app所谓的后台是一个虚拟的后台,app进入后台之后主线程就会被挂起。定时器(实现倒计时功能)是在主线程里面的。所以在主线程被挂起的时候,定时器也被挂起了,解决办法是在app进入到后台的时候利用 UIApplication 的 beginBackgroundTaskWithExpirationHandler:实例方法,来向 iOS 借点时间。

默认情况下,如果在这个期限内,长期任务没有被完成,iOS 将终止程序。可以使用 beginBackgroundTaskWithExpirationHandler:实例方法,来向 iOS 再借点时间。完成后,要告诉iOS,任务完成,提交完成申请“好借好还”。

参考链接:

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

IOS 后台挂起程序 当程序到后台后,继续完成Long-Running Task 任务

iOS 发送验证码倒计时

iOS 解决后台暂停倒计时问题

相关文章

网友评论

  • Dwyane_Coding:https://www.imooc.com/article/35385 哈哈,我就说怎么这么熟悉,因为我读文档的时候读过这个方法
  • Lydia_qing:你好,你用的音频类的APP实现的这个功能吗? 对上线有影响吗?
    文刂丽:@Lydia_qing :relaxed:
    Lydia_qing:@yzb 好的,谢谢
    文刂丽:@Lydia_qing 不是,在APPDelegate里面实现这两个方法:
    // 应用程序后台运行,
    // 在这个方法中调用beginBackgroundTaskWithExpirationHandler block申请时间,beginBackgroundTaskWithExpirationHandler是向ios虚拟后台申请时间
    - (void)applicationDidEnterBackground:(UIApplication *)application
    // 应用程序即将进行后台运行,
    // 在这个方法中将任务销毁
    - (void)applicationWillEnterForeground:(UIApplication *)application

    用这个方法,appStore已审核通过.

本文标题:iOS 后台完成倒计时的功能

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