小东Freeman + 关注

签名:我们爱我们的倒霉工作,也爱这千疮百孔的世界。

Java使用极光推送详解

发表于 6个月前   903次查看    0评论  4 赞

极光推送(JPush)是独立的第三方云推送平台,致力于为全球移动应用开发者提供移动消息推送服务。

jpush极光推送的原理其实很简单,只要android或ios客户端集成好了jpush证书,实现极光推送java服务端集成是一件很容易的事情,不需要想得太复杂。jpush极光推送证书与手机客户端的集成请百度,资料一大把。具体我们来看看java如何集成极光推送进行服务器端的使用。


原理

当用户登录成功的时候,给其设置一个Alias别名登录,我们把alias别名设置成唯一的标识,例如用户id,这样用户就会自动和手机客户端绑定在一块了,android与ios都有一个类似“JPUSHService.setAlias”的方法,然后jpush在java服务器推送消息的时候,该登录用户就可以收到推送的信息了。

当用户退出登录的时候,就会有一个类似“JPUSHService.deleteAlias”的方法解除手机客户端与极光推送的绑定,这样用户退出登录就不会再收到消息了( 注意:这个退出指的是退出用户登录,不是进入app后台,进入app后台没有退出依然可以收到jpush推送的信息 )。


Java集成

1、在maven pom.xml中添加jpush jar包

<dependency>
    <groupId>cn.jpush.api</groupId>
    <artifactId>jpush-client</artifactId>
    <version>3.3.9</version>
</dependency>


2、添加相关依赖

  <dependency>
        <groupId>cn.jpush.api</groupId>
        <artifactId>jiguang-common</artifactId>
        <version>1.1.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>

    <!-- For log4j -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.7</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>


3、推送给全平台

import cn.jiguang.common.resp.APIConnectionException;
import cn.jiguang.common.resp.APIRequestException;
import cn.jpush.api.JPushClient;
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.audience.AudienceTarget;
import cn.jpush.api.push.model.notification.AndroidNotification;
import cn.jpush.api.push.model.notification.IosNotification;
import cn.jpush.api.push.model.notification.Notification;

import java.util.HashMap;
import java.util.Map;

public class JpushUtils
{
   // app_key和masterSecret
   private static String APP_KEY = "98a694a709xxxxxxxxxxxxx";
   private static String MASTER_SECRET = "1abf8c2385exxxxxxxxxxx";

   //极光推送>>All所有平台
   public static void jpushAll(Map<String, String> parm) {
      //创建JPushClient
      JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);
      //创建option
      PushPayload payload = PushPayload.newBuilder()

            .setPlatform(Platform.all())  //所有平台的用户
            .setAudience(Audience.alias(parm.get("id")))         
            .setNotification(Notification.newBuilder()
                  .addPlatformNotification(IosNotification.newBuilder() //发送ios
                        .setAlert(parm.get("msg")) //消息体
                        .setBadge(+1)
                        .setSound("happy") //ios提示音
                        .addExtras(parm) //附加参数
                        .build())
                  .addPlatformNotification(AndroidNotification.newBuilder() //发送android
                        .addExtras(parm) //附加参数
                        .setAlert(parm.get("msg")) //消息体
                        .build())
                  .build())
            .setOptions(Options.newBuilder().setApnsProduction(false).build())//指定开发环境 true为生产模式 false 为测试模式 (android不区分模式,ios区分模式)
            .setMessage(Message.newBuilder().setMsgContent(parm.get("msg")).addExtras(parm).build())//自定义信息
            .build();
      try {
         PushResult pu = jpushClient.sendPush(payload);
         System.out.println(pu.toString());
      } catch (APIConnectionException e) {
         e.printStackTrace();
      } catch (APIRequestException e) {
         e.printStackTrace();
      }
   }

}


注意:

1、.setAudience() 设置受众人群,也就是谁能接收到,具体请参考:http://www.funyan.cn/p/304.html


2、.addExtras(parm)设置附加参数,这里是传的一个map,可以传多个参数,用于打开通知跳转。


测试

public static void main(String[] args) {

   //设置推送参数
   //这里就可以自定义推送参数了
   Map<String, String> parm = new HashMap<String, String>();
   //设备id,指定设备推送id
   parm.put("id", "客户端定义的别名");
   //设置提示信息,内容是文章标题
   parm.put("msg","测试测试");
   //附加参数
   parm.put("qwe","123");
   JpushUtils.jpushAll(parm);

}


这样就完成了java服务端的极光推送了,非常简单。

4人已赞


本文由Fun言网 – 小东Freeman创作,转载请务必附上本文链接和出处,欢迎参与我们的付费投稿计划


你还没有登录,请先 登录注册!
文章评论0