zoukankan      html  css  js  c++  java
  • java服务端集成极光消息推送--详细开发步骤

    1.极光推送账号准备

      要使用极光消息推送必须先在官方网站上注册账号,并添加应用.

      产品介绍:https://docs.jiguang.cn/jpush/guideline/intro/

      注册开发者账号:https://www.jiguang.cn/accounts/register

      注册完成后需要添加应用

      应用配置好后有两个重要的数据,必须获取到,在后面发送消息的时候要使用:

      

    2.极光推送后端管理配置认识

      要做极光推送,得先认识极光账号的后端管理平台,应为在开发的时候很多参数和配置来自于后端管理系统

      先宏观认识一下消息推送流程图:

      

      后端管理说明:https://docs.jiguang.cn/jpush/console/Instructions/

    3.集成java服务端

    3.1.添加maven依赖,使用官方提供的sdk

    1  <!-- 极光推送 -->
    2         <dependency>
    3             <groupId>cn.jpush.api</groupId>
    4             <artifactId>jpush-client</artifactId>
    5             <version>3.3.12</version>
    6         </dependency>

    3.2.客户端java代码

    代码参考文档:

    https://docs.jiguang.cn/jpush/server/push/server_overview/

      1 package com.qianxingniwo.client;
      2 
      3 
      4 import cn.jpush.api.JPushClient;
      5 import cn.jpush.api.push.PushResult;
      6 import cn.jpush.api.push.model.Message;
      7 import cn.jpush.api.push.model.Options;
      8 import cn.jpush.api.push.model.Platform;
      9 import cn.jpush.api.push.model.PushPayload;
     10 import cn.jpush.api.push.model.audience.Audience;
     11 import cn.jpush.api.push.model.notification.AndroidNotification;
     12 import cn.jpush.api.push.model.notification.Notification;
     13 import org.slf4j.Logger;
     14 import org.slf4j.LoggerFactory;
     15 
     16 import java.util.ArrayList;
     17 import java.util.List;
     18 
     19 /**
     20  * @Copyright (C) 四川千行你我科技有限公司
     21  * @Author: LI DONG PING
     22  * @Date: 7/3 19:11
     23  * @Description:
     24  */
     25 
     26 public class JpushClientUtil {
     27     private static final Logger log = LoggerFactory.getLogger(JpushClientUtil.class);
     28 
     29     private final static String appKey = "应用的key(非登录账号)";
     30 
     31     private final static String masterSecret = "应用的密码(非登录密码)";
     32 
     33     private static JPushClient jPushClient = new JPushClient(masterSecret, appKey);
     34 
     35 
     36     /**
     37      * 发送给所有安卓用户
     38      *
     39      * @param notification_title 通知内容标题
     40      * @param msg_title          消息内容标题
     41      * @param msg_content        消息内容
     42      * @param extrasparam        扩展字段
     43      * @return 0推送失败,1推送成功
     44      */
     45     public static int sendToAllAndroid(String notification_title, String msg_title, String msg_content, String extrasparam, String cid) {
     46         int result = 0;
     47         try {
     48             PushPayload pushPayload = JpushClientUtil.buildPushObject_android_all_alertWithTitle(notification_title, msg_title, msg_content, extrasparam, cid);
     49             System.out.println("推送参数:" + pushPayload);
     50             PushResult pushResult = jPushClient.sendPush(pushPayload);
     51             System.out.println("推送结果:" + pushResult);
     52             if (pushResult.getResponseCode() == 200) {
     53                 result = 1;
     54             }
     55         } catch (Exception e) {
     56 
     57             e.printStackTrace();
     58         }
     59 
     60         return result;
     61     }
     62 
     63     /**
     64      * 生产发送条件
     65      *
     66      * @param notification_title
     67      * @param msg_title
     68      * @param msg_content
     69      * @param extrasparam
     70      * @param cid
     71      * @return
     72      */
     73     private static PushPayload buildPushObject_android_all_alertWithTitle(String notification_title, String msg_title, String msg_content, String extrasparam, String cid) {
     74         log.info("构建推送参数,如推荐平台,接收对象");
     75         //具体参看接口文档
     76         //https://docs.jiguang.cn/jpush/server/push/rest_api_v3_push/
     77         List list = new ArrayList();
     78         // Audience.tag(list);
     79         //  Audience audience = Audience.alias("112201","112202");//别名推送
     80         // Audience audience = Audience.tag("tag1");
     81         //Audience audience = Audience.all();
     82         // Audience audience = Audience.registrationId("112201", "112202");
     83         Audience audience = Audience.segment("c8f2fff736");
     84         return PushPayload.newBuilder()
     85                 //指定要推送的平台,all代表当前应用配置了的所有平台,也可以传android等具体平台
     86                 .setPlatform(Platform.android())
     87                 //设置发送消息id
     88                 //  .setCid(cid)
     89                 //指定推送的接收对象,all代表所有人,也可以指定已经设置成功的tag或alias或该应应用客户端调用接口获取到的registration id
     90                 .setAudience(audience)
     91                 // .setAudience(Audience.tag(list))
     92                 //jpush的通知,android的由jpush直接下发,iOS的由apns服务器下发,Winphone的由mpns下发
     93                 .setNotification(Notification.newBuilder()
     94                         //指定当前推送的android通知
     95                         .addPlatformNotification(AndroidNotification.newBuilder()
     96                                 .setAlert(notification_title)
     97                                 .setTitle(notification_title)
     98                                 //此字段为透传字段,不会显示在通知栏。用户可以通过此字段来做一些定制需求,如特定的key传要指定跳转的页面(value)
     99                                 .addExtra("androidNotification extras key", extrasparam)
    100                                 .build())
    101                         .build()
    102                 )
    103                 //Platform指定了哪些平台就会像指定平台中符合推送条件的设备进行推送。 jpush的自定义消息,
    104                 // sdk默认不做任何处理,不会有通知提示。建议看文档http://docs.jpush.io/guideline/faq/的
    105                 // [通知与自定义消息有什么区别?]了解通知和自定义消息的区别
    106                 .setMessage(Message.newBuilder()
    107                         .setMsgContent(msg_content)
    108                         .setTitle(msg_title)
    109                         .addExtra("message extras key", extrasparam)
    110                         .build())
    111 
    112                 .setOptions(Options.newBuilder()
    113                         //此字段的值是用来指定本推送要推送的apns环境,false表示开发,true表示生产;对android和自定义消息无意义
    114                         .setApnsProduction(false)
    115                         //此字段是给开发者自己给推送编号,方便推送者分辨推送记录
    116                         .setSendno(1)
    117                         //此字段的值是用来指定本推送的离线保存时长,如果不传此字段则默认保存一天,最多指定保留十天,单位为秒
    118                         .setTimeToLive(86400)
    119                         .build())
    120                 .build();
    121     }
    122 
    123     /**
    124      * 发送测试
    125      *
    126      * @param args
    127      */
    128     public static void main(String[] args) {
    129         String num = "-0405-别名";
    130         String notification_title = "推送测试-通知标题" + num;
    131         String msg_title = "推送测试-内容标题" + num;
    132         String msg_content = "我是内容" + num;
    133         String extrasparam = "我是扩展的json" + num;
    134         String cid = String.valueOf(System.currentTimeMillis());
    135         int i = JpushClientUtil.sendToAllAndroid(notification_title, msg_title, msg_content, extrasparam, cid);
    136         System.out.println("i=" + i);
    137     }
    138 }
    View Code

    3.3.发送测试

      执行发送后,如果发送成功,我们可以在后端管理系统中看见消息详情

      

    3.3.注意事项

      1.刚建立的极光账号由于配置的原因,很多发送条件是测试不了的,一定要信息阅读接口文档,如下:

      

      2.cid并非任意编号,而是有规则的

      

      3.遇到问题再补充....

  • 相关阅读:
    DOS命令行
    很好的GDAL初学者资料
    VC++工程文件
    C#操作word文档
    vue 如何不复用组件的 DOM All In One
    2021 最新 XBOX 打丧尸游戏 All In One
    gti gc All In One
    custom height drawer All In One
    Redux & React Hooks All In One
    StackOverflow sites All In One
  • 原文地址:https://www.cnblogs.com/newAndHui/p/11132390.html
Copyright © 2011-2022 走看看