收到推送通知时不显示横幅仅振动设备

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: 传入远程通知的方法。使用提供的 通知字典以相应地更新您的应用程序。因为你的 应用程序正在运行,您可以悄悄地合并通知数据或 更新您的用户界面并让用户知道新信息 可用。

【讨论】:

应用程序关闭。我收到通知,但屏幕上没有警报显示,只有设备振动。

以上是关于收到推送通知时不显示横幅仅振动设备的主要内容,如果未能解决你的问题,请参考以下文章

每个推送通知横幅在 iOS9 上显示两次 [重复]

当应用程序处于前台时收到推送通知时,是不是可以为 ios 显示横幅?

Android 推送通知横幅未在某些设备中显示

iOS 本地推送通知未唤醒设备

打开 PWA 时收到推送事件时不显示通知

是否可以仅在 iOS 中的推送通知上振动?