iOS UILocalNotification已安排,但未被解雇

时间:2016-01-12 11:18:13

标签: ios iphone notifications swift2 uilocalnotification

我正在创建一个我想要本地通知的应用程序。而且发生了一些奇怪的事情。我安排通知:

static func setNotification(body: String, departure: Double, notification_info: Dictionary<String, String> )
{
    let notification = UILocalNotification()
    notification.alertBody = body
    notification.fireDate =  NSDate(timeIntervalSinceNow: departure) 
    notification.alertAction = "ShowDetails"
    notification.userInfo = notification_info
    notification.soundName = UILocalNotificationDefaultSoundName
    UIApplication.sharedApplication().scheduleLocalNotification(notification)
    print("notification over: " + String(departure))
    print("-------" + String( notification.fireDate ))
}

我打印了我应该收到通知的秒数。 我进入后台模式,并在收到通知时继续观看。当时间过去了,即使我确定我处于后台模式,也没有通知。 (在Xcode中我看看调试导航器&gt;能量影响,它说我在后台)。

当我重新启动手机并运行应用程序时,它会显示通知。一切都很完美。然后,经过一些更多测试并使用该应用程序后,我的通知再次停止工作(即使通知仍在安排中。我正在跟踪所有预定的通知:

        UIApplication.sharedApplication().scheduledLocalNotifications

我仍然是Swift的新手,我不知道为什么会这样。这让我疯狂,不知道为什么我的通知没有被解雇,即使它是预定的,一切......

有人能帮帮我吗?如果您需要更多信息,请询问。

  • 编辑:
    • 我确实设置了权限
    • 通知在AppDelegate
    • 中设置
    • 出发时间肯定是对的

2 个答案:

答案 0 :(得分:1)

我没有在通知中添加唯一ID(notification.userInfo并不总是唯一的),而是覆盖了之前的预定通知。这就是为什么它有效,有时却不起作用。

通过使其独特来解决问题。 谢谢

答案 1 :(得分:0)

自iOS 8.0起,您必须要求获得本地通知的许可作为远程通知:

let notificationSettings = UIUserNotificationSettings(forTypes: UIUserNotificationType.Alert, categories: nil)
UIApplication.sharedApplication().registerUserNotificationSettings(notificationSettings)   

Location Notifications

中查看更多详情