集成极光推送服务,实现通知推送功能
2016-06-14 16:10
253 查看
当下有个产品需要给移动端(安卓和ios)推送消息通知,个人觉得消息推送功能如何有条件的话还是别依赖于第三方的服务。
因为消息由第三方软件公司去发送首先安全性就没有保障了,其次是对数据的处理,尽管很多第三方服务都提供了很多的api接口,但是总有一些需求是这种第三方服务满足不了的,所以有条件的公司可以自己搭一套消息推送服务。好了废话不多说,先讲一下极光推送这个第三方的服务吧,总体来讲还是比较专业的,官网也给出了比较简单的demo,但是也仅限于简单的demo,如果想传递带附加消息的通知你在官网是看不到的,找了半天才在别人的博客上找到,所以这里晒一下我使用极光推送用到的帮助类。
因为消息由第三方软件公司去发送首先安全性就没有保障了,其次是对数据的处理,尽管很多第三方服务都提供了很多的api接口,但是总有一些需求是这种第三方服务满足不了的,所以有条件的公司可以自己搭一套消息推送服务。好了废话不多说,先讲一下极光推送这个第三方的服务吧,总体来讲还是比较专业的,官网也给出了比较简单的demo,但是也仅限于简单的demo,如果想传递带附加消息的通知你在官网是看不到的,找了半天才在别人的博客上找到,所以这里晒一下我使用极光推送用到的帮助类。
package cfs.wsdl.jpush; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.UUID; import java.util.regex.Pattern; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import cfs.core.constant.CfsConstant; import cfs.core.util.Util; import cfs.wsdl.cache.Mycache; import cfs.wsdl.constant.MobileConstant; import cfs.wsdl.model.AnswerQuestion; import cfs.wsdl.model.Questions; import cfs.wsdl.model.QuestionsBank; import cfs.wsdl.model.Ranking; import cn.jpush.api.JPushClient; import cn.jpush.api.common.resp.APIConnectionException; import cn.jpush.api.common.resp.APIRequestException; import cn.jpush.api.push.PushResult; import cn.jpush.api.push.model.Message; import cn.jpush.api.push.model.Options; import cn.jpush.api.push.model.Platform; import cn.jpush.api.push.model.PushPayload; import cn.jpush.api.push.model.audience.Audience; import cn.jpush.api.push.model.notification.AndroidNotification; import cn.jpush.api.push.model.notification.IosNotification; import cn.jpush.api.push.model.notification.Notification; public class JpushUtil { //教师端 public static final String mastersecret_teacher="51411********"; public static final String appkey_teacher="f85d6231*********"; public static final String content_teacher="学生们提交作业啦,快去看看吧。"; public static void main(String[] args) { JsonObject j= new JsonObject(); j.addProperty("homework_name", "随便写的"); j.addProperty("assignmen_id", "bc58e262-6b27-477f-a605-7e1b1318e0dd"); JpushUtil ju=new JpushUtil(); ju.jpushSend(JpushUtil.mastersecret_teacher,JpushUtil.appkey_teacher,"单独给小伟发个测试用的数据",j); } public void jpushSend(String mastersecret,String appkey, String content,JsonObject extra){ JPushClient jpushClient = new JPushClient(mastersecret, appkey); PushPayload payload =PushPayload.newBuilder() .setPlatform(Platform.all()) // .setAudience(Audience.tag_and("tag1", "tag_all")) .setAudience(Audience.all()) .setNotification(Notification.newBuilder() //设置安卓平台消息推送 .addPlatformNotification(AndroidNotification.newBuilder().setAlert(content) .addExtra("param", extra) .build()) //设置ios平台消息推送 .addPlatformNotification(IosNotification.newBuilder() .setAlert(content) .autoBadge() // .setBadge(5) // .setSound("happy") .addExtra("param", extra) .build()) .build()) // .setMessage(Message.content(content)) .setOptions(Options.newBuilder() .setApnsProduction(false) .build()) .build(); try { PushResult result = jpushClient.sendPush(payload); System.out.println("消息发送成功 - " + result); } catch (APIConnectionException e) { System.out.println("Connection error, should retry later========"+ e); } catch (APIRequestException e) { System.out.println("Should review the error, and fix the request========"+ e); System.out.println("HTTP Status: " + e.getStatus()); System.out.println("Error Code: " + e.getErrorCode()); System.out.println("Error Message: " + e.getErrorMessage()); } } }
相关文章推荐
- 阶乘的长度
- Educational Codeforces Round 13-D. Iterated Linear Function
- 高通QSD MSM APQ区别
- 关于用sea.js时碰到的坑
- VS编译QT程序调用SQLite数据库研究
- swift开发基础
- Url解析类
- mysql语句优化
- find
- 高通QSD MSM APQ区别
- Apache Kafka:下一代分布式消息系统
- Android WebView 拦截自定义协议
- 序列化Serializable serialVersionUID的作用
- 从0开始学习 GitHub 系列之「向GitHub 提交代码」
- mysql给root开启远程访问权限,修改root密码
- 257.BinaryTreePaths
- 编辑自己的JDBC框架
- linux系统下程序后台运行的方法
- Effective Java 记录
- 汉诺塔问题