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

来源:互联网 发布:淘宝外卖点麻辣烫两人 编辑:程序博客网 时间:2024/05/16 15:10

极光文档(java SDK)请参考

[ 极光文档 ]


步骤一:

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

  • 创建完成 
    这里写图片描述

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


项目中的操作

  • 我是直接用的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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

记住,以下代码,如果你是单纯的复制粘贴,那么你肯定会报错,有博主自己项目的参数,所以,请复制粘贴后看一下参数(提示什么的)

jar包导入完成

然后在项目中创建一个包和一个类,(类放到包下)取名随便取,毕竟开心最重要 ꉂ ೭(˵¯̴͒ꇴ¯̴͒˵)౨”

好吧推荐取名 :

com.weiwend.jdpush //包名 
jdpush //类名

  • 接下来是jdpush类的操作 
    其实,极光已经给我们集成好了,只需调用推送方法即可

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

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

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

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

PS:

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

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

  • 如果你还想再设置其他推送的系统参数,那么,可以去参考,里面有参数讲解 
    [ 极光文档Push API v3 ]

我用的是SSM框架,所以我在controller里面调用我写的推送方法,其他框架调用推送方法也一样

调用简直不要太简单

controller:

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

这样就推送完了….


童鞋们可能出现的的错误

  • 推送后报错了

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必须指定才能推,默认生产模式)

 //极光推送>>All所有平台   public static void jpushAll(Map<String, String> parm) {       // 设置好账号的ACCESS_KEY和SECRET_KEY       //创建JPushClient       JPushClient jpushClient = new JPushClient(masterSecret, appKey);       //创建option       PushPayload payload = PushPayload.newBuilder()            .setPlatform(Platform.all())  //所有平台的用户            .setAudience(Audience.registrationId(parm.get("RegId")))//registrationId指定用户            .setNotification(Notification.newBuilder()                    .addPlatformNotification(IosNotification.newBuilder()                            .setAlert(parm.get("msg"))                            .setBadge(+1)                            .setSound("happy")                            .addExtras(parm)                            .build())                    .addPlatformNotification(AndroidNotification.newBuilder()                            .addExtras(parm)                            .setAlert(parm.get("msg"))                            .build())                    .build())            .setOptions(Options.newBuilder().setApnsProduction(true).build())//指定开发环境            .setMessage(Message.newBuilder().setMsgContent(parm.get("msg")).addExtras(parm).build())//自定义信息            .build();       try {            PushResult pu = jpushClient.sendPush(payload);        } catch (APIConnectionException e) {            e.printStackTrace();        } catch (APIRequestException e) {            e.printStackTrace();        }       }
原创粉丝点击