JPush(极光)推送那些事儿

最近项目中有用到极光推送,其实以前也有用过,只是当时就是实现了功能,没有去研究更深一些的东西。刚好,借着这次的机会,去研究了一下原理性的东西,包括后台 和 客户端。这里就来记录一下,免得忘记。

先说一下原理:

三个角色:JPush服务器,我们自己的后台,android客户端。

它们之间的关系:

这里写图片描述

第一步

拿着自己app的包名去JPush开发者平台注册,得到我们需要的appkey 和 sercet。(具体方法不再赘述)

第二步

服务端:

  • 前期工作:

    需要依赖Jpush提供的.jar,并且需要将在Jpush平台注册得到的appkey 和 secret配置到对应的文件中。当然了,现在服务端多使用maven pom.xml来配置所需依赖,如下:
    <dependency>
    <groupId>cn.jpush.api</groupId>
    <artifactId>jpush-client</artifactId>
    <version>3.3.0</version>
    </dependency>

    ::::::::::::::::::::::

  • 具体推送逻辑(拿后台的一个实例方法):
/**推送分配线索的消息到客户端*/
private void saveImportListOtherWork (LshDaoRuMingDanModel lshDaoRuMingDanModel) {

    //省略...

    //推送消息给sc,也就是推送给手机app
    String msg = MessageContext.getDCCDistributionClueMessage(lshDaoRuMingDanModel.getCustomerName());

    //这个是静态方法,用于执行将此消息插入到数据库的操作-----我们app端的消息列表就是从数据库中拿到消息数据的                                LshMsgUtils.getLshMsg(lshDaoRuMingDanModel.getPermit(), lshDaoRuMingDanModel.getBelongCDO(), lshDaoRuMingDanModel.getPermit(),
                                         lshDaoRuMingDanModel.getBelongSC(),"线索", msg, lshDaoRuMingDanModel.getBelongCDO(), lshDaoRuMingDanModel.getCustomerPhone());
    //极光推送
JsonObject jsonObject = JsonObjectUtils.getJsonObject("线索", null, null, lshDaoRuMingDanModel.getCustomerPhone(), null, lshDaoRuMingDanModel.getBelongSC());

List list = new ArrayList();
                        list.add(lshDaoRuMingDanModel.getBelongSC());
    //调用工具类中的推送方法实现推送                           JPush.sendPushForAndroidAndIos(msg, msg, jsonObject, list, JPush.Platforms.iTask);
}


    /**
     *  静态方法-------用于将消息体插入数据库
     */
public static LshMessageModel getLshMsg(String sendPermit, String sendUser, String recPermit, String recUser, String msgType, String content,String updateUser, String mobile) {
        Timestamp ts = DateFormatUtils.getFormatTimestamp("yyyy-MM-dd HH:mm:ss", new Date());
        LshMessageModel l = new LshMessageModel();
        l.setSendUser(sendUser);
        l.setSendPermit(sendPermit);
        l.setreceivePermit(recPermit);
        l.setReceiver(recUser);
        l.setMsgType(msgType);
        l.setMsgContent(content);
        l.setIsDelete("否");
        l.setUpdateUser(updateUser);
        l.setMsgCreateTime(ts);
        l.setUpdateTime(ts);
        l.setMobile(mobile);
        l.setRead(false);
        return lshMsgUtils.lshMsgRepository.save(l);
    }

附带推送工具类。
JPush.java

第三步

客户端:

  • 前期工作:

    1. 需要依赖Jpush提供的.jar,.so文件,并且需要在清单文件中配置appkey,appkey是在在Jpush平台申请到的。
    2. 当然了,还需要在清单中配置所需权限:
<!-- 极光推送需要的权限-->
<permission                     android:name="com.iris.dch.itask.permission.JPUSH_MESSAGE"
android:protectionLevel="signature" />

<!-- 极光推送需要的权限    Required  一些系统要求的权限,如访问网络等-->
<uses-permission     android:name="com.iris.dch.itask.permission.JPUSH_MESSAGE" />
<uses-permission   android:name="android.permission.RECEIVE_USER_PRESENT" />
<uses-permission 
    android:name="android.permission.INTERNET" />
<uses-permission 
    android:name="android.permission.WAKE_LOCK" />
<uses-permission
    android:name="android.permission.READ_PHONE_STATE" />
<uses-permission 
    android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission 
android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission
     android:name="android.permission.WRITE_SETTINGS" />
<uses-permission 
    android:name="android.permission.VIBRATE" />
<uses-permission
 android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission
 android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission 
    android:name="android.permission.ACCESS_WIFI_STATE" />

除了以上两点,客户端还需要重写广播接收者,以接收推送过来的消息。

备注:在这个接收者中,还使用了有关消息列表的获取,也就是实时更新消息列表。

这里的逻辑就是,服务端推送一条消息的同时,把这条消息插入数据库,app接收到通知消息的同时,会发请求,请求得到的就是数据库中的消息。所以说,Jpush只是推送了通知消息而已。准确来说,是我们自己的后台,调用Jpush的推送方法推送消息给app。在Jpush后台,可以看到我们的推送记录。

附件:JPushReceiver.java

好了,关于JPush到此结束。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值