每天中午下去吃午饭,在电梯间外卖小哥的手机总会响起“你有一个美团外卖转单求助,请及时处理,注意交通安全。”哈😂😂😂,这里给美团打个广告。当时就想了大概的实现方法,如果是应用在前台或者挂后台并没有被系统杀死,用长连接的方式是可以实现的,如果是用户没启动那只能通过远程推送来实现了。后台搜索了一下 果然能实现,而且不难,不知道大家有没有注意apns推送的字段,总会有"sound":"default",这里也验证了可以自定义声音。
首先你要把自己的项目完成基本的推送功能,大家可以参考我的这两篇文章:传送门1,传送门2,实现基本的推送功能后,把你的声音文件拖入工程,选copy items if needed.
然后告诉后台把链接apns发送的那个字典
{
"aps":{
"alert":{
"title":"Realtime Custom Push Notifications",
"subtitle":"Now with iOS 10 support!",
"body":"Add multimedia content to your notifications"
},
"sound":"default",
"badge": 1,
"mutable-content": 1,
"category": "realtime",
},
"media":{"type":"image","url":"https://www.fotor.com/images2/features/photo_effects/e_bw.jpg"}
}
中的 "sound":"default"中的default换成你的音乐文件
"sound":"bing.mp3"即可,是不是炒鸡很简单?
当然你也可以用这个软件自己测试,是一个mac软件很不错。Demo地址
遇到的一些问题
1.音乐文件必须是aiff, wav, caf才可以
我看了很多博客确实都是这么写的,当然我已开始也是这么做的将mp3转成caf文件,成功了,我抱着试试看的态度将mp3文件放入工程,测试推送竟然也能成功。我的测试机版本iOS10.3.3。我查了一下苹果官方文档确实有这么一说
Preparing Custom Alert Sounds
Local and remote notifications can specify custom alert sounds to be played when the notification is delivered. You can package the audio data in an aiff, wav, or caf file. Because they are played by the system-sound facility, custom sounds must be in one of the following audio data formats:
Linear PCM
MA4 (IMA/ADPCM)
µLaw
aLaw
Place custom sound files in your app bundle or in the Library/Sounds folder of your app’s container directory. Custom sounds must be under 30 seconds when played. If a custom sound is over that limit, the default system sound is played instead.
You can use the afconvert tool to convert sounds. For example, to convert the 16-bit linear PCM system sound Submarine.aiff to IMA4 audio in a CAF file, use the following command in the Terminal app:
afconvert /System/Library/Sounds/Submarine.aiff ~/Desktop/sub.caf -d ima4 -f caff -v
For information on how to associate a sound file with a notification, see Adding a Sound to the Notification Content.
这里苹果也贴心的给我们介绍了转换音频的方式,在终端来转换
afconvert /Users/szsh/Desktop/bing.mp3 /Users/szsh/Desktop/bing.caf -d ima4 -f caff -v
我猜想iOS之前的版本可能不兼容mp3作为自定义推送声音(我没有试验,因为公司测试机都是iOS10,如果有哪位朋友测试了麻烦解答一下)
2.我的另一部测试机iOS10.0.2无法实现自定义声音
我试了caf与mp3格式的音乐文件都不能实现,在别的博客上有人说是,iOS10.0~iOS10.1的bug,这个无法确定,另外各位有iOS8.0、iOS9.0也可以试验一下,麻烦试验结果评论一下,谢谢。