2017-08-31 48 views
0

我已检查所有通知都已正确安排在通知中心上。而且,我的应用委托中包含completionHandler([.alert, .badge, .sound])代码,以确保即使用户使用该应用时通知也会显示出来。当应用程序运行时本地通知不会弹出,但会在应用程序处于后台时弹出

结果是通知将只显示应用程序在后台,而不是其他方式。

+0

你处理收到通知在AppDelegate中(当应用程序被激活)? –

+0

你可以检查这个链接 - https://stackoverflow.com/questions/39713605/getting-local-notifications-to-show-while-app-is-in-foreground-swift-3 我希望这会为你工作。 –

+0

请检查此链接 - https://stackoverflow.com/questions/39713605/getting-local-notifications-to-show-while-app-is-in-foreground-swift-3 –

回答

0

你是否像这样处理应用程序委托中的本地通知?

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 
} 

确保您正在处理使用本地通知方法的本地通知。

+0

是的!我做到了。我使用:func userNotificationCenter(_ center:UNUserNotificationCenter,didReceive响应:UNNotificationResponse,withCompletionHandler completionHandler:@escaping() - > Void){ –

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 
相关问题