定期触发iOS应用

时间:2014-03-12 21:08:06

标签: ios

我正在试图弄清楚是否有任何允许的方式让我的iOS应用程序定期运行(比如每4小时)并抓住用户位置。我知道有三种可能的方法可以实现:

  1. 本地通知(Handling Local and Remote Notifications
    这个解决方案的问题是,当应用程序在后台暂停一段时间后被杀或手机重启时,本地通知将触发并提供UI但实际上没有启动应用程序,所以我无法抓住位置。
  2. 警报(Configuring Alarms
    正如Apple的文档所说:

      

    注意:警报不能用作UILocalNotification。警报要求您创建在用户的日历或提醒应用程序中可见的事件或提醒。 UILocalNotification更适合于不涉及Calendar数据库的一般用途。

    因此,我不仅要反对Apple的推荐,而且还要求访问用户的日历,这对用户没有任何意义。

  3. NSTimer(NSTimer) 我可以创建一个NSTimer,但是这个解决方案已经被here解答为不可行(那是三年半前,但我猜测答案没有改变)。

  4. 还有其他方法可以在iOS上实现吗?

2 个答案:

答案 0 :(得分:1)

我不知道每隔X小时定期获取它的方法,但重要更改位置API可能适用于您的用例。只要用户位置发生重大变化,它就会为您提供更新。

修改的 如果您的应用未在后台运行,则会重新启动您的应用。 /编辑

https://developer.apple.com/library/ios/documentation/userexperience/conceptual/LocationAwarenessPG/CoreLocation/CoreLocation.html#//apple_ref/doc/uid/TP40009497-CH2-SW10

此堆栈溢出问题还有很多关于此服务的信息:

Behaviour for significant change location API when terminated/suspended?

答案 1 :(得分:0)

请参阅Apple Location and Maps Programming Guide在后台获取位置事件部分。问题中提到的其他方法实际上不会唤醒应用程序,UILocalNotification除外,然后仅当用户在通知中心中点击时。