关于ios:推送到达时未播放自定义声音

Custom sound not played when push arrives

我已向我的应用程序添加了自定义声音,但在推送到达时无法播放。
我不知道为什么不,我看不出有什么与我所做的不同,而且涉及的步骤很少。

1) 声音文件是一个有效的可听音频文件(我什至可以在 Xcode 中单击并播放它)。

2) 声音文件存在于应用程序包中:

enter

1
{"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。

我看不到我遗漏的任何步骤,也看不到任何不正确的地方。
有人有什么想法吗?


点击在 Xcode 中不起作用的声音文件。查看右侧的文件检查器并确保选中"目标成员"选项。


你提供的步骤几乎是我所拥有的一切,除了背景模式设置。我不得不从"功能">"背景模式"中检查"音频、播放和画中画"模式。希望有帮助。


准。到 Apple 的文档
https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103-SW6

准备自定义警报声音

对于 iOS 中的远程通知,您可以指定 iOS 在为应用程序显示本地或远程通知时播放的自定义声音。声音文件必须位于客户端应用程序的主包中。

自定义警报声音由 iOS 系统声音工具播放,因此它们必须采用以下音频数据格式之一:

1
2
3
4
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 秒。如果自定义声音超过该限制,则改为播放默认系统声音。