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()
}
这是我的许可代码。
答案 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])
}