自定义声音远程推送通知 iOS 不工作

Custom sound remote push notification iOS not working

我正在尝试更改远程消息的声音

我已经将文件添加到我的项目中,见图 1

我还将所有内容添加到我的 AppDelegate 中。在我添加的 didFinishLaunchingWithOptions 中:

 if (UIDevice.currentDevice().systemVersion as NSString).floatValue >= 8.0 {
        UIApplication.sharedApplication().registerUserNotificationSettings(UIUserNotificationSettings(forTypes: .Sound | .Alert | .Badge, categories: nil))
        UIApplication.sharedApplication().registerForRemoteNotifications()
    } else {
        UIApplication.sharedApplication().registerForRemoteNotificationTypes(.Badge | .Sound | .Alert)
    }

    //Clear badge
    UIApplication.sharedApplication().applicationIconBadgeNumber = 0
    UIApplication.sharedApplication().cancelAllLocalNotifications()

我实现的其他方法是:

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
    let deviceTokenString = deviceToken.hexString
    println(deviceTokenString)
    let task = service.writeForNotifications(token: deviceTokenString, completionHandler: {
    })
    task.resume()
}

func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {
    println("Failed to get token: \(error)")
}

我从服务中收到的Json是:

{"aps":{"alert":"The push message!", "sound":"ice.caf"}}

我不确定在哪一步忘记更改通知的声音? 当我收到通知时,它总是播放默认声音。

您确定文件已添加到捆绑包中吗?您可以通过查看 Build Phases.

中的 Copy Bundle Resources 来检查这一点

请参阅此图片以进行说明:

您需要检查以下内容才能推送通知工作

  • 声音文件不能超过 30 秒
  • 声音文件应该是有效的格式,(.aiff、.wav 或 .caf 文件)文件的一些时间扩展名显示它是正确的但它不是,所以你需要转换它
  • 声音文件应位于项目的根文件夹中,而不是子文件夹中
  • 有效负载(推送 json 数据)的格式应该正确(在您的情况下它看起来不错)
  • 在您的项目设置 Capabilities 中,推送通知应该是 on(在您的情况下它看起来 on 因为您收到的是默认声音通知)
  • 请确保您的声音文件在 Build Phases
  • 中的 Copy Bundle Resources 中列出