JPush(极光)推送那些事儿
2017-08-15 21:00
162 查看
最近项目中有用到极光推送,其实以前也有用过,只是当时就是实现了功能,没有去研究更深一些的东西。刚好,借着这次的机会,去研究了一下原理性的东西,包括后台 和 客户端。这里就来记录一下,免得忘记。
先说一下原理:
三个角色:JPush服务器,我们自己的后台,android客户端。
它们之间的关系:
第一步
拿着自己app的包名去JPush开发者平台注册,得到我们需要的appkey 和 sercet。(具体方法不再赘述)
第二步
服务端:
前期工作:
需要依赖Jpush提供的.jar,并且需要将在Jpush平台注册得到的appkey 和 secret配置到对应的文件中。当然了,现在服务端多使用maven pom.xml来配置所需依赖,如下:
::::::::::::::::::::::
具体推送逻辑(拿后台的一个实例方法):
附带推送工具类。
JPush.java
第三步
客户端:
前期工作:
需要依赖Jpush提供的.jar,.so文件,并且需要在清单文件中配置appkey,appkey是在在Jpush平台申请到的。
当然了,还需要在清单中配置所需权限:
除了以上两点,客户端还需要重写广播接收者,以接收推送过来的消息。
备注:在这个接收者中,还使用了有关消息列表的获取,也就是实时更新消息列表。
这里的逻辑就是,服务端推送一条消息的同时,把这条消息插入数据库,app接收到通知消息的同时,会发请求,请求得到的就是数据库中的消息。所以说,Jpush只是推送了通知消息而已。准确来说,是我们自己的后台,调用Jpush的推送方法推送消息给app。在Jpush后台,可以看到我们的推送记录。
附件:JPushReceiver.java
好了,关于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 4000 (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
第三步
客户端:
前期工作:
需要依赖Jpush提供的.jar,.so文件,并且需要在清单文件中配置appkey,appkey是在在Jpush平台申请到的。
当然了,还需要在清单中配置所需权限:
<!-- 极光推送需要的权限--> <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到此结束。
相关文章推荐
- ios app 推送功能 JPush极光推送的使用
- 用JPUSH极光推送实现服务端向安装了APP应用的手机推送消息(C#服务端接口)
- JPush手机APP推送简单总结-极光
- react-native 集成极光推送jpush-react-native时的小问题
- JPush极光推送Unity插件iOS设备无法获取DeviceToken
- ionic集成jPush极光推送
- Swift - JPush极光推送的使用
- JPush极光推送 Java服务器端Demo
- JPush API client library for C Sharp(极光推送API)
- 李洪强iOS开发之极光推送JPush
- 极光推送(JPush)官方文档
- Swift - JPush极光推送的使用4(根据Tag标签,给同一类别用户发推送)
- iOS极光推送 --> JPush步骤
- ios开发--极光推送(jpush)遇坑1---导入sdk
- thinkphp3.2.3集成Jpush极光推送
- JPush极光推送Java服务器端实例
- 使用极光推送(www.jpush.cn)向安卓手机推送消息【服务端向客户端主送推送】C#语言
- JPush(极光推送)
- 用JPUSH极光推送实现服务端向安装了APP应用的手机推送消息(C#服务端接口)
- 1、Android Studio集成极光推送(Jpush) 报错 java.lang.UnsatisfiedLinkError: cn.jpush.android.service.PushProtoco