极光推送>>java SDK服务端集成后台项目

PS:若是你是第一次用推送,那就直接按照个人步骤来,再去看官方文档,这样,更容易能理解操做流程.还有——-请耐心看

极光文档(java SDK)请参考

[ 极光文档 ]html


步骤一:

  • 首先,你必须在 [极光官网] 上注册一个帐号
  • 其次,注册完后登陆,选择极光开发者服务
    这里写图片描述
  • 进去以后,建立一个应用,已有应用可跳过
    这里写图片描述前端

  • 建立完成
    这里写图片描述java

  • 进入应用,看到AppKey和MasterSecret,这两个参数在sdk集成的时候会用到
    这里写图片描述android


项目中的操做

  • 我是直接用的maven库,毕竟这个年头手动到jar包的项目估计没几个了,若是你是手动导入jar,那么,请去官网下载jar包-o-

Maven方式导入极光推送的依赖jar包

  • PS:将下面所有jar复制到你项目的pom.xml里面(我项目以前原本就有log4j,就没有写到下面,导入的时候注意下,能够参考官网的jar包)
<dependency>
    <groupId>cn.jpush.api</groupId>
    <artifactId>jpush-client</artifactId>
    <version>3.2.17</version>
</dependency>

<dependency>
    <groupId>cn.jpush.api</groupId>
    <artifactId>jiguang-common</artifactId>
    <version>1.0.3</version>
</dependency>
<dependency>
   <groupId>io.netty</groupId>
   <artifactId>netty-all</artifactId>
   <version>4.1.6.Final</version>
   <scope>compile</scope>
</dependency>
<dependency>
   <groupId>com.google.code.gson</groupId>
   <artifactId>gson</artifactId>
   <version>2.3</version>
</dependency>
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-api</artifactId>
   <version>1.7.7</version>
</dependency>

 


记住,如下代码,若是你是单纯的复制粘贴,那么你确定会报错,有博主本身项目的参数,因此,请复制粘贴后看一下参数(提示什么的)

而后在项目中建立一个包和一个类,(类放到该包下)取名随便取

我是这么取得:

com.XXX.jdpush //包名
jdpush //类名ios

  • 接下来是在jdpush类的操做
    其实,极光已经给咱们集成好了,只需调用推送方法便可web

    如今在jdpush类中,先进行android的推送(第一个方法)

  • 在jdpush类中,建立一个方法 : jpushAndroid
    别忘了!!!!!! app_key和masterSecret 是必须的
 1  //极光推送>>Android
 2    //Map<String, String> parm是我本身传过来的参数,同窗们能够自定义参数
 3    public static void jpushAndroid(Map<String, String> parm) {
 4        // 设置好帐号的app_key和masterSecret 
 5        String appKey = "**************";
 6        String masterSecret = "************";
 7        //建立JPushClient(极光推送的实例)
 8        JPushClient jpushClient = new JPushClient(masterSecret, appKey);
 9        //推送的关键,构造一个payload 
10        PushPayload payload = PushPayload.newBuilder()
11             .setPlatform(Platform.android())//指定android平台的用户
12             .setAudience(Audience.all())//你项目中的全部用户
13             .setNotification(Notification.android(parm.get("msg"), "这是title", parm))
14             //发送内容,这里不要盲目复制粘贴,这里是我从controller层中拿过来的参数)
15             .setOptions(Options.newBuilder().setApnsProduction(false).build())
16             //这里是指定开发环境,不用设置也不要紧
17             .setMessage(Message.content(parm.get("msg")))//自定义信息
18             .build();
19 
20        try {
21             PushResult pu = jpushClient.sendPush(payload);  
22         } catch (APIConnectionException e) {
23             e.printStackTrace();
24         } catch (APIRequestException e) {
25             e.printStackTrace();
26         }    
27    }

 

而后又在jdpush类中,再进行ios的推送(第二个方法)

  • 在jdpush类中,建立一个方法 : jpushIOS
    又别忘了!!!!!! app_key和masterSecret 是必须的
 1 //极光推送>>ios
 2    //Map<String, String> parm是我本身传过来的参数,同窗们能够自定义参数
 3    public static  void jpushIOS(Map<String, String> parm) {
 4        // 设置好帐号的app_key和masterSecret是必须的
 5        String appKey = "*********************";
 6        String masterSecret = "**********************";
 7 
 8        //建立JPushClient
 9        JPushClient jpushClient = new JPushClient(masterSecret, appKey);
10        PushPayload payload = PushPayload.newBuilder()
11             .setPlatform(Platform.ios())//ios平台的用户
12             .setAudience(Audience.all())//全部用户
13             .setNotification(Notification.newBuilder()
14             .addPlatformNotification(IosNotification.newBuilder()
15                             .setAlert(parm.get("msg"))
16                             .setBadge(+1)
17                             .setSound("happy")//这里是设置提示音(更多能够去官网看看)
18                             .addExtras(parm)
19                             .build())
20                     .build())
21             .setOptions(Options.newBuilder().setApnsProduction(false).build())
22             .setMessage(Message.newBuilder().setMsgContent(parm.get("msg")).addExtras(parm).build())//自定义信息
23             .build();
24 
25        try {
26             PushResult pu = jpushClient.sendPush(payload);
27 
28         } catch (APIConnectionException e) {
29             e.printStackTrace();
30         } catch (APIRequestException e) {
31             e.printStackTrace();
32         }    
33    }

 

