我开发了IBeacon App。当应用程序处于后台模式并且我进入信标区域时,会触发UILocalNotification。但问题是,如果我杀了应用程序,通知仍会触发。当应用程序处于后台时,我使用locationMgr.RequestAlwaysAuthorization ();
来捕获位置更改。我已经编写了背景安全的任务来扩大我在iPhone上的背景时间。
我尝试使用UIApplication.SharedApplication.ApplicationState
,但当应用仅处于后台时,它会返回true,而不会终止。
我使用locationMgr.RequestAlwaysAuthorization ();
,因为DidEnterRegion
仅在位置设置为始终时调用。
总而言之,我正在寻找如何仅在后台和主动模式下监控EnterRegion& ExitRegion的解决方案。 申请被杀时
答案 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
搜索通知。
如果您只想在第一种情况下避免这些通知,我恐怕我不知道有任何方法可以检测到用户已主动终止该应用。