近来在做自定义推送的功能开发,总结下开发过程中遇到的问题。
苹果的推送分远程推送和本地推送,这两种推送都是支持自定义铃声的。
苹果官方对自定义铃声文件的要求:
1. 格式: 支持wav
,caf
,aiff
,三种格式
可以使用Mac系统提供的命令来转换铃声格式,比如aiff
格式转换成caf
格式
afconvert /System/Library/Sounds/Submarine.aiff ~/Desktop/sub.caf -d ima4 -f caff -v
本人在iOS9, iOS12, iOS13的系统下测试过这三种格式的文件,远程推送和本地推送都能正常播放。mp3
格式的文件在iOS13
系统下能播放,iOS13
以下的系统没有声音,注意不是播放默认铃声是没有铃声。
更多关于afconvert
的操作姿势点这里,wav
格式的铃声可以在这里下载
2. 位置: 文件存放在工程里,或者沙盒Library/Sounds
路径下
本地推送和远程推送都支持这两个位置
这两种方式在使用的时候只需要设置文件名,不需要设置绝对路径。系统会自动在工程\沙盒下加载文件。需要注意的是,如果铃声文件放在工程里的Bundle
里面,需要加上Bundle
的名字,例如xxx.bundle/yyy.wav
3.时长: 铃声时长小于30s
官方文档里明确指出不能超过30s,一般都是几秒钟。在推送铃声播放的时候,触碰实体按键,比如关机
,音量
,Home
键会终止铃声播放,或者手动划掉通知也会终止铃声播放。
4.调节声音大小
如下图的所示,开关在关闭的情况下,需要滑动 铃声和提醒
下面的滑块调节;在打开的情况下,按音量键调节。
代码示例
https://github.com/wangyangcc/PushDemo
参考文档:https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/SupportingNotificationsinYourApp.html