收到推送通知时不显示横幅仅振动设备
Posted
技术标签:
【中文标题】收到推送通知时不显示横幅仅振动设备【英文标题】:Not Showing banner only vibrate device when push notification received 【发布时间】:2016-08-02 12:45:33 【问题描述】:当我发送推送通知时,我在设备上收到通知,但它没有在 iPhone 的锁定屏幕或通知中心显示为横幅。我的 iPhone 上安装了 ios 9。
以下是我的代码。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
registerForPushNotifications(application)
return true
func registerForPushNotifications(application: UIApplication)
let settings = UIUserNotificationSettings(forTypes: [.Sound, .Alert, .Badge], categories: nil)
UIApplication.sharedApplication().registerUserNotificationSettings(settings)
UIApplication.sharedApplication().registerForRemoteNotifications()
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData)
print("DEVICE TOKEN = \(deviceToken)")
let tokenChars = UnsafePointer<CChar>(deviceToken.bytes)
var tokenString = ""
for i in 0..<deviceToken.length
tokenString += String(format: "%02.2hhx", arguments: [tokenChars[i]])
print("tokenString: \(tokenString)")
strDeviceToken = tokenString
func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError)
print("Error = \(error)")
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject])
print(userInfo)
【问题讨论】:
您是否从设备设置中检查了通知样式。 添加 func application( application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler handler: (UIBackgroundFetchResult) -> Void) 方法,检查raywenderlich.com/123862/push-notifications-tutorial 我正在实现这个方法。但我没有收到横幅。 【参考方案1】:我终于解决了这个问题。他们在 php 代码上的问题不在 iOS 代码中。在 php 代码中,他们在 aps 数组中缺少 alert 关键字,说明为什么设备仅在收到通知时才会振动。
【讨论】:
对我来说是 body 关键字。它存在,但有一个空字符串。这显然适用于 iOS 11,但不适用于 iOS 10。 @gebirgsbärbel 这对于 Firebase 云功能推送发送也是如此。对于 ios10,你必须输入“body”,它不应该是 nil 或“”。对于ios11没关系。 请检查此网址,您可以检查有效载荷格式developer.apple.com/library/archive/documentation/…【参考方案2】:确保您的应用处于后台或已关闭,否则屏幕上不会显示推送通知消息。当应用在前台运行时,iOS 直接将推送通知消息传递给宿主应用,而不在主屏幕或通知屏幕上显示。
当您的应用程序位于最前面时,UIKit 提供本地和远程 通知直接发送到您的应用委托对象而不显示 任何系统用户界面。 UIKit 调用 application:didReceiveLocalNotification: 传入本地的方法 通知和 应用程序:didReceiveRemoteNotification:fetchCompletionHandler: 传入远程通知的方法。使用提供的 通知字典以相应地更新您的应用程序。因为你的 应用程序正在运行,您可以悄悄地合并通知数据或 更新您的用户界面并让用户知道新信息 可用。
【讨论】:
应用程序关闭。我收到通知,但屏幕上没有警报显示,只有设备振动。以上是关于收到推送通知时不显示横幅仅振动设备的主要内容,如果未能解决你的问题,请参考以下文章