推送到达时未播放自定义声音
Posted
技术标签:
【中文标题】推送到达时未播放自定义声音【英文标题】:Custom sound not played when push arrives 【发布时间】:2015-02-24 05:34:54 【问题描述】:我已向我的应用程序添加了自定义声音,但当推送到达时它不会播放。 我不知道为什么不这样做,我看不出与我所做的有什么不同,而且涉及的步骤很少。
1) 声音文件是可听的有效音频文件(我什至可以在 Xcode 中点击并播放)。
2) 声音文件存在于应用程序包中:
3) 声音文件名在推送有效载荷中以准确的名称和大小写指定:
"aps":"alert":"Test","badge":0,"sound":"PyngNotification.caf"
4) 我尝试指定不带扩展名的名称,就像“PyngNotification”一样。
5) 推送到达并显示,但未播放自定义声音。
6) 无论推送内容是否包含“PyngNotification.caf”、“default”或“”的声音,手机都会发出相同的噪音。它是一种短暂的嗡嗡声。
7) 不会在手机上禁用声音,也不会禁用应用程序的推送。
8) 应用正在注册 UIRemoteNotificationTypeSound(如果是 ios8)。 (如果通过控制面板查看,应用会将声音显示为允许的类型之一)。
9) 我有不止一部手机,一部是 iOS8,一部是 iOS7。两者都没有播放声音。
10) 声音小于 30 秒。
11) 声音是 ma4 并使用 afconvert 转换为 caf。
我看不到我遗漏的任何步骤,也看不到任何不正确的步骤。 有人有什么想法吗?
【问题讨论】:
你能手动播放和here描述的一样的声音吗?我的设置和你一模一样,我的自定义声音在 iOS 8.3 上播放得很好 我也有相同的配置和使用与@black_stallion 提到的相同,但对我来说它适用于 IOS 7 但不适用于 IOS 8 我也有同样的问题!!每次都在 ios 9 设备上工作,但不是 ios 8 设备。疯狂的是我让它在 ios 8 设备上工作了 1 次。但在随后的不同声音的构建中,它不起作用。 感谢复制捆绑资源对我的帮助 【参考方案1】:点击在 Xcode 中不起作用的声音文件。查看右侧的文件检查器并确保选中“目标成员”选项。
【讨论】:
【参考方案2】:您提供的步骤几乎就是我所拥有的一切,除了背景模式设置。我必须从“功能”>“背景模式”中检查“音频、Airplay 和画中画”模式。希望对您有所帮助。
【讨论】:
【参考方案3】:累加。到 Apple 的文档
https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103-SW6
准备自定义警报声音
对于 iOS 中的远程通知,您可以指定 iOS 在为应用呈现本地或远程通知时播放的自定义声音。声音文件必须在客户端应用程序的主包中。
自定义警报声音由 iOS 系统声音工具播放,因此它们必须采用以下音频数据格式之一:
Linear PCM
MA4 (IMA/ADPCM)
µLaw
aLaw
您可以将音频数据打包到 aiff、wav 或 caf 文件中。然后,在 Xcode 中,将声音文件作为应用包的非本地化资源添加到您的项目中。
您可以使用 afconvert 工具来转换声音。例如,要将 16 位线性 PCM 系统声音 Submarine.aiff 转换为 CAF 文件中的 IMA4 音频,请在终端应用程序中使用以下命令:
afconvert /System/Library/Sounds/Submarine.aiff ~/Desktop/sub.caf -d ima4 -f caff -v
您可以通过在 QuickTime Player 中打开声音并从“电影”菜单中选择“显示电影检查器”来检查声音以确定其数据格式。
自定义声音在播放时必须少于 30 秒。如果自定义声音超过该限制,则会播放默认系统声音。
【讨论】:
以上是关于推送到达时未播放自定义声音的主要内容,如果未能解决你的问题,请参考以下文章