我已检查所有通知是否已在 NotificationCenter 中正确安排。而且,我的app委托中有completionHandler([.alert, .badge, .sound])
代码,以确保即使用户使用该应用程序也会显示通知。
结果是通知只显示应用程序在后台,而不是其他方式。
答案 0 :(得分:0)
你是否像这样处理app delegate中的本地通知?
func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) {
// Do something you want
println("Received Local Notification:")
println(notification.alertBody)
}
上面是本地通知,还有另一种方法用于远程通知,
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
// Do something you want
}
确保使用本地通知方法处理本地通知。
答案 1 :(得分:0)
请试试这个:
extension AppDelegate: UNUserNotificationCenterDelegate {
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler([.alert, .sound])
}
}
您可以找到Apple doc here。
我所理解的是,无论我发送给completionHandler
的任何选项都会发生。
如果您只发送.alert
,它只会显示提醒
如果您只发送.sound
,它只会播放通知指定的声音。
如果我们同时发送两个选项,它们都会做。
如果我们不发送任何参数,它将不会做任何事情。
所以您需要做的是将参数发送为.alert
。
在didFinishLaunchingWithOptions
中,您还需要添加
UNUserNotificationCenter.current().delegate = self