自定义声音不播放推送通知

Posted

技术标签:

【中文标题】自定义声音不播放推送通知【英文标题】:Custom Sound not playing for Push Notifications 【发布时间】:2016-03-04 03:15:26 【问题描述】:

使用 Backendless 推送通知,我的设备成功接收到它们。但是当我尝试将消息的“ios-sound”参数设置为我添加到项目中的 mp3 时,它不会播放任何声音:

在the Backendless docs 中,它说设置“ios-sound”会执行以下操作:

设置在设备上播放声音通知的 URL 或 用于播放声音的字节数组。

我不知道我做错了什么。嗯……

【问题讨论】:

当用户当前在应用程序中/通过引用 AppDelegate 的 didReceiveRemoteNotification: 方法中的 userInfo 字典中的“ios-sound”值打开应用程序时,我可以播放声音。但是,当应用关闭或在后台时,声音不会播放。 不是ios-sound,只是soundmp3文件不是Apple的声音文件扩展名,他们只支持caf, aiff,...将你的文件转换成iTunes然后你可以使用它 @Tj3n 它确实是“ios-sound”。我通过从 didReceiveRemoteNotification 注销 userInfo 确认了这一点。然而,现在唯一的问题是当应用程序未打开/在后台时播放声音/对推送通知做出反应。另外,我不知道您所说的不支持 mp3 是什么意思;它播放得很好,我过去用过很多次。 Hmm... 在 Apple 的 payload guide 中,它说音乐名称应该在 sound 参数和 cafaiff 扩展名中,也许尝试先转换看看? 我从 userInfo 中获取了我的 mp3 的路径,然后通过 AudioServices 播放声音。 【参考方案1】:

如果您在您的设备上成功收到通知, 那么您的音频文件可能很大

自定义声音在播放时必须少于 30 秒。如果自定义声音超过该限制,则会播放默认系统声音。因此请确保您的自定义声音小于 30 秒。

您的音频数据必须在 aiff、wav 或 caf 文件中。

服务器上的文件名和你在bundle中的文件名应该相同。只需将您的 mp3 转换为给定格式之一,然后仅在应用处于非活动状态时播放声音。

【讨论】:

文件长约1秒【参考方案2】:

除了我已经在做的 registerForRemoteNotifications() 之外,还通过调用 registerUserNotificationSettings 解决了这个问题。

  func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 
    backendless.initApp(APP_ID, secret:SECRET_KEY, version:VERSION_NUM)

    //NEEDED TO DO THE FOLLOWING TWO LINES
    let settings = UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil)
    UIApplication.sharedApplication().registerUserNotificationSettings(settings)

    UIApplication.sharedApplication().registerForRemoteNotifications()

    return true
  

我之前没有调用它的原因是因为Backendless Docs 表示只需调用 .registerForRemoteNotifications() 即可涵盖警报、徽章和声音。然而这似乎是不正确的。

【讨论】:

以上是关于自定义声音不播放推送通知的主要内容,如果未能解决你的问题,请参考以下文章

如何在收到推送通知而不实施 PushNotification 触发任务时播放自定义声音

如何使用 Apple 推送通知播放自定义声音?

Android推送通知的自定义声音不起作用(FCM)

用户收到推送通知时如何播放自定义声音文件? [复制]

IBM Worklight 5.0.5 - 在推送通知上播放自定义声音

添加自定义推送通知声音 ios5 不起作用