如何在应用程序活动,后台或终止时每小时触发一个方法

时间:2016-08-18 09:06:08

标签: ios objective-c iphone nstimer

如何触发每小时的方法,无论应用程序是活动的还是后台或终止的。 该方法应该每小时触发一次。

   NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:60*60 target:self selector:@selector(callYourMethod:) userInfo:nil repeats:YES];

我听说NSTimer在10分钟后无法正常工作。

任何人都可以建议我如何在iOS Objecitve-C中每隔一小时激活一个触发方法的方法

1 个答案:

答案 0 :(得分:0)

在本地管理此类任务是个坏主意。您无法承受NSTimer或GCD,因为它们的设计目的是在应用程序处于前台状态时使用。

当你在后台工作时,应用程序可以在几分钟后使计时器无效或调度方法 - 无论如何 - 由iOS自行决定。如果系统需要为其他应用释放内存或优化电池消耗,则会将应用置于暂停状态。

您只能通过使用iOS 8中引入的PushKit Framework的VoIP通知强制唤醒应用程序从“已关闭”或“已暂停”状态。请注意,只有在您实施的情况下才应使用此类通知你的应用程序中的VoIP服务。这个框架记录很差,首先是Apple,但也有其他网站,如StackOverflow。我建议您按照this tutorial by Pierre-Marc Airoldi一步一步指导您,以构建使用VoIP服务的应用程序的全功能演示。 请注意,标准通知在您收到时不会执行任何操作:只有在您单击通知时才会触发AppDelegate中的方法。如果您不想向用户显示通知,请在没有消息的情况下发送通知;它不会在屏幕上显示,但也会收到。