如何通过AWS CLI为iOS推送通知设置自定义音效与角标?
如何通过AWS CLI给iOS推送添加自定义音效和角标
嘿,这个需求完全可以实现!你之前用的简单--message参数只能传纯文本消息,但AWS SNS支持传递APNs专用的结构化payload,刚好能满足你设置自定义音效、角标这些需求,和直接调用Apple的APNs接口效果一致。
核心思路
关键是要使用--message-structure json参数,告诉SNS你要传递的是多平台结构化消息,然后在--message里构造APNs要求的JSON格式内容,包含aps字典来配置音效、角标等属性。
完整命令示例
下面是针对你的沙箱环境(APNS_SANDBOX)的完整命令,已经包含了自定义音效和角标的配置:
aws sns publish \ --target-arn "arn:aws:sns:us-east-1:545678945607:endpoint/APNS_SANDBOX/MyApp/lk4ggss56-2F29-3r55-6Qw2-dsd4sad4s5a" \ --message-structure json \ --message '{ "APNS_SANDBOX": "{\"aps\": {\"alert\": \"hello!\", \"sound\": \"custom_notification.wav\", \"badge\": 3}, \"custom_key\": \"你可以加自定义数据\"}" }'
参数详解
--message-structure json: 必须指定这个参数,否则SNS会把你的JSON当成纯文本处理APNS_SANDBOX: 对应iOS沙箱环境,如果是生产环境,替换成APNS即可aps字典: 这是APNs要求的核心配置块:alert: 推送的消息内容,也可以拆分为title和body,比如{"alert": {"title": "新通知", "body": "hello!"}}sound: 自定义音效的文件名(要确保这个音频文件已经打包在你的iOS App中,格式支持wav、aiff、caf),如果用默认音效可以设为"default"badge: 应用图标角标的数字,设为0可以清除现有角标
- 自定义数据: 你可以在
aps外面添加任意键值对,这些数据会被传递到你的App中,供业务逻辑使用
注意事项
- 要确保你的SNS端点(Endpoint)对应的平台应用是正确的沙箱/生产环境,否则推送会失败
- 自定义音效的文件名要和App中打包的完全一致,iOS是区分大小写的
- 如果只需要配置角标或者只需要自定义音效,只保留对应的字段即可,不需要的可以删掉
这样配置后,你的推送就能按照预期播放自定义音效、显示指定的角标数字啦!
内容的提问来源于stack exchange,提问作者Eddie
相关产品推荐
相关产品推荐

