feat:移除LinkedMe-SDK 改用MobLink(简单同步Peko,未测试验证)

This commit is contained in:
Max
2024-01-11 19:05:21 +08:00
parent b9f130b89e
commit 56f1ca9f55
14 changed files with 176 additions and 118 deletions

View File

@@ -431,8 +431,8 @@
<!-- 此处scheme值需要替换为后台设置中的scheme值 -->
<data
android:host="linkedme"
android:scheme="yinmengnnbc" />
android:host="main"
android:scheme="yinmapp" />
<action android:name="android.intent.action.VIEW" />
@@ -498,14 +498,6 @@
android:name="com.nnbc123.app.ui.keepalive.OnePiexlActivity"
android:screenOrientation="portrait"
android:theme="@style/OnePixelActivity" />
<activity
android:name="com.nnbc123.app.MiddleActivity"
android:noHistory="true"
android:screenOrientation="portrait">
<meta-data
android:name="linkedme.sdk.auto_link_keys"
android:value="linkedme" />
</activity>
<activity
android:name="com.nnbc123.app.NimMiddleActivity"
android:noHistory="true"
@@ -1244,6 +1236,9 @@
android:exported="false"
android:screenOrientation="portrait"
android:theme="@style/AppThemeUCrop" />
<activity
android:name=".AgentActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
</application>
</manifest>

View File

@@ -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<String, Object> 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<ActivityManager.AppTask> taskInfoList = am.getAppTasks();
for (ActivityManager.AppTask taskInfo : taskInfoList) {
if (taskInfo.getTaskInfo().baseActivity.equals(cmpName)) {
flag = true;
break;
}
}
} else {
List<ActivityManager.RunningTaskInfo> taskInfoList = am.getRunningTasks(10);
for (ActivityManager.RunningTaskInfo taskInfo : taskInfoList) {
if (taskInfo.baseActivity.equals(cmpName)) {
flag = true;
break;
}
}
}
}
return flag;
} catch (Throwable e) {
return false;
}
}
}

View File

@@ -299,7 +299,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
//这里是为了处理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<IMainView, MainPresenter>
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<IMainView, MainPresenter>
/**
* @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<IMainView, MainPresenter>
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")) {

View File

@@ -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<String, String> 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();
}
}

View File

@@ -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() {

View File

@@ -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) {

View File

@@ -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);

View File

@@ -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<Class> acts = new ArrayList<>();
acts.add(MiddleActivity.class);
acts.add(AgentActivity.class);
acts.add(NimMiddleActivity.class);
acts.add(PaymentActivity.class);
acts.add(SplashActivity.class);

View File

@@ -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
}
}

View File

@@ -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 里面找个代理的仓库。
}

View File

@@ -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";
/**
* 公屏第一条提示消息
*/

View File

@@ -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

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<DevInfor>
<Wechat AppId="wx4b772d5ebc964a38" AppSecret="f045979c311e13725cbb9aa87c265668" />
<WechatMoments AppId="wx4b772d5ebc964a38" AppSecret="f045979c311e13725cbb9aa87c265668" />
<QQ AppId="102044928" AppKey="12u585rSsAHEzc4K" ShareByAppClient="true" />
<QZone AppId="102044928" AppKey="12u585rSsAHEzc4K" ShareByAppClient="true" />
</DevInfor>