我正在创建一个我想要本地通知的应用程序。而且发生了一些奇怪的事情。我安排通知:
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的新手,我不知道为什么会这样。这让我疯狂,不知道为什么我的通知没有被解雇,即使它是预定的,一切......
有人能帮帮我吗?如果您需要更多信息,请询问。
答案 0 :(得分:1)
我没有在通知中添加唯一ID(notification.userInfo并不总是唯一的),而是覆盖了之前的预定通知。这就是为什么它有效,有时却不起作用。
通过使其独特来解决问题。 谢谢
答案 1 :(得分:0)
自iOS 8.0起,您必须要求获得本地通知的许可作为远程通知:
let notificationSettings = UIUserNotificationSettings(forTypes: UIUserNotificationType.Alert, categories: nil)
UIApplication.sharedApplication().registerUserNotificationSettings(notificationSettings)
中查看更多详情