From 8a70b06270b2f502c6e4b0ba9829d766be89defe Mon Sep 17 00:00:00 2001
From: oujunhui <313127320@qq.com>
Date: Mon, 24 Aug 2020 16:14:01 +0800
Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=85=A5=E5=8D=8E=E4=B8=BA=E6=8E=A8?=
=?UTF-8?q?=E9=80=81=E7=82=B9=E5=87=BB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/main/AndroidManifest.xml | 12 ++++
.../java/com/yizhuan/erban/MainActivity.java | 13 ++--
.../erban/push/HWPushMiddleActivity.java | 37 +++++++++++
.../erban/push/HwPushMessageReceiver.java | 13 ----
.../erban/ui/im/fragment/MessageFragment.java | 66 ++++++++++++++++---
gradle.properties | 4 +-
6 files changed, 113 insertions(+), 32 deletions(-)
create mode 100644 app/src/main/java/com/yizhuan/erban/push/HWPushMiddleActivity.java
delete mode 100644 app/src/main/java/com/yizhuan/erban/push/HwPushMessageReceiver.java
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ba62f398b..26a353e36 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -385,6 +385,18 @@
android:screenOrientation="behind"
android:windowSoftInputMode="adjustResize|stateHidden" />
+
+
+
+
+
+
+
+
+
if (NimMiddleActivity.delayOpenCommunity) {
return;
}
-// if (NimMiddleActivity.openCommunity) {
-// NimMiddleActivity.openCommunity = false;
- LogUtils.e("NimMiddleActivity"+NimMiddleActivity.payloadUid);
-
+ if (NimMiddleActivity.openCommunity) {
+ NimMiddleActivity.openCommunity = false;
if (NimMiddleActivity.skipType == 0)return;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
- if (NimMiddleActivity.skipType == 2){
+ if (NimMiddleActivity.skipType == PushMessageHandler.PAYLOAD_SKIPTYPE_INVITE_FANS){
AVRoomActivity.start(MainActivity.this,NimMiddleActivity.payloadUid);
- }else if (NimMiddleActivity.skipType == 4){
+ }else if (NimMiddleActivity.skipType == PushMessageHandler.PAYLOAD_SKIPTYPE_PRIVATE_MSG){
NimP2PMessageActivity.start(MainActivity.this, NimMiddleActivity.payloadUid + "");
}
}
}, 2000);
-// }
+ }
}
private Single handleChannelPageInfo(boolean isSplashOrLinkedme) {
diff --git a/app/src/main/java/com/yizhuan/erban/push/HWPushMiddleActivity.java b/app/src/main/java/com/yizhuan/erban/push/HWPushMiddleActivity.java
new file mode 100644
index 000000000..244d8ce7c
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/push/HWPushMiddleActivity.java
@@ -0,0 +1,37 @@
+package com.yizhuan.erban.push;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+
+import com.yizhuan.erban.MainActivity;
+import com.yizhuan.erban.avroom.activity.AVRoomActivity;
+import com.yizhuan.erban.ui.im.avtivity.NimP2PMessageActivity;
+import com.yizhuan.erban.utils.PushMessageHandler;
+
+public class HWPushMiddleActivity extends Activity {
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ Intent intent = getIntent();
+ if (null != intent) {
+ // 方法2设置的数据通过如下方式获取
+ MainActivity.start(this);
+ new Handler().postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ int skiptype = intent.getIntExtra("skiptype",0);
+ if (skiptype == PushMessageHandler.PAYLOAD_SKIPTYPE_INVITE_FANS){
+ String roomUid = intent.getStringExtra("roomUid");
+ AVRoomActivity.start(HWPushMiddleActivity.this,Long.parseLong(roomUid));
+ }else if (skiptype == PushMessageHandler.PAYLOAD_SKIPTYPE_PRIVATE_MSG){
+ String uid = intent.getStringExtra("uid");
+ NimP2PMessageActivity.start(HWPushMiddleActivity.this, uid);
+ }
+ }
+ }, 2000);
+ }
+ finish();
+ }
+}
diff --git a/app/src/main/java/com/yizhuan/erban/push/HwPushMessageReceiver.java b/app/src/main/java/com/yizhuan/erban/push/HwPushMessageReceiver.java
deleted file mode 100644
index 058d34616..000000000
--- a/app/src/main/java/com/yizhuan/erban/push/HwPushMessageReceiver.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.yizhuan.erban.push;
-
-import android.content.Context;
-import android.os.Bundle;
-
-import com.netease.nimlib.sdk.mixpush.HWPushMessageService;
-import com.orhanobut.logger.Logger;
-import com.yizhuan.xchat_android_core.statistic.StatisticManager;
-
-public class HwPushMessageReceiver extends HWPushMessageService {
-
-
-}
diff --git a/app/src/main/java/com/yizhuan/erban/ui/im/fragment/MessageFragment.java b/app/src/main/java/com/yizhuan/erban/ui/im/fragment/MessageFragment.java
index 3db37b6fe..01532bf50 100644
--- a/app/src/main/java/com/yizhuan/erban/ui/im/fragment/MessageFragment.java
+++ b/app/src/main/java/com/yizhuan/erban/ui/im/fragment/MessageFragment.java
@@ -4,6 +4,7 @@ import android.Manifest;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.media.AudioManager;
+import android.net.Uri;
import android.os.Bundle;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -15,7 +16,7 @@ import android.view.ViewGroup;
import android.widget.FrameLayout;
import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
+
import com.coorchice.library.utils.LogUtils;
import com.google.gson.Gson;
import com.netease.nim.uikit.api.UIKitOptions;
@@ -85,6 +86,8 @@ import com.yizhuan.xchat_android_library.utils.config.BasicConfig;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
+import org.json.JSONException;
+import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
@@ -476,7 +479,7 @@ public class MessageFragment extends TFragment implements ModuleProxy, MessageLi
public void onEvent(CustomNotification messages) {
if (messages != null) {
try {
- JSONObject object = JSON.parseObject(messages.getContent());
+ com.alibaba.fastjson.JSONObject object = JSON.parseObject(messages.getContent());
ImGameInfo matchInfo = new Gson().fromJson(object.toJSONString(), ImGameInfo.class);
if (matchInfo == null || TextUtils.isEmpty(matchInfo.getGameUrl())) return;
messageListPanel.receiveCustomNotification(matchInfo);
@@ -508,15 +511,16 @@ public class MessageFragment extends TFragment implements ModuleProxy, MessageLi
message = changeToRobotMsg(message);
Map payload = new HashMap<>();
payload.put("skiptype", PushMessageHandler.PAYLOAD_SKIPTYPE_PRIVATE_MSG);
+ try {
JSONObject dataObj = new JSONObject();
- dataObj.put("uid",message.getFromAccount());
- dataObj.put("content",message.getContent());
- payload.put("data",dataObj);
- //vivo开启系统推送
- int classification = 1;
- Map vivoField = new HashMap<>();
- vivoField.put("classification", classification);
- payload.put("vivoField", vivoField);
+ dataObj.putOpt("uid",message.getFromAccount()).putOpt("content",message.getContent());
+ payload.put("data",dataObj);
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+
+ payload.put("vivoField", vivoField());
+ payload.put("hwField", hwField(message));
message.setPushPayload(payload);
final IMMessage msg = message;
@@ -547,6 +551,48 @@ public class MessageFragment extends TFragment implements ModuleProxy, MessageLi
return true;
}
+ /**
+ * vivo推送payload
+ * @return
+ */
+ private Map vivoField(){
+ //vivo开启系统推送
+ int classification = 1;
+ Map vivoField = new HashMap<>();
+ vivoField.put("classification", classification);
+ return vivoField;
+ }
+
+ /**
+ * 华为推送payload
+ * @return
+ */
+ private JSONObject hwField(IMMessage message){
+ Intent hwIntent = new Intent(Intent.ACTION_VIEW);
+ String intentStr = String.format(
+ "pushscheme://com.huawei.codelabpush/deeplink?sessionID=%s&sessionType=%s",
+ sessionId, sessionType
+ );
+ hwIntent.putExtra("skiptype",PushMessageHandler.PAYLOAD_SKIPTYPE_PRIVATE_MSG);
+ hwIntent.putExtra("uid",message.getFromAccount());
+ hwIntent.setData(Uri.parse(intentStr));
+ hwIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ String intentUri = hwIntent.toUri(Intent.URI_INTENT_SCHEME);
+//点击事件的内容
+ JSONObject clickAction = new JSONObject();
+//通知的内容
+ JSONObject notification = new JSONObject();
+
+ try {
+ clickAction.putOpt("type", 1)
+ .putOpt("intent", intentUri);
+ notification.putOpt("click_action", clickAction);
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ return notification;
+ }
+
// 被对方拉入黑名单后,发消息失败的交互处理
private void sendFailWithBlackList(int code, IMMessage msg) {
if (code == ResponseCode.RES_IN_BLACK_LIST) {
diff --git a/gradle.properties b/gradle.properties
index 1ed7ee96c..a134262fc 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -21,5 +21,5 @@ with_jenkins=false
#\u6253\u652F\u6301x86\u7684\u6A21\u62DF\u5668\u5305\u4F7F\u7528
ndk_abi_filters=arm
-version_name=1.2.2
-version_code=122
\ No newline at end of file
+version_name=1.3.0
+version_code=130
\ No newline at end of file