在应用程序被杀死时阻止UILocalNotifications

时间:2015-12-09 11:10:27

标签: ios xamarin ibeacon

我开发了IBeacon App。当应用程序处于后台模式并且我进入信标区域时,会触发UILocalNotification。但问题是,如果我杀了应用程序,通知仍会触发。当应用程序处于后台时,我使用locationMgr.RequestAlwaysAuthorization ();来捕获位置更改。我已经编写了背景安全的任务来扩大我在iPhone上的背景时间。

我尝试使用UIApplication.SharedApplication.ApplicationState,但当应用仅处于后台时,它会返回true,而不会终止。

我使用locationMgr.RequestAlwaysAuthorization ();,因为DidEnterRegion仅在位置设置为始终时调用。

总而言之,我正在寻找如何仅在后台和主动模式下监控EnterRegion& ExitRegion的解决方案。 申请被杀时

2 个答案:

答案 0 :(得分:2)

在iOS 7.1之前,这是iOS的默认行为,每个人都抱怨它。从iOS 7.1开始,信标监控将启动应用程序,即使它们被杀死。

您需要的是一种方法,可以检测某个应用在再次启动时是否已被杀死,以便您可以取消通知。不幸的是,我不知道有任何方法可以做到这一点。

答案 1 :(得分:2)

应用程序终止(未运行)的原因有几个:

  • 因为用户主动终止了它(双击主页按钮,轻扫应用程序)

  • 因为操作系统需要内存并终止它

  • 因为操作系统更新了应用程序并终止了它

  • 因为设备已重新启动,且应用尚未启动

您是想在所有情况下避免通知,还是仅在第一个通知中使用?

如果您想在所有情况下都避免收到通知,可以尝试删除AppDelegate的{​​{1}}方法(或applicationWillTerminate:通知的观察者)中的本地通知:< / p>

UIApplicationWillTerminateNotification

(您也可以使用- (void)applicationWillTerminate:(UIApplication *)application { [application cancelLocalNotification:<insert here the notification you saved>]; } ,或使用cancelAllLocalNotifications搜索通知。

如果您只想在第一种情况下避免这些通知,我恐怕我不知道有任何方法可以检测到用户已主动终止该应用。