java notnoop_[Java Web]Java的APNS类库 notnoop

Android应用一般通过后台向服务器轮询请求获取信息,而iOS应用则会在被切换到后台一段时间后停止运行,这时候如果想要达到信息的获取则只能依靠APNS(Apple Push Notification Service),由服务器主动进行推送。APNS的原理以及令牌获取方式网上一搜一大堆,这里主要介绍一下Java的APNS类库notnoop。

notnoop中的核心类是ApnsService和PayloadBuilder,ApnsService可以向服务器发送请求,并且在ApnsServiceBuilder中提供了常用的服务器host。一个ApnsService的创建可以通过下面几句简单的代码完成:

//p12文件路径

String keyPath = "E:/Pushtest.p12";

//p12文件密匙

String password = "111111";

//创建一个APNS service

ApnsService service = APNS.newService()

.withCert(keyPath, password)//使用指定的p12文件以及密匙

.withSandboxDestination()//使用apple的测试服务器

.build();

而PayloadBuilder则可以帮助开发者轻松地创建一个符合APNS规范的JSON,例如:

//创建一个消息

String payload = APNS.newPayload()

.alertBody("hello world!")//推送通知显示的文字

.sound("default")//推送时附带的声音提示

.badge(1)//应用程序图标右上角显示的数字

.build();

最后只要调用service的push方法即可将消息推送到iOS设备了:

//token由客户端获取

String token = "45124a4cf9f5e272d395f6392456e5ab7185d2ae6e98ba2f8426fe09f60e785b";

//发送消息到iOS设备

service.push(token, payload);

由于APNS最高只支持256个字节的消息体,并且推送消息中大量重复的内容也会造成流量成本,这时可以使用本地化字符串。本地化字符串是在客户端中的Localizable.strings文件中定义一对键值对,服务器只需要提供指定字符串的键和动态生成的参数即可生成一条完整的推送消息,例如:

//Localizable.strings中定义 "focus"="%@关注了你"

List args = new ArrayList();

args.add("张三");

String payload = APNS.newPayload()

.localizedKey("focus")//本地化字符串的key

.localizedArguments(args)//动态生成的参数

.build();

service.push(token, payload);

//推送结果: 张三关注了你 最后,并不是每条消息都绝对会推送成功。例如当用户卸载掉该应用时,所对应的token就已经失效了,这时可以通过service的getInactiveDevices方法获得失效的token并作出处理。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值