0

我正在创建一个应用程序,需要每天为日出和日落启动本地通知。如何解决一个应用程序,触发重复本地通知,但在不断变化的时间表?

  • 的日出和日落时间每天都在改变。
  • 我想要的本地通知的报名参加,即使用户没有打开的应用程序(即后台任务)的地方。因此,用户安装应用程序,设置他的位置(因为日出和susnet计算是基于位置的),然后他知道他会得到日出和每天设置的通知,而不需要打开应用程序或连接到互联网。
  • 理想情况下,我需要超过它运行至少每隔一段给定的时间段注册本地通知后台任务。 “例如在下周注册本地通知,在这种情况下,我需要它每周至少运行一次”。
  • 没有当前的背景模式适合我的情况下,我尝试了背景获取,但因为是没有下载的数据的iOS停了几天
  • 我知道我可以使用推送通知的运行后我的后台任务,但我不想,除非这是我的最后一个选择,因为即使手机没有连接到互联网,我也希望通知发生。

那么你觉得我该怎么解决呢?有什么我失踪?

回答

0

取得地点为背景的每个“N”分钟。通过使用beginBackgroundTaskWithExpirationHandler和NSTimer。它保持应用程序在后台生活。 所以,你可以在后台安排一个localnotification。 对于后台获取位置更新参考链接 How do I get a background location update every n minutes in my iOS application?

(从iOS7有限长度的后台任务时间缩短到180秒。所以你必须获取下一个180秒内的位置。) 如果用户强制退出应用程序。该应用程序销毁了所有的任务。使用重要的位置更改或区域监视来重新启动后台任务并获取每n分钟的位置。

+0

我以为不是这种情况了。我认为一旦你达到门槛,iOS会暂停NSTimer。而在后台触发应用程序的唯一方法是通过使用其中一种背景模式执行后台执行。 – Abd4llA

+0

如果你在180秒内得到位置。应用程序的寿命延长到180秒。你每180秒获得一个位置。你可以通过NSLog检查背景剩余时间(@“backgroundTimeRemaining:%.0f”,[[UIApplication sharedApplication] backgroundTimeRemaining]); – Prabha

相关问题