PS:

  • 以上只是列出了2种推送的方法,(通常设置安卓和ios就够了)还有更多(去看看官网)好比推送winPhone平台,安卓andIos,所有平台,等等等等,自定义去组合,反正你写的方法能够调用
  • 极光已经集成好了众多方法,同窗们都是能够直接 . 点出来的,好比,想设置环境指定为开发,那么就在方法里设置:

.setOptions(Options.newBuilder().setApnsProduction(false).build())api

 


  • 你们能够将app_key和masterSecret 定义为全局变量,将推送方法定义为静态,这样更方便调用
  • 若是你还想再设置其余推送的系统参数,那么,能够去参考,里面有参数讲解

 

[ 极光文档Push API v3 ] markdown

————————————————–

我用的是SSM框架,因此在controller里面调用我写的推送方法,其余框架调用推送方法也同样

调用简直不要太简单

controller:

 1 //这是个人添加文章的接口方法
 2 //如今我要添加一篇文章后,进行推送
 3 public Map<String, Object> addArticle() throws Exception {
 4 Map<String, Object> result = new HashMap<String, Object>();
 5 ....
 6 //省略文章添加的步骤
 7 
 8 //从前端页面传个参数过来判断是否推送
 9    if((infoMap.get("is_push").toString()).trim().equals("1")){
10        //设置推送参数
11        //这里同窗们就能够自定义推送参数了
12         Map<String, String> parm =new HashMap<String, String>();
13         //这是个人文章id
14         parm.put("id",(""+id).trim());
15         //文章标题
16         parm.put("Atitle",(String) infoMap.get("Atitle") );
17         //设置提示信息,内容是文章标题
18         parm.put("msg",(String) infoMap.get("Atitle") );
19         //调用ios的
20         Jdpush.jpushIOS(parm);
21         //而后调用安卓的
22         Jdpush.jpushAndroid(parm);
23     }
24   return result;
25 }

 

这样就推送完了….


童鞋们可能出现的的错误

推送后报错了app

Your request params is invalid. Please check them according to error message.
Error response from JPush server. Should review and fix it.
//而后状态码是
INFO 2017-07-14 11:08:04,208 com.weiwend.jdpush.Jdpush.http-bio-8080-exec-7 HTTP Status: 400
INFO 2017-07-14 11:08:04,208 com.weiwend.jdpush.Jdpush.http-bio-8080-exec-7 Error Code: 1011
INFO 2017-07-14 11:08:04,208 com.weiwend.jdpush.Jdpush.http-bio-8080-exec-7 Error Message: cannot find user by this audience
INFO 2017-07-14 11:08:04,208 com.weiwend.jdpush.Jdpush.http-bio-8080-exec-7 Msg ID: 4241206476框架

  • 这种的话不要慌,去看看你的极光开发者服务>>点进去你的应用>>点击推送>>选择是web|Api下拉框
    这里写图片描述

这里写图片描述

这里写图片描述

应该会看到一条红色的推送记录

好比:

这里写图片描述

——这就是发送失败了,为何呢?提示是:

这里写图片描述

就是说,你当前项目中

没有用户!!!

没有用户!!!

没有用户???

这就很尴尬了
若是你的项目中有用户,
可是,是你的参数(setAudience)设置错了,也会也会报错.


po一条视频教程(内容比较简单,试着去理解):

[ 极客学院>>极光推送javaSDK集成使用 ]

还有要注意的是app_key和masterSecret 是必须的

 


2017-09-16 补充:

PS:推送全部平台
注意事项:安卓直接忽略开发环境和生产环境,可是ios对环境敏感哦~~~~
(就是安卓不论生产开发都会推送,可是ios必须指定才能推,默认生产模式)

 1  //极光推送>>All全部平台
 2    public static void jpushAll(Map<String, String> parm) {
 3        // 设置好帐号的ACCESS_KEY和SECRET_KEY
 4 
 5        //建立JPushClient
 6        JPushClient jpushClient = new JPushClient(masterSecret, appKey);
 7        //建立option
 8 
 9        PushPayload payload = PushPayload.newBuilder()
10             .setPlatform(Platform.all())  //全部平台的用户
11             .setAudience(Audience.registrationId(parm.get("RegId")))//registrationId指定用户
12             .setNotification(Notification.newBuilder()
13                     .addPlatformNotification(IosNotification.newBuilder()
14                             .setAlert(parm.get("msg"))
15                             .setBadge(+1)
16                             .setSound("happy")
17                             .addExtras(parm)
18                             .build())
19                     .addPlatformNotification(AndroidNotification.newBuilder()
20                             .addExtras(parm)
21                             .setAlert(parm.get("msg"))
22                             .build())
23                     .build())
24             .setOptions(Options.newBuilder().setApnsProduction(true).build())//指定开发环境
25             .setMessage(Message.newBuilder().setMsgContent(parm.get("msg")).addExtras(parm).build())//自定义信息
26             .build();
27        try {
28             PushResult pu = jpushClient.sendPush(payload);
29         } catch (APIConnectionException e) {
30             e.printStackTrace();
31         } catch (APIRequestException e) {
32             e.printStackTrace();
33         }    
34    }
相关文章
相关标签/搜索