目录
一、manifest
<!-- 网络权限 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<!-- Jpush Required -->
<permission
android:name="com.telit.smartclass.desktop.permission.JPUSH_MESSAGE"
android:protectionLevel="signature" />
<!-- Jpush Required -->
<uses-permission android:name="com.zbv.testJpush.permission.JPUSH_MESSAGE" />
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<!-- - Jpush -->
<!-- 极光自定义接收广播接收者 这个老版本的,注册了下面的receiver这个就可以不用了 -->
<receiver
android:name=".receiver.jpushReceiver"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="cn.jpush.android.intent.REGISTRATION" /> <!-- Required 用户注册SDK的intent -->
<action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" /> <!-- Required 用户接收SDK消息的intent -->
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" /> <!-- Required 用户接收SDK通知栏信息的intent -->
<action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" /> <!-- Required 用户打开自定义通知栏的intent -->
<action android:name="cn.jpush.android.intent.CONNECTION" /> <!-- 接收网络变化 连接/断开 since 1.6.3 -->
<category android:name="com.telit.smartclass.desktop" />
</intent-filter>
</receiver>
<!--
如果你使用的 JCore 是 2.0.0 及以上的版本,需要额外在 Androidmanifest 中配置一个Service,
以在更多手机平台上获得更稳定的支持,示例如下。(JCore1.x版本不需要)
-->
<!-- User defined. For test only 用户自定义接收消息器,3.0.7开始支持,目前新tag/alias接口设置结果会在该广播接收器对应的方法中回调 -->
<!-- since 3.3.0 接收JPush相关事件 -->
<receiver
android:name=".receiver.PushMessageReceiver"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />
<category android:name="com.telit.smartclass.desktop" />
</intent-filter>
</receiver>
<!-- Since JCore2.0.0 Required SDK核心功能 -->
<!-- 可配置android:process参数将Service放在其他进程中;android:enabled属性不能是false -->
<!-- 这个是自定义Service,要继承极光JCommonService,可以在更多手机平台上使得推送通道保持的更稳定 -->
<service
android:name=".Service.PushService"
android:enabled="true"
android:exported="false"
android:process=":pushcore">
<intent-filter>
<action android:name="cn.jiguang.user.service.action" />
</intent-filter>
</service>
<!-- - Jpush -->
二、PushService
package com.telit.zhkt_three.Service;
import cn.jpush.android.service.JCommonService;
/**
* author: qzx
* Date: 2019/5/22 9:20
*/
public class PushService extends JCommonService {
}
三、PushMessageReceiver
onNotifyMessageArrived:消息抵达即收到消息
onNotifyMessageOpened:消息打开即点击处理消息
onTagOperatorResult:注册和销毁Tag操作的结果回调
onAliasOperatorResult:注册和销毁Alias操作的结果回调
package com.telit.zhkt_three.receiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
import com.google.gson.Gson;
import com.telit.zhkt_three.JavaBean.Gson.JpushExtrasInfo;
import com.telit.zhkt_three.R;
import com.telit.zhkt_three.Utils.Jpush.TagAliasOperatorHelper;
import com.telit.zhkt_three.Utils.QZXTools;
import cn.jpush.android.api.CmdMessage;
import cn.jpush.android.api.CustomMessage;
import cn.jpush.android.api.JPushMessage;
import cn.jpush.android.api.NotificationMessage;
import cn.jpush.android.service.JPushMessageReceiver;
/**
* author: qzx
* Date: 2019/5/22 9:19
* <p>
* 使用新版的tags/alias接收的话,老版的就不再接收到消息
*/
public class PushMessageReceiver extends JPushMessageReceiver {
public static final String PRIVATE_LETTER = "1005";//私信
@Override
public void onMessage(Context context, CustomMessage customMessage) {
QZXTools.logE("[onMessage] " + customMessage, null);
}
@Override
public void onNotifyMessageOpened(Context context, NotificationMessage message) {
QZXTools.logE("[onNotifyMessageOpened] " + message, null);
String extrasInfo = message.notificationExtras;
Gson gson = new Gson();
JpushExtrasInfo jpushExtrasInfo = gson.fromJson(extrasInfo, JpushExtrasInfo.class);
if (jpushExtrasInfo.getWarn() == null || jpushExtrasInfo.getWarn().equals("")) {
QZXTools.logE("onNotifyMessageOpened warn is null or empty but extral = " + jpushExtrasInfo.getExtra1(), null);
return;
}
switch (jpushExtrasInfo.getWarn()) {
case PRIVATE_LETTER: