diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b60a4b7f9..6f35b2fbf 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -431,8 +431,8 @@ + android:host="main" + android:scheme="yinmapp" /> @@ -498,14 +498,6 @@ android:name="com.nnbc123.app.ui.keepalive.OnePiexlActivity" android:screenOrientation="portrait" android:theme="@style/OnePixelActivity" /> - - - + \ No newline at end of file diff --git a/app/src/main/java/com/nnbc123/app/AgentActivity.java b/app/src/main/java/com/nnbc123/app/AgentActivity.java new file mode 100644 index 000000000..d44a4ea81 --- /dev/null +++ b/app/src/main/java/com/nnbc123/app/AgentActivity.java @@ -0,0 +1,120 @@ +package com.nnbc123.app; + +import android.app.ActivityManager; +import android.content.ComponentName; +import android.content.Intent; +import android.os.Build; + +import androidx.appcompat.app.AppCompatActivity; + +import com.mob.moblink.MobLink; +import com.mob.moblink.Scene; +import com.mob.moblink.SceneRestorable; +import com.netease.nim.uikit.common.util.log.LogUtil; +import com.nnbc123.app.other.activity.SplashActivity; +import com.nnbc123.core.linked.LinkedModel; +import com.nnbc123.core.linked.bean.LinkedInfo; +import com.nnbc123.core.user.UserModel; +import com.nnbc123.core.utils.TextUtils; + +import java.util.HashMap; +import java.util.List; + +public class AgentActivity extends AppCompatActivity implements SceneRestorable { + + + protected void onNewIntent(Intent intent) { + super.onNewIntent(intent); + setIntent(intent); + MobLink.updateNewIntent(getIntent(), this); + } + + @Override + public void onReturnSceneData(Scene scene) { + + try { + HashMap hashMap = scene.getParams(); + + LogUtil.print("linkedme", hashMap); + //根据key获取传入的参数的值,该key关键字View可为任意值,由集成方规定,请与web端商议,一致即可 + LinkedInfo linkedInfo = new LinkedInfo(); + String roomuid = (String) hashMap.get("roomuid"); + String uid = (String) hashMap.get("uid"); + String type = String.valueOf(hashMap.get("type")); + String familyId = (String) hashMap.get("familyId"); + String url = (String) hashMap.get("url"); + String worldId = (String) hashMap.get("worldId"); + String dynamicId = (String) hashMap.get("dynamicId"); + String inviteCode = (String) hashMap.get("inviteCode"); + if (roomuid != null) { + linkedInfo.setRoomUid(roomuid); + } + if (TextUtils.isEmptyText(roomuid) && uid != null) { + linkedInfo.setRoomUid(uid); + } + if (uid != null) { + linkedInfo.setUid(uid); + } + linkedInfo.setType(type); + if (familyId != null) { + linkedInfo.setFamilyId(familyId); + } + if (url != null) { + linkedInfo.setUrl(url); + } + if (worldId != null) { + linkedInfo.setWorldId(worldId); + } + if (dynamicId != null) { + linkedInfo.setDynamicId(dynamicId); + } + + linkedInfo.setInviteCode(inviteCode); + + LinkedModel.get().setLinkedInfo(linkedInfo); + + } catch (Exception e) { + } + + + if (isExistMainActivity(MainActivity.class) && UserModel.get().getCacheLoginUserInfo() != null) {//应用已开启&用户信息以获取 + MainActivity.handleLinkedJump(this); + } else {//应用未开启 + SplashActivity.start(this); + } + finish(); + } + + public boolean isExistMainActivity(Class activity) { + try { + Intent intent = new Intent(this, activity); + ComponentName cmpName = intent.resolveActivity(getPackageManager()); + boolean flag = false; + if (cmpName != null) { + ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + List taskInfoList = am.getAppTasks(); + for (ActivityManager.AppTask taskInfo : taskInfoList) { + if (taskInfo.getTaskInfo().baseActivity.equals(cmpName)) { + flag = true; + break; + } + } + } else { + List taskInfoList = am.getRunningTasks(10); + for (ActivityManager.RunningTaskInfo taskInfo : taskInfoList) { + if (taskInfo.baseActivity.equals(cmpName)) { + flag = true; + break; + } + } + } + + } + return flag; + } catch (Throwable e) { + return false; + } + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/nnbc123/app/MainActivity.java b/app/src/main/java/com/nnbc123/app/MainActivity.java index 39a475c3f..e7da1780d 100644 --- a/app/src/main/java/com/nnbc123/app/MainActivity.java +++ b/app/src/main/java/com/nnbc123/app/MainActivity.java @@ -299,7 +299,7 @@ public class MainActivity extends BaseMvpActivity //这里是为了处理APP后台运行的情况下点击分享房间等LinkedMe链接的情况 UserInfo userInfo = UserModel.get().getCacheLoginUserInfo(); if (userInfo != null) { - handleLinkedJump(); + handleLinkedJump(this); if (userInfo.isShowLimitCharge() && PmDialogShowMrg.get().isHasShow() && DemoCache.readNewUserChargeGift() == 1) { @@ -685,7 +685,7 @@ public class MainActivity extends BaseMvpActivity if (UserUtils.isPmMode()) return; if (handleSplashJump()) return; - if (handleLinkedJump()) return; + if (handleLinkedJump(this)) return; //渠道落地页和邀请码跳转只需要完善资料后处理一次 String spKey = KEY_FLAG_VALID_CHANNEL_PAGE + AuthModel.get().getCurrentUid(); @@ -776,7 +776,7 @@ public class MainActivity extends BaseMvpActivity /** * @return true 如果处理了跳转 */ - public boolean handleLinkedJump() { + public static boolean handleLinkedJump(Context context) { LinkedInfo linkedInfo = LinkedModel.get().getLinkedInfo(); LinkedModel.get().setLinkedInfo(null); @@ -786,9 +786,9 @@ public class MainActivity extends BaseMvpActivity LogUtil.print("linkedme跳转"); // 跳转 if (!StringUtil.isEmpty(linkedInfo.getRoomUid()) && linkedInfo.getType().equals("2")) { - AVRoomActivity.start(this, Long.parseLong(linkedInfo.getRoomUid())); + AVRoomActivity.start(context, Long.parseLong(linkedInfo.getRoomUid())); } else if (!StringUtil.isEmpty(linkedInfo.getFamilyId()) && linkedInfo.getType().equals("4")) { - FamilyHomeActivity.start(this, linkedInfo.getFamilyId()); + FamilyHomeActivity.start(context, linkedInfo.getFamilyId()); } else if (!TextUtils.isEmpty(linkedInfo.getUrl()) && linkedInfo.getType().equals("3")) { CommonWebViewActivity.start(context, UriProvider.getLinkUrl(linkedInfo.getUrl())); } else if (!TextUtils.isEmpty(linkedInfo.getWorldId()) && linkedInfo.getType().equals("5")) { diff --git a/app/src/main/java/com/nnbc123/app/MiddleActivity.java b/app/src/main/java/com/nnbc123/app/MiddleActivity.java deleted file mode 100644 index 9b8f7fb48..000000000 --- a/app/src/main/java/com/nnbc123/app/MiddleActivity.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.nnbc123.app; - -import android.os.Bundle; -import android.util.Log; - -import com.microquation.linkedme.android.LinkedME; -import com.microquation.linkedme.android.util.LinkProperties; -import com.netease.nim.uikit.common.util.log.LogUtil; -import com.nnbc123.app.base.BaseActivity; -import com.nnbc123.core.linked.LinkedModel; -import com.nnbc123.core.linked.bean.LinkedInfo; - -import java.util.HashMap; - -/** - * Created by chenran on 2017/8/5. - */ - -public class MiddleActivity extends BaseActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - if (getIntent() != null) { - //获取与深度链接相关的值 - LinkProperties linkProperties = getIntent().getParcelableExtra(LinkedME.LM_LINKPROPERTIES); - if (linkProperties != null) { - Log.i("LinkedME-Demo", "Channel " + linkProperties.getChannel()); - Log.i("LinkedME-Demo", "control params " + linkProperties.getControlParams()); - Log.i("LinkedME-Demo", "link(深度链接) " + linkProperties.getLMLink()); - Log.i("LinkedME-Demo", "是否为新安装 " + linkProperties.isLMNewUser()); - //获取自定义参数封装成的hashmap对象,参数键值对由集成方定义 - - HashMap hashMap = linkProperties.getControlParams(); - LogUtil.print("linkedme", hashMap); - //根据key获取传入的参数的值,该key关键字View可为任意值,由集成方规定,请与web端商议,一致即可 - LinkedInfo linkedInfo = new LinkedInfo(); - linkedInfo.setNewUser(linkProperties.isLMNewUser()); - String roomuid = hashMap.get("roomuid"); - String uid = hashMap.get("uid"); - String channel = hashMap.get("linkedmeChannel"); - String type = hashMap.get("type"); - String familyId = hashMap.get("familyId"); - String url = hashMap.get("url"); - String worldId = hashMap.get("worldId"); - String dynamicId = hashMap.get("dynamicId"); - String inviteCode = hashMap.get("inviteCode"); - if (roomuid != null) { - linkedInfo.setRoomUid(roomuid); - } - if (uid != null) { - linkedInfo.setUid(uid); - } - if (type != null) { - linkedInfo.setType(type); - } - if (familyId != null) { - linkedInfo.setFamilyId(familyId); - } - if (url != null) { - linkedInfo.setUrl(url); - } - if (worldId != null) { - linkedInfo.setWorldId(worldId); - } - if (dynamicId != null) { - linkedInfo.setDynamicId(dynamicId); - } - - linkedInfo.setInviteCode(inviteCode); - - LinkedModel.get().setLinkedInfo(linkedInfo); - } - } - finish(); - } -} diff --git a/app/src/main/java/com/nnbc123/app/application/XChatApplication.java b/app/src/main/java/com/nnbc123/app/application/XChatApplication.java index b5c20147a..b590fff4f 100644 --- a/app/src/main/java/com/nnbc123/app/application/XChatApplication.java +++ b/app/src/main/java/com/nnbc123/app/application/XChatApplication.java @@ -14,6 +14,7 @@ import static com.nnbc123.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_HEADER import android.annotation.SuppressLint; import android.annotation.TargetApi; +import android.app.Activity; import android.app.Application; import android.content.Context; import android.graphics.Color; @@ -35,8 +36,10 @@ import com.heytap.msp.push.HeytapPushManager; import com.hjq.toast.ToastUtils; import com.huawei.hms.support.common.ActivityMgr; import com.llew.huawei.verifier.LoadedApkHuaWei; -import com.microquation.linkedme.android.LinkedME; import com.mob.MobSDK; +import com.mob.moblink.MobLink; +import com.mob.moblink.RestoreSceneListener; +import com.mob.moblink.Scene; import com.netease.nim.uikit.api.NimUIKit; import com.netease.nim.uikit.common.util.log.LogUtil; import com.netease.nimlib.sdk.NIMClient; @@ -49,6 +52,7 @@ import com.netease.nimlib.sdk.msg.MessageNotifierCustomization; import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum; import com.netease.nimlib.sdk.msg.model.IMMessage; import com.netease.nimlib.sdk.util.NIMUtil; +import com.nnbc123.app.AgentActivity; import com.nnbc123.app.qiyukefu.CustomerServerHelper; import com.nnbc123.library.common.application.BaseApp; import com.nnbc123.library.common.file.FileHelper; @@ -66,7 +70,6 @@ import com.umeng.analytics.MobclickAgent; import com.umeng.commonsdk.UMConfigure; import com.nnbc123.app.BuildConfig; import com.nnbc123.app.MainActivity; -import com.nnbc123.app.MiddleActivity; import com.nnbc123.app.NimMiddleActivity; import com.nnbc123.app.R; import com.nnbc123.app.module_hall.HallDataManager; @@ -292,7 +295,6 @@ public class XChatApplication extends BaseApp { registerActivityLifecycleCallback(lifeManager); dealHuaWeiCrash(); initLinkedMe(); - LinkedME.getInstance().setImmediate(true); MobSDK.init(context); MobSDK.submitPolicyGrantResult(true); // 友盟统计初始化 @@ -319,15 +321,21 @@ public class XChatApplication extends BaseApp { * 初始化linkedMe */ private static void initLinkedMe() { - LinkedME.getInstance(instance, XChatConstants.LINKED_ME_KEY); - if (isDebug()) { - //设置debug模式下打印LinkedME日志 - LinkedME.getInstance().setDebug(); - } - //初始时请设置为false - LinkedME.getInstance().setImmediate(false); - //设置处理跳转逻辑的中转页,MiddleActivity详见后续配置 - LinkedME.getInstance().setHandleActivity(MiddleActivity.class.getName()); + MobSDK.init(instance, "36b91eeac7469", "63ec0702513aca17e20615dd5dfdc03f"); + MobLink.setRestoreSceneListener(new RestoreSceneListener() { + @Override + public Class willRestoreScene(Scene scene) { + return AgentActivity.class; + } + + @Override + public void completeRestore(Scene scene) { + } + + @Override + public void notFoundScene(Scene scene) { + } + }); } private static void initEnv() { diff --git a/app/src/main/java/com/nnbc123/app/base/BaseActivity.java b/app/src/main/java/com/nnbc123/app/base/BaseActivity.java index f9767b42f..4a1558550 100644 --- a/app/src/main/java/com/nnbc123/app/base/BaseActivity.java +++ b/app/src/main/java/com/nnbc123/app/base/BaseActivity.java @@ -45,7 +45,7 @@ import com.netease.nim.uikit.common.util.log.LogUtil; import com.netease.nimlib.sdk.NIMSDK; import com.netease.nimlib.sdk.Observer; import com.netease.nimlib.sdk.msg.model.BroadcastMessage; -import com.nnbc123.app.MiddleActivity; +import com.nnbc123.app.AgentActivity; import com.nnbc123.app.NimMiddleActivity; import com.nnbc123.app.R; import com.nnbc123.app.application.XChatApplication; @@ -987,7 +987,7 @@ public abstract class BaseActivity extends RxAppCompatActivity acts.add(LoginCodeActivity.class); acts.add(ResetPasswordActivity.class); acts.add(AddUserInfoActivity.class); - acts.add(MiddleActivity.class); + acts.add(AgentActivity.class); acts.add(NimMiddleActivity.class); for (Class act : acts) { diff --git a/app/src/main/java/com/nnbc123/app/other/activity/SplashActivity.java b/app/src/main/java/com/nnbc123/app/other/activity/SplashActivity.java index 1f0ce7a74..38402f7dd 100644 --- a/app/src/main/java/com/nnbc123/app/other/activity/SplashActivity.java +++ b/app/src/main/java/com/nnbc123/app/other/activity/SplashActivity.java @@ -1,6 +1,7 @@ package com.nnbc123.app.other.activity; import android.annotation.SuppressLint; +import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.text.TextUtils; @@ -41,6 +42,11 @@ public class SplashActivity extends AppCompatActivity implements View.OnClickLis private volatile boolean needJump = false; + public static void start(Context context) { + Intent starter = new Intent(context, SplashActivity.class); + context.startActivity(starter); + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); diff --git a/app/src/main/java/com/nnbc123/app/utils/ActWhiteListMrg.java b/app/src/main/java/com/nnbc123/app/utils/ActWhiteListMrg.java index 635683082..c82b3a5e2 100644 --- a/app/src/main/java/com/nnbc123/app/utils/ActWhiteListMrg.java +++ b/app/src/main/java/com/nnbc123/app/utils/ActWhiteListMrg.java @@ -3,7 +3,7 @@ package com.nnbc123.app.utils; import android.content.Context; import com.netease.nim.uikit.common.util.log.LogUtil; -import com.nnbc123.app.MiddleActivity; +import com.nnbc123.app.AgentActivity; import com.nnbc123.app.NimMiddleActivity; import com.nnbc123.app.other.activity.SplashActivity; import com.nnbc123.core.pay.PaymentActivity; @@ -26,7 +26,7 @@ public class ActWhiteListMrg { return true; } List acts = new ArrayList<>(); - acts.add(MiddleActivity.class); + acts.add(AgentActivity.class); acts.add(NimMiddleActivity.class); acts.add(PaymentActivity.class); acts.add(SplashActivity.class); diff --git a/app/src/main/java/com/nnbc123/app/utils/PermissionUtil.kt b/app/src/main/java/com/nnbc123/app/utils/PermissionUtil.kt index 53c47aaa6..35da5aec6 100644 --- a/app/src/main/java/com/nnbc123/app/utils/PermissionUtil.kt +++ b/app/src/main/java/com/nnbc123/app/utils/PermissionUtil.kt @@ -6,7 +6,7 @@ import android.content.Intent import android.content.pm.PackageManager import android.net.Uri import android.os.Build -import com.microquation.linkedme.android.v4.ContextCompatLKMe +import androidx.core.content.ContextCompat import com.nnbc123.app.BuildConfig import com.nnbc123.app.ui.setting.bean.PermissionEntity import java.lang.Exception @@ -27,7 +27,7 @@ class PermissionUtil { it } else { it.filter { s -> - ContextCompatLKMe.checkSelfPermission(context, s) == + ContextCompat.checkSelfPermission(context, s) == PackageManager.PERMISSION_GRANTED } } diff --git a/build.gradle b/build.gradle index 0e9c96487..3968efa76 100644 --- a/build.gradle +++ b/build.gradle @@ -9,13 +9,13 @@ buildscript { println "\n\n\n" repositories { - maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://jitpack.io' } google() mavenCentral() maven {url 'https://developer.huawei.com/repo/'} maven { url "https://mvn.mob.com/android" } maven { url 'https://repo1.maven.org/maven2/' } + maven { url 'https://maven.aliyun.com/repository/public' } } dependencies { @@ -35,11 +35,11 @@ allprojects { repositories { google() mavenCentral() - maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://jitpack.io' } maven { url "https://mvn.mob.com/android" } maven { url 'https://repo1.maven.org/maven2/' } maven { url 'https://developer.huawei.com/repo/' } + maven { url 'https://maven.aliyun.com/repository/public' } } //网络慢的话就去 https://maven.aliyun.com/mvn/view 里面找个代理的仓库。 } diff --git a/core/libs/LinkedME-Android-Deep-Linking-SDK-V1.1.29.jar b/core/libs/LinkedME-Android-Deep-Linking-SDK-V1.1.29.jar deleted file mode 100644 index 4aa781633..000000000 Binary files a/core/libs/LinkedME-Android-Deep-Linking-SDK-V1.1.29.jar and /dev/null differ diff --git a/core/src/diff_src_erban/java/com/nnbc123/xchat_android_constants/XChatConstants.java b/core/src/diff_src_erban/java/com/nnbc123/xchat_android_constants/XChatConstants.java index e1e41b7ae..4858e18e2 100644 --- a/core/src/diff_src_erban/java/com/nnbc123/xchat_android_constants/XChatConstants.java +++ b/core/src/diff_src_erban/java/com/nnbc123/xchat_android_constants/XChatConstants.java @@ -68,11 +68,6 @@ public class XChatConstants { */ public static final String UMENG_APP_KEY = "6537793158a9eb5b0af4dc85"; - /** - * linkedMe key - */ - public static final String LINKED_ME_KEY = "4e75ead0ff84424339dc8b0616e7094c"; - /** * 公屏第一条提示消息 */ diff --git a/mob.gradle b/mob.gradle index 28cdbd8f2..4ee7eba43 100644 --- a/mob.gradle +++ b/mob.gradle @@ -3,7 +3,11 @@ apply plugin: 'com.mob.sdk' MobSDK { appKey "37a065a03f499" appSecret "6e211fcc6f586b9a9e01f02aeaecb757" - + appBundleMode true + MobLink { + uriScheme "yinmapp://sharesdk" + appLinkHost "xxx.xx.cn" + } ShareSDK { //平台配置信息 gui false diff --git a/tmpmob/assets/ShareSDK.xml b/tmpmob/assets/ShareSDK.xml new file mode 100644 index 000000000..b90da7196 --- /dev/null +++ b/tmpmob/assets/ShareSDK.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file