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

时间:2016-08-02 12:45:33

标签: ios swift push-notification apple-push-notifications

当我发送推送通知时,我收到设备上的通知,但它没有在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)
    }

2 个答案:

答案 0 :(得分:2)

最后我解决了这个问题。他们在PHP代码上的问题不在iOS代码中。在PHP代码中,他们缺少警告 aps 数组中的关键字,说明设备仅在接收通知时振动的原因。

答案 1 :(得分:0)

确保您的应用处于后台或已关闭,否则推送通知消息将无法在屏幕上显示。当应用程序在前台运行时,iOS直接将推送通知消息传递给主机应用程序,而不在主屏幕或通知屏幕上显示。

  

当您的应用程序位于最前端时,UIKit会提供本地和远程服务   直接通知您的app委托对象而不显示   任何系统UI。 UIKit打电话给   application:didReceiveLocalNotification:传入本地的方法   通知和   应用:didReceiveRemoteNotification:fetchCompletionHandler:   传入远程通知的方法。使用提供的   通知字典相应地更新您的应用程序。因为你的   应用程序正在运行,您可以安静地合并通知数据或   更新您的用户界面,让用户知道这些新信息   是可用的。