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 extends Activity> 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