iOS APNs 实现多语言及自定义事件


iOS实现远程推送的多语言显示,通常有两种方法:

  1. 在服务器端实现多语言推送。这种方法需要App在上传device token到后台服务器的时候,将App使用的语言也同步上传;
  2. 在App端实现多语言显示。
在这里主要介绍下第2种实现方法。


我们先来看下,APNs的payload定义的格式:(注意,payload的最大长度是256bytes,超出长度的推送消息会失败)

  • 比较常用的一种payload的格式:
{  
 "aps" : {  
 	"alert" : "我是被推送的消息",
 	"badge" : 1,
 	"sound" : "default"
 }
}


这是最简单的一种格式,App直接显示alert中的字符串。这种方法适用于服务器端实现多语言(如果需要的话)。
  • 定义loc-的payload格式:
"alert"的对象可以是简单的字符串,也可以是一个JSON对象。如果定义为一个JSON对象,则可以通过以下定义来在App端实现多语言显示:
(1) loc-key: 在App端的Localizable.strings文件中定义好的多语言字段;
(2) loc-args: 在App端的多语言字段中需要带的参数;
(3) action-loc-key: 同样在App端的Localizable.string文件中定义好的多语言字段,用来替代在锁屏页面View按钮
(4) body: 推送中显示的字段;(经测试,如果定义了loc-key,那么这个字段似乎没用)
(5) launch-image: 应用在 bundle 里的一个图片文件的名称,一般来说我们不指定这一属性;
{  
 "aps" : {  
 "alert" : {
       "body" : "我是推送的消息",
       "action-loc-key" : "Play_MSG",
       "loc-key":"Borrow_MSG",
       "loc-args":["XYZ"]
     },
 "badge" : 1,
 "sound" : "default"
 }
}
"action-loc-key"字段不是必须的,是否定义的样式区别如下:“slide to view”中的"view"就是定义的多语言字段 "Play_MSG"。


"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”。
  • 自定义key-value的payload格式:
{  
 "aps" : {  
 "alert" : {
       "body" : "",
       "action-loc-key" : "",
       "loc-key":"",
       "loc-args":[]
     },
 "badge" : 1,
 "sound" : "default"
 },
 "key1":"value1",
 "key2":["value21", "value22"]
}
让App更加灵活地根据不同类型的推送消息来处理不同的事件。value值可以为字符串,也可以为JSON对象。


附:在本地测试推送服务器:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值