iOS - 如何保证将执行applicationWillTerminate

时间:2016-10-07 15:11:20

标签: ios swift xcode8

有没有办法保证applicationWillTerminate代表中的AppDelegate方法会受到影响?类似于info.plist文件中的键等等。?

我的目标:我正在使用信标应用,代码片段在this article。我的问题是,即使我在灯塔旁边,来自didEnterRegion的消息仍然会弹出。为了解决这个问题,我正在设置一个标志来控制消息。我的代码如下:

if(!UserDefaults.standard.bool(forKey: Constants.EnterZoneMsgShowName)){

    let notification = UILocalNotification()
    notification.alertBody = "Hi, you are about to arrive at CIDMA's office. Please open de demo app and turn on the bluetooth on your device to enrich your experience. "
    UIApplication.shared.presentLocalNotificationNow(notification)

    UserDefaults.standard.set(true, forKey: Constants.EnterZoneMsgShowName)
} 

我想在关闭应用时将此标志设置为false。我试着将它放在applicationWillTerminate,但这种方法并不是每次都被击中。

我想知道如何保证此代码会被点击,或者是否有更好的地方放置代码:UserDefaults.standard.set(false, forKey: Constants.EnterZoneMsgShowName)

1 个答案:

答案 0 :(得分:2)

  

applicationWillTerminate(_ :) - 告诉代表该应用程序的时间   终止。

对于不支持后台执行或与iOS 3.x或更早版本关联的应用,当用户退出应用时,此方法始终

对于支持后台执行的应用,当用户退出应用时,此方法通常不会被调用,因为在这种情况下应用只会移动到后台。但是,可以在应用程序在后台运行(未暂停)并且系统因某种原因需要终止它的情况下调用此方法。

如果您的应用程序支持后台执行,您要调用的是applicationDidEnterBackground,当用户退出时,将调用此方法而不是applicationWillTerminate: