如何使用自定义声音进行推送通知?
根据我的研究和阅读,我发现有效负载应该具有应用程序包中或应用程序数据容器的Library / Sounds文件夹中的文件名。
如何将文件放在那里?
答案 0 :(得分:35)
关注Apple documentation为您的应用准备自定义声音文件。
对于iOS中的远程通知,您可以指定自定义声音 iOS在为应用程序提供本地或远程通知时播放。 声音文件可以位于客户端应用程序的主捆绑中,也可以位于 应用程序数据容器的Library / Sounds文件夹。
自定义警报声音由iOS系统声音设备播放,因此 它们必须采用以下音频数据格式之一:
线性PCM MA4(IMA / ADPCM)μLawaLaw您可以打包音频数据 aiff,wav或caf文件。然后,在Xcode中,将声音文件添加到您的 将项目作为应用程序包的非本地化资源或作为 数据容器的Library / Sounds文件夹。
您可以使用afconvert工具转换声音。例如,到 将16位线性PCM系统声音Submarine.aiff转换为IMA4 CAF文件中的音频,请在终端应用程序中使用以下命令:
afconvert /System/Library/Sounds/Submarine.aiff~/ Desktop / sub.caf -d ima4 -f caff -v您可以检查声音以确定其数据格式 在QuickTime Player中打开它并选择Show Movie Inspector 来自电影菜单。
播放时,自定义声音必须低于30秒。如果是自定义声音 超过该限制,而是播放默认的系统声音。
创建文件后,最简单的方法是将其放入app bundle。
当您发送推送通知时,只需在JSON有效负载中添加文件名。例如:
{
"aps" : {
"alert" : "You got your emails.",
"badge" : 9,
"sound" : "bingbong.aiff"
}
}
多数民众赞成!您无需在应用程序代码中执行任何特殊操作。
修改强>
请将文件放在项目包中(即在项目的层次结构中),并在拖放时选择Copy items if needed
选项。涂黑的部分有项目名称。
答案 1 :(得分:15)
您的服务器管理员会在通知有效负载中向您发送声音名称。 Payload看起来像这样
{
aps =
{
alert = "notification message";
sound = "example.caf";
};
}
您需要将声音文件添加到应用包。格式应该是.caf。要将声音文件转换为.caf,请尝试在终端中运行此命令。
afconvert -f caff -d aacl@22050 -c 1 sound.aiff soundFileName.caf
文件保存在桌面上。现在将文件拖放到项目中。然后选择目标中的构建阶段。
检查您的声音文件是否存在于'复制包资源'下。如果没有,请单击+按钮添加声音文件。有效负载中的声音名称应与声音文件名相同。
现在,您已准备好播放自定义通知声音。