我已检查所有通知都已正确安排在通知中心上。而且,我的应用委托中包含completionHandler([.alert, .badge, .sound])
代码,以确保即使用户使用该应用时通知也会显示出来。当应用程序运行时本地通知不会弹出,但会在应用程序处于后台时弹出
结果是通知将只显示应用程序在后台,而不是其他方式。
我已检查所有通知都已正确安排在通知中心上。而且,我的应用委托中包含completionHandler([.alert, .badge, .sound])
代码,以确保即使用户使用该应用时通知也会显示出来。当应用程序运行时本地通知不会弹出,但会在应用程序处于后台时弹出
结果是通知将只显示应用程序在后台,而不是其他方式。
你是否像这样处理应用程序委托中的本地通知?
func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) {
// Do something you want
println("Received Local Notification:")
println(notification.alertBody)
}
以上是本地通知并没有对hadle远程通知的另一个方法,
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
// Do something you want
}
确保您正在处理使用本地通知方法的本地通知。
是的!我做到了。我使用:func userNotificationCenter(_ center:UNUserNotificationCenter,didReceive响应:UNNotificationResponse,withCompletionHandler completionHandler:@escaping() - > Void){ –
请试试这个:
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
你处理收到通知在AppDelegate中(当应用程序被激活)? –
你可以检查这个链接 - https://stackoverflow.com/questions/39713605/getting-local-notifications-to-show-while-app-is-in-foreground-swift-3 我希望这会为你工作。 –
请检查此链接 - https://stackoverflow.com/questions/39713605/getting-local-notifications-to-show-while-app-is-in-foreground-swift-3 –