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