iOS自定义推送铃声

近来在做自定义推送的功能开发,总结下开发过程中遇到的问题。
苹果的推送分远程推送和本地推送,这两种推送都是支持自定义铃声的。

苹果官方对自定义铃声文件的要求:

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.调节声音大小

如下图的所示,开关在关闭的情况下,需要滑动 铃声和提醒下面的滑块调节;在打开的情况下,按音量键调节。

iOS自定义推送铃声_第1张图片
IMG_1898.JPG

代码示例

https://github.com/wangyangcc/PushDemo

参考文档:https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/SupportingNotificationsinYourApp.html

你可能感兴趣的:(iOS自定义推送铃声)