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

自定义声音远程推送通知iOS不工作,ios,swift,apple-push-notifications,Ios,Swift,Apple Push Notifications,我正在尝试更改远程消息的声音 我已将该文件添加到我的项目中,请参见图1 我还将所有内容添加到AppDelegate中。在DidFinishLaunchingWith选项中,我添加了: if (UIDevice.currentDevice().systemVersion as NSString).floatValue >= 8.0 { UIApplication.sharedApplication().registerUserNotificationSettings(UI

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

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

我还将所有内容添加到AppDelegate中。在DidFinishLaunchingWith选项中,我添加了:

 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"}}
我不确定我忘记更改通知的声音了吗?
当我收到通知时,它总是播放默认声音。

您确定该文件已添加到捆绑包中吗?您可以通过查看
构建阶段
中的
复制捆绑资源
来检查这一点

请参见此图以了解更多信息:


您需要检查以下事项才能推送通知

  • 声音文件不应大于30秒
  • 声音文件应该是有效的格式,(.aiff、.wav或.caf文件)文件的某个时间扩展名显示它是正确的,但它不是,所以您需要转换它
  • 声音文件应该位于项目的根文件夹中,而不是子文件夹中
  • 支付负载(推送json数据)应该是正确的格式(在您的情况下看起来不错)
  • 在项目设置的
    功能中,推送通知应该是
    打开的
    (在您的情况下,它看起来是
    打开的
    ,因为您收到的通知带有默认声音)
  • 请确保您的声音文件列在
    构建阶段的
    复制捆绑资源中

请检查生成的“ipa”文件中是否存在“ice.caf”。它可能已添加到项目中,但未添加到构建中。或者格式无效。例如,用“wav”文件试试。是的,这是我的问题!谢谢!是的,IOS 8.3或最新版本有问题,它将在IOS 7上运行。它可能是一个bug,你必须通过推送通知传递它。当您正确设置推送通知时,iOS会自动处理。请参阅我从该服务收到的json。@HannesVandenBerghe它的问题已经完成,实际上是在PHP脚本中出现的。仍然添加了默认的声音。我把它改成了自定义的声音名称&it-workedI有一个31秒的.wav文件,在iphone11pro上运行良好,但在iphone11上没有声音。我把它缩短到28秒(以防万一),现在它可以在每一部iPhone上运行。你如何确保你的声音文件在拷贝包资源中被监听?