分裂flutter_boost;flutter channel增加网络参数获取

This commit is contained in:
zu
2021-03-24 22:32:21 +08:00
parent 7ba20fa48c
commit f966a19d7a
5 changed files with 230 additions and 172 deletions

View File

@@ -1,141 +1,136 @@
package com.yizhuan.erban.application; package com.yizhuan.erban.application;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.app.ActivityManager; import android.app.ActivityManager;
import android.app.Application; import android.app.Application;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.pm.ApplicationInfo;
import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager;
import android.content.pm.PackageManager; import android.graphics.Color;
import android.graphics.Color; import android.net.http.HttpResponseCache;
import android.net.http.HttpResponseCache; import android.os.Build;
import android.os.Build; import android.os.Environment;
import android.os.Environment; import android.os.StrictMode;
import android.os.StrictMode; import android.text.TextUtils;
import android.text.TextUtils; import android.util.ArrayMap;
import android.util.ArrayMap; import android.util.Log;
import android.util.Log;
import androidx.multidex.MultiDex; import androidx.multidex.MultiDex;
import com.alibaba.security.realidentity.RPVerify; import com.alibaba.security.realidentity.RPVerify;
import com.baidu.mobstat.StatService; import com.baidu.mobstat.StatService;
import com.bumptech.glide.request.target.ViewTarget; import com.bumptech.glide.request.target.ViewTarget;
import com.coorchice.library.utils.LogUtils; import com.coorchice.library.utils.LogUtils;
import com.huawei.hms.support.common.ActivityMgr; import com.huawei.hms.support.common.ActivityMgr;
import com.idlefish.flutterboost.FlutterBoost; import com.idlefish.flutterboost.FlutterBoost;
import com.idlefish.flutterboost.FlutterBoostDelegate; import com.ishumei.smantifraud.SmAntiFraud;
import com.idlefish.flutterboost.containers.FlutterBoostActivity; import com.llew.huawei.verifier.LoadedApkHuaWei;
import com.ishumei.smantifraud.SmAntiFraud; import com.microquation.linkedme.android.LinkedME;
import com.llew.huawei.verifier.LoadedApkHuaWei; import com.mob.MobSDK;
import com.microquation.linkedme.android.LinkedME; import com.netease.mobsec.rjsb.watchman;
import com.mob.MobSDK; import com.netease.nim.uikit.api.NimUIKit;
import com.netease.mobsec.rjsb.watchman; import com.netease.nim.uikit.common.util.log.LogUtil;
import com.netease.nim.uikit.api.NimUIKit; import com.netease.nimlib.sdk.NIMClient;
import com.netease.nim.uikit.common.util.log.LogUtil; import com.netease.nimlib.sdk.NotificationFoldStyle;
import com.netease.nimlib.sdk.NIMClient; import com.netease.nimlib.sdk.SDKOptions;
import com.netease.nimlib.sdk.NotificationFoldStyle; import com.netease.nimlib.sdk.StatusBarNotificationConfig;
import com.netease.nimlib.sdk.SDKOptions; import com.netease.nimlib.sdk.mixpush.MixPushConfig;
import com.netease.nimlib.sdk.StatusBarNotificationConfig; import com.netease.nimlib.sdk.mixpush.NIMPushClient;
import com.netease.nimlib.sdk.mixpush.MixPushConfig; import com.netease.nimlib.sdk.msg.MessageNotifierCustomization;
import com.netease.nimlib.sdk.mixpush.NIMPushClient; import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum;
import com.netease.nimlib.sdk.msg.MessageNotifierCustomization; import com.netease.nimlib.sdk.msg.model.IMMessage;
import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum; import com.opensource.svgaplayer.SVGAParser;
import com.netease.nimlib.sdk.msg.model.IMMessage; import com.orhanobut.logger.AndroidLogAdapter;
import com.opensource.svgaplayer.SVGAParser; import com.orhanobut.logger.Logger;
import com.orhanobut.logger.AndroidLogAdapter; import com.scwang.smartrefresh.header.MaterialHeader;
import com.orhanobut.logger.Logger; import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.header.MaterialHeader; import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.squareup.leakcanary.LeakCanary;
import com.scwang.smartrefresh.layout.footer.ClassicsFooter; import com.squareup.leakcanary.RefWatcher;
import com.squareup.leakcanary.LeakCanary; import com.tencent.bugly.Bugly;
import com.squareup.leakcanary.RefWatcher; import com.tencent.bugly.beta.Beta;
import com.tencent.bugly.Bugly; import com.tencent.bugly.crashreport.CrashReport;
import com.tencent.bugly.beta.Beta; import com.umeng.analytics.MobclickAgent;
import com.tencent.bugly.crashreport.CrashReport; import com.umeng.commonsdk.UMConfigure;
import com.umeng.analytics.MobclickAgent; import com.yizhuan.erban.BuildConfig;
import com.umeng.commonsdk.UMConfigure; import com.yizhuan.erban.MainActivity;
import com.yizhuan.erban.BuildConfig; import com.yizhuan.erban.MiddleActivity;
import com.yizhuan.erban.MainActivity; import com.yizhuan.erban.NimMiddleActivity;
import com.yizhuan.erban.MiddleActivity; import com.yizhuan.erban.R;
import com.yizhuan.erban.NimMiddleActivity; import com.yizhuan.erban.flutter.ChannelConstants;
import com.yizhuan.erban.R; import com.yizhuan.erban.flutter.XplanFlutterBoostCallback;
import com.yizhuan.erban.flutter.ChannelConstants; import com.yizhuan.erban.flutter.XplanFlutterBoostDelegate;
import com.yizhuan.erban.flutter.RouterConstants; import com.yizhuan.erban.module_hall.HallDataManager;
import com.yizhuan.erban.module_hall.HallDataManager; import com.yizhuan.erban.radish.wallet.RadishWalletManager;
import com.yizhuan.erban.radish.wallet.RadishWalletManager; import com.yizhuan.erban.reciever.ConnectiveChangedReceiver;
import com.yizhuan.erban.reciever.ConnectiveChangedReceiver; import com.yizhuan.erban.utils.PushMessageHandler;
import com.yizhuan.erban.ui.pay.ChargeActivity; import com.yizhuan.xchat_android_constants.XChatConstants;
import com.yizhuan.erban.utils.PushMessageHandler; import com.yizhuan.xchat_android_core.Constants;
import com.yizhuan.xchat_android_constants.XChatConstants; import com.yizhuan.xchat_android_core.DemoCache;
import com.yizhuan.xchat_android_core.Constants; import com.yizhuan.xchat_android_core.Env;
import com.yizhuan.xchat_android_core.DemoCache; import com.yizhuan.xchat_android_core.UriProvider;
import com.yizhuan.xchat_android_core.Env; import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.UriProvider; import com.yizhuan.xchat_android_core.channel.ChannelModel;
import com.yizhuan.xchat_android_core.auth.AuthModel; import com.yizhuan.xchat_android_core.customer_server.CustomerServerModel;
import com.yizhuan.xchat_android_core.channel.ChannelModel; import com.yizhuan.xchat_android_core.family.model.FamilyModel;
import com.yizhuan.xchat_android_core.customer_server.CustomerServerModel; import com.yizhuan.xchat_android_core.gift.GiftModel;
import com.yizhuan.xchat_android_core.family.model.FamilyModel; import com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment;
import com.yizhuan.xchat_android_core.gift.GiftModel; import com.yizhuan.xchat_android_core.im.custom.bean.OpenSignInAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment; import com.yizhuan.xchat_android_core.im.custom.bean.RoomInviteFansAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.OpenSignInAttachment; import com.yizhuan.xchat_android_core.im.custom.bean.RoomInviteFansInfo;
import com.yizhuan.xchat_android_core.im.custom.bean.RoomInviteFansAttachment; import com.yizhuan.xchat_android_core.initial.InitialModel;
import com.yizhuan.xchat_android_core.im.custom.bean.RoomInviteFansInfo; import com.yizhuan.xchat_android_core.interceptor.NoParamsInterceptor;
import com.yizhuan.xchat_android_core.initial.InitialModel; import com.yizhuan.xchat_android_core.interceptor.ParamsInterceptor;
import com.yizhuan.xchat_android_core.interceptor.NoParamsInterceptor; import com.yizhuan.xchat_android_core.manager.IMMessageManager;
import com.yizhuan.xchat_android_core.interceptor.ParamsInterceptor; import com.yizhuan.xchat_android_core.manager.IMSystemMsgManager;
import com.yizhuan.xchat_android_core.manager.IMMessageManager; import com.yizhuan.xchat_android_core.market_verify.MarketVerifyModel;
import com.yizhuan.xchat_android_core.manager.IMSystemMsgManager; import com.yizhuan.xchat_android_core.mentoring_relationship.model.MentoringRelationshipModel;
import com.yizhuan.xchat_android_core.market_verify.MarketVerifyModel; import com.yizhuan.xchat_android_core.pay.PayModel;
import com.yizhuan.xchat_android_core.mentoring_relationship.model.MentoringRelationshipModel; import com.yizhuan.xchat_android_core.public_chat_hall.model.PublicChatHallModel;
import com.yizhuan.xchat_android_core.pay.PayModel; import com.yizhuan.xchat_android_core.radish.RadishModel;
import com.yizhuan.xchat_android_core.public_chat_hall.model.PublicChatHallModel; import com.yizhuan.xchat_android_core.radish.signin.bean.ImNotice;
import com.yizhuan.xchat_android_core.radish.RadishModel; import com.yizhuan.xchat_android_core.room.face.DynamicFaceModel;
import com.yizhuan.xchat_android_core.radish.signin.bean.ImNotice; import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.room.face.DynamicFaceModel; import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
import com.yizhuan.xchat_android_core.statistic.StatisticManager; import com.yizhuan.xchat_android_core.user.UserModel;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol; import com.yizhuan.xchat_android_core.utils.SharedPreferenceUtils;
import com.yizhuan.xchat_android_core.user.UserModel; import com.yizhuan.xchat_android_library.net.ErBanAllHostnameVerifier;
import com.yizhuan.xchat_android_core.utils.SharedPreferenceUtils; import com.yizhuan.xchat_android_library.net.rxnet.RxNet;
import com.yizhuan.xchat_android_library.net.ErBanAllHostnameVerifier; import com.yizhuan.xchat_android_library.utils.AppMetaDataUtil;
import com.yizhuan.xchat_android_library.net.rxnet.RxNet; import com.yizhuan.xchat_android_library.utils.AppUtils;
import com.yizhuan.xchat_android_library.utils.AppMetaDataUtil; import com.yizhuan.xchat_android_library.utils.DeviceUuidFactory;
import com.yizhuan.xchat_android_library.utils.AppUtils; import com.yizhuan.xchat_android_library.utils.ProcessUtil;
import com.yizhuan.xchat_android_library.utils.DeviceUuidFactory; import com.yizhuan.xchat_android_library.utils.SystemUtils;
import com.yizhuan.xchat_android_library.utils.ProcessUtil; import com.yizhuan.xchat_android_library.utils.VersionUtil;
import com.yizhuan.xchat_android_library.utils.SystemUtils; import com.yizhuan.xchat_android_library.utils.config.BasicConfig;
import com.yizhuan.xchat_android_library.utils.VersionUtil;
import com.yizhuan.xchat_android_library.utils.config.BasicConfig;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.HashMap; import java.util.Map;
import java.util.Map; import java.util.Objects;
import java.util.Objects;
import io.flutter.embedding.android.FlutterActivityLaunchConfigs; import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.MethodChannel; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.plugins.RxJavaPlugins;
import io.reactivex.plugins.RxJavaPlugins; import io.reactivex.schedulers.Schedulers;
import io.reactivex.schedulers.Schedulers; import io.realm.Realm;
import io.realm.Realm; import io.realm.RealmConfiguration;
import io.realm.RealmConfiguration;
import static com.yizhuan.xchat_android_constants.XChatConstants.HW_APP_ID; import static com.yizhuan.xchat_android_constants.XChatConstants.HW_APP_ID;
import static com.yizhuan.xchat_android_constants.XChatConstants.HW_CERTIFICATE_NAME; import static com.yizhuan.xchat_android_constants.XChatConstants.HW_CERTIFICATE_NAME;
import static com.yizhuan.xchat_android_constants.XChatConstants.MZ_APP_ID; import static com.yizhuan.xchat_android_constants.XChatConstants.MZ_APP_ID;
import static com.yizhuan.xchat_android_constants.XChatConstants.MZ_APP_KEY; import static com.yizhuan.xchat_android_constants.XChatConstants.MZ_APP_KEY;
import static com.yizhuan.xchat_android_constants.XChatConstants.MZ_CERTIFICATE_NAME; import static com.yizhuan.xchat_android_constants.XChatConstants.MZ_CERTIFICATE_NAME;
import static com.yizhuan.xchat_android_constants.XChatConstants.OPPO_APP_ID; import static com.yizhuan.xchat_android_constants.XChatConstants.OPPO_APP_ID;
import static com.yizhuan.xchat_android_constants.XChatConstants.OPPO_APP_KEY; import static com.yizhuan.xchat_android_constants.XChatConstants.OPPO_APP_KEY;
import static com.yizhuan.xchat_android_constants.XChatConstants.OPPO_CERTIFICATE_NAME; import static com.yizhuan.xchat_android_constants.XChatConstants.OPPO_CERTIFICATE_NAME;
import static com.yizhuan.xchat_android_constants.XChatConstants.OPPO_SECRET; import static com.yizhuan.xchat_android_constants.XChatConstants.OPPO_SECRET;
import static com.yizhuan.xchat_android_constants.XChatConstants.VIVO_CERTIFICATE_NAME; import static com.yizhuan.xchat_android_constants.XChatConstants.VIVO_CERTIFICATE_NAME;
import static com.yizhuan.xchat_android_constants.XChatConstants.XM_APP_ID; import static com.yizhuan.xchat_android_constants.XChatConstants.XM_APP_ID;
import static com.yizhuan.xchat_android_constants.XChatConstants.XM_APP_KEY; import static com.yizhuan.xchat_android_constants.XChatConstants.XM_APP_KEY;
import static com.yizhuan.xchat_android_constants.XChatConstants.XM_CERTIFICATE_NAME; import static com.yizhuan.xchat_android_constants.XChatConstants.XM_CERTIFICATE_NAME;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_HEADER_TYPE_OPEN_ROOM_NOTI; import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_HEADER_TYPE_OPEN_ROOM_NOTI;
/** /**
* @author chenran * @author chenran
@@ -147,9 +142,6 @@ public class XChatApplication extends Application {
private static XChatApplication instance; private static XChatApplication instance;
private RefWatcher mRefWatcher; private RefWatcher mRefWatcher;
private MethodChannel mMethodChannel;
private static String oaid; private static String oaid;
private static boolean isSupportOaid=false; private static boolean isSupportOaid=false;
private static int errorCode; private static int errorCode;
@@ -262,43 +254,7 @@ public class XChatApplication extends Application {
} }
dealHuaWeiCrash(); dealHuaWeiCrash();
FlutterBoost.instance().setup(this, new FlutterBoostDelegate() { FlutterBoost.instance().setup(this, new XplanFlutterBoostDelegate(), new XplanFlutterBoostCallback());
@Override
public void pushNativeRoute(String pageName, HashMap<String, String> arguments) {
if (pageName == null) {
return;
}
if (pageName.equals(RouterConstants.NATIVE_PAGE_CHARGE)) {
ChargeActivity.start(FlutterBoost.instance().currentActivity());
}
}
@Override
public void pushFlutterRoute(String pageName, String uniqueId, HashMap<String, String> arguments) {
Intent intent = new FlutterBoostActivity.CachedEngineIntentBuilder(FlutterBoostActivity.class, FlutterBoost.ENGINE_ID)
.backgroundMode(FlutterActivityLaunchConfigs.BackgroundMode.opaque)
.destroyEngineWithActivity(false)
.url(pageName)
.urlParams(arguments)
.build(FlutterBoost.instance().currentActivity());
FlutterBoost.instance().currentActivity().startActivity(intent);
}
}, engine -> {
mMethodChannel = new MethodChannel(engine.getDartExecutor(), ChannelConstants.CHANNEL_NAME);
mMethodChannel.setMethodCallHandler(((call, result) -> {
if (call.method.equals(ChannelConstants.METHOD_NAME_GETDIAMOND)) {
PayModel.get().getWalletInfo()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(walletInfo -> {
result.success(walletInfo.diamonds);
});
} else {
result.notImplemented();
}
}));
});
LogUtils.d("init time = " +(System.currentTimeMillis() - startTime) +"ms"); LogUtils.d("init time = " +(System.currentTimeMillis() - startTime) +"ms");
} }

View File

@@ -4,4 +4,6 @@ public class ChannelConstants {
public static final String CHANNEL_NAME = "com.mango.flutter.xplan"; public static final String CHANNEL_NAME = "com.mango.flutter.xplan";
public static final String METHOD_NAME_GETDIAMOND = "getDiamond"; public static final String METHOD_NAME_GETDIAMOND = "getDiamond";
public static final String METHOD_NAME_GETDEVICEINFO = "getDeviceInfo";
public static final String METHOD_NAME_GETAUTH = "getAuth";
} }

View File

@@ -0,0 +1,65 @@
package com.yizhuan.erban.flutter;
import android.content.Context;
import android.os.Build;
import android.util.ArrayMap;
import com.idlefish.flutterboost.FlutterBoost;
import com.yizhuan.erban.application.XChatApplication;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.pay.PayModel;
import com.yizhuan.xchat_android_library.utils.AppMetaDataUtil;
import com.yizhuan.xchat_android_library.utils.AppUtils;
import com.yizhuan.xchat_android_library.utils.DeviceUuidFactory;
import com.yizhuan.xchat_android_library.utils.SystemUtils;
import com.yizhuan.xchat_android_library.utils.VersionUtil;
import java.util.HashMap;
import java.util.Map;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugin.common.MethodChannel;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
public class XplanFlutterBoostCallback implements FlutterBoost.Callback {
private MethodChannel mMethodChannel;
@Override
public void onStart(FlutterEngine engine) {
Context context = XChatApplication.instance();
mMethodChannel = new MethodChannel(engine.getDartExecutor(), ChannelConstants.CHANNEL_NAME);
mMethodChannel.setMethodCallHandler(((call, result) -> {
if (call.method.equals(ChannelConstants.METHOD_NAME_GETDIAMOND)) {
PayModel.get().getWalletInfo()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(walletInfo -> {
result.success(walletInfo.diamonds);
});
} else if (call.method.equals(ChannelConstants.METHOD_NAME_GETDEVICEINFO)) {
Map<String, String> httpParams = new HashMap<>();
httpParams.put("os", "android");
httpParams.put("osVersion", Build.VERSION.RELEASE);
httpParams.put("app", "yinyou");
httpParams.put("ispType", String.valueOf(SystemUtils.getIspType(context)));
httpParams.put("netType", String.valueOf(SystemUtils.getNetworkType(context)));
httpParams.put("model", SystemUtils.getPhoneModel());
httpParams.put("appVersion", VersionUtil.getLocalName(context));
httpParams.put("appVersionCode", String.valueOf(AppUtils.getVersionCode(context)));
httpParams.put("deviceId", DeviceUuidFactory.getDeviceId(context));
httpParams.put("channel", AppMetaDataUtil.getChannelID());
result.success(httpParams);
} else if (call.method.equals(ChannelConstants.METHOD_NAME_GETAUTH)) {
Map<String, String> headerParams = new HashMap<>();
headerParams.put("pub_uid", String.valueOf(AuthModel.get().getCurrentUid()));
headerParams.put("pub_ticket", AuthModel.get().getTicket());
result.success(headerParams);
} else {
result.notImplemented();
}
}));
}
}

View File

@@ -0,0 +1,35 @@
package com.yizhuan.erban.flutter;
import android.content.Intent;
import com.idlefish.flutterboost.FlutterBoost;
import com.idlefish.flutterboost.FlutterBoostDelegate;
import com.idlefish.flutterboost.containers.FlutterBoostActivity;
import com.yizhuan.erban.ui.pay.ChargeActivity;
import java.util.HashMap;
import io.flutter.embedding.android.FlutterActivityLaunchConfigs;
public class XplanFlutterBoostDelegate implements FlutterBoostDelegate {
@Override
public void pushNativeRoute(String pageName, HashMap<String, String> arguments) {
if (pageName == null) {
return;
}
if (pageName.equals(RouterConstants.NATIVE_PAGE_CHARGE)) {
ChargeActivity.start(FlutterBoost.instance().currentActivity());
}
}
@Override
public void pushFlutterRoute(String pageName, String uniqueId, HashMap<String, String> arguments) {
Intent intent = new FlutterBoostActivity.CachedEngineIntentBuilder(FlutterBoostActivity.class, FlutterBoost.ENGINE_ID)
.backgroundMode(FlutterActivityLaunchConfigs.BackgroundMode.opaque)
.destroyEngineWithActivity(false)
.url(pageName)
.urlParams(arguments)
.build(FlutterBoost.instance().currentActivity());
FlutterBoost.instance().currentActivity().startActivity(intent);
}
}