应用程序打开时,ios 9推送通知未显示

时间:2015-11-10 08:58:52

标签: ios swift2

if (deviceToken == nil) {
            print("There is no deviceToken saved yet.")
            let settings = UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil)
            UIApplication.sharedApplication().registerUserNotificationSettings(settings)
            UIApplication.sharedApplication().registerForRemoteNotifications()
        }

这是我的许可代码。

3 个答案:

答案 0 :(得分:3)

如果您的应用已经打开,则不会显示任何通知,但应用程序负责更新用户界面或下载新内容。

实施application(_:didReceiveRemoteNotification:fetchCompletionHandler:) 来处理通知,如documentation中所述。在这里,您可以创建一个警报,显示标题和消息,类似于您在收到标准通知时看到的横幅。

答案 1 :(得分:0)

要在运行应用程序时显示警报视图,您必须使用:

func application(_ application: UIApplication,
didReceiveRemoteNotification userInfo: [NSObject : AnyObject])

通知有效负载位于userInfo变量中。你必须决定如何处理它,如何展示它等。

文档说:

  

当操作系统发送本地通知或远程时   通知和目标应用未在前台运行,它   可以通过警报图标徽章向用户显示通知   数字或声音。如果有通知提醒并且用户点击   或点击动作按钮(或移动动作滑块),即应用程序   启动并调用传入local-notification对象的方法   或远程通知有效负载。 如果应用正在运行中   传递通知时的前景,应用程序委托   收到本地或远程通知

这意味着,当应用程序正在运行并收到通知时,不会显示系统警报。

答案 2 :(得分:0)

Need to add the completionHandler part, otherwise push notification is received. but it will be not shown.

@available(iOS 10.0, *)
    func userNotificationCenter(_ center: UNUserNotificationCenter,  willPresent notification: UNNotification, withCompletionHandler   completionHandler: @escaping (_ options:   UNNotificationPresentationOptions) -> Void) {
  completionHandler([.alert, .badge, .sound])
}