2016-05-31 219 views
11

如何使用自定义声音进行推送通知?更改推送通知声音

根据我的研究和阅读,我发现负载应该有应用程序包中或应用程序数据容器的Library/Sounds文件夹中的文件名。

如何把文件放在那里?

+0

请点击此链接:http://stackoverflow.com/questions/25478395/apns-notification-sound-for-ios –

+0

FWIW任何声音(系统声音或您自己制作的声音)* default *以外的任何声音都被视为自定义声音并且必须手动添加到AppBundle。 – Honey

回答

20

按照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中打开并从Movie菜单中选择Show Movie Inspector 来检查声音以确定其数据格式 。

播放时自定义声音必须低于30秒。如果自定义声音 超过该限制,则会播放默认的系统声音。

一旦你建立了这个文件,最简单的方法就是把它放在应用程序包中。

当您发送推送通知时,只需在JSON负载中添加文件的名称即可。例如:

{ 
    "aps" : { 
     "alert" : "You got your emails.", 
     "badge" : 9, 
     "sound" : "bingbong.aiff" 
    } 
} 

那就是它!你不必在应用代码中做任何特殊的事情。

编辑:
请把该文件的项目包内(即项目的层次结构内),并有Copy items if needed选项选中,同时拖放。黑色部分有项目名称。

enter code here

+0

如何执行此操作: – user5068763

+0

将声音文件作为应用程序包的非本地化资源或数据容器的库/声音文件夹添加到项目中。 – user5068763

+0

只需将文件拖放到项目中即可。出现提示时,确保选择了“如果需要复制项目”选项。 –

14

服务器管理员会送你的声音名称的通知有效载荷。 有效载荷将这个样子

{ 
    aps =  
    { 
     alert = "notification message"; 
     sound = "example.caf"; 
    }; 
} 

您需要的声音文件添加到应用程序包。格式应该是.caf。要将声音文件转换为.caf,请尝试在终端中运行此命令。

afconvert -f caff -d [email protected] -c 1 sound.aiff soundFileName.caf

文件被保存在桌面上。现在将您的文件拖放到您的项目中。然后在目标中选择构建阶段。

检查您的声音文件是否存在于“复制束资源”下。如果没有,请点击+按钮添加您的声音文件。有效负载中的声音名称应与您的声音文件名相同。

现在你已经准备好播放自定义通知声音了。

+1

您是对的! - “检查您的声音文件是否存在于”复制束“资源'。如果没有,点击+按钮添加声音文件“。 Tha nks –

+0

这对我有用。感谢您的详细答案:) –

+0

我已经在iOS 10.3上测试过,声音与aiff一起工作,没有将它转换为caf。 –