自定义声音不播放推送通知
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
,只是sound
,mp3
文件不是Apple的声音文件扩展名,他们只支持caf, aiff,...
将你的文件转换成iTunes然后你可以使用它
@Tj3n 它确实是“ios-sound”。我通过从 didReceiveRemoteNotification 注销 userInfo 确认了这一点。然而,现在唯一的问题是当应用程序未打开/在后台时播放声音/对推送通知做出反应。另外,我不知道您所说的不支持 mp3 是什么意思;它播放得很好,我过去用过很多次。
Hmm... 在 Apple 的 payload guide 中,它说音乐名称应该在 sound
参数和 caf
或 aiff
扩展名中,也许尝试先转换看看?
我从 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 触发任务时播放自定义声音