一般服务器做apns推送的时候,常用的是
{
"aps" : {
"alert" : "我是被推送的消息",
"badge" : 1,
"sound" : "default"
}
}
这种格式, 没错最早我也是这样的写的, 但是后来的,设计到做多语言推送,所以就不能这么做了
于是乎
{
"aps" : {
"alert" : {
"body" : "我是推送的消息",
"action-loc-key" : "Play_MSG",
"loc-key":"Borrow_MSG",
"loc-args":["XYZ"]
},
"badge" : 1,
"sound" : "default"
}
}
解释:
(1) loc-key: 在App端的Localizable.strings文件中定义好的多语言字段;
(2) loc-args: 在App端的多语言字段中需要带的参数;
"loc-args"字段也不是必须的,如果"loc-key"的多语言字段中不需要参数,则该字段可以省略。例如:"loc-key"中"Borrow_MSG"定义的多语言字段为 "%@ wants to borrow %@'s money"。那么"loc-args"的值就应该是 ["LiLei", "HanMeimei"]。最终App端显示的推送消息就是 “LiLei wants to borrow HanMeimei's money”。
(3) action-loc-key: 同样在App端的Localizable.string文件中定义好的多语言字段,用来替代在锁屏页面View按钮
"action-loc-key"字段不是必须的,是否定义的样式区别如下:“slide to view”中的"view"就是定义的多语言字段 "Play_MSG"。
20170309135859813.png
(4) body: 推送中显示的字段;(经测试,如果定义了loc-key,那么这个字段似乎没用)
如果lock-key在Localizable.strings文件中找不到, 就会直接显示body中的内容,没错这就省去了我们做版本向前兼容的过程
(5) launch-image: 应用在 bundle 里的一个图片文件的名称,一般来说我们不指定这一属性;
具体可以参考https://blog.csdn.net/olivelao/article/details/60958526这篇博文写的不错
网友评论