【发布时间】:2016-08-18 09:06:07
【问题描述】:
无论应用程序是活动的、后台的还是终止的,如何每小时触发一个方法。 该方法应该每小时触发一次。
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:60*60 target:self selector:@selector(callYourMethod:) userInfo:nil repeats:YES];
听说 NSTimer 10 分钟后就不能工作了。
谁能建议我如何在 iOS Objecitve-C 中激活一个每隔一小时触发一个方法的方法
【问题讨论】:
-
没有万无一失的方法可以做到这一点。谁告诉你计时器有时间限制是错误的,或者你缺少上下文。如果应用程序被终止,您必须使用外部触发器(例如推送工具包通知)再次启动它。当它在后台时几乎相同,但你有更多的选择来唤醒它。没有一个是 100% 可靠的,尽管 PK 最接近。当然,您的应用必须是 VoIP 应用才能使用它。
-
你真的需要每小时做点什么吗?因为这对于移动应用程序来说是一个糟糕的设计。这样你会耗尽电池。如果用户杀死了你的应用程序,任务没有完成怎么办。如果需要,您最好在服务器端使用推送通知将其推送到您的应用程序。此外,只有 VOIP、音频、位置和附件应用程序可以在后台运行。滥用其中之一让您的应用在后台运行会导致您的应用被拒绝。
-
定时器在主线程上工作。当应用程序进入后台时,它的计时器变得无效。因此,当应用程序进入后台时,您不能这样做。
标签: ios objective-c iphone nstimer