161 lines
5.2 KiB
Java
161 lines
5.2 KiB
Java
package com.mogo.commons;
|
||
|
||
import android.app.Application;
|
||
import android.content.Context;
|
||
import android.text.TextUtils;
|
||
import android.view.Gravity;
|
||
import android.view.LayoutInflater;
|
||
import android.view.View;
|
||
import android.widget.TextView;
|
||
|
||
import com.alibaba.android.arouter.launcher.ARouter;
|
||
import com.elegant.analytics.Analytics;
|
||
import com.elegant.analytics.AnalyticsConfig;
|
||
import com.mogo.commons.debug.DebugConfig;
|
||
import com.mogo.commons.device.Devices;
|
||
import com.mogo.commons.network.AllAllowedHostnameVerifier;
|
||
import com.mogo.commons.network.Constants;
|
||
import com.mogo.commons.network.ParamsUtil;
|
||
import com.mogo.commons.network.X509TrustManagerImpl;
|
||
import com.mogo.commons.storage.SpStorage;
|
||
import com.mogo.utils.ThreadPoolService;
|
||
import com.mogo.utils.TipToast;
|
||
import com.mogo.utils.logger.Logger;
|
||
import com.mogo.utils.network.NetConfig;
|
||
import com.zhidao.account.sdk.AccountClientManager;
|
||
import com.zhidao.account.sdk.callback.TicketInfoCallback;
|
||
import com.zhidao.account.sdk.network.NetEnvironManager;
|
||
|
||
import java.io.IOException;
|
||
import java.security.SecureRandom;
|
||
|
||
import javax.net.ssl.SSLContext;
|
||
import javax.net.ssl.TrustManager;
|
||
|
||
import okhttp3.Interceptor;
|
||
import okhttp3.Request;
|
||
import okhttp3.Response;
|
||
|
||
/**
|
||
* @author congtaowang
|
||
* @since 2019-12-23
|
||
* <p>
|
||
* 描述
|
||
*/
|
||
public class AbsMogoApplication extends Application {
|
||
|
||
private static final String TAG = "AbsMogoApplication";
|
||
|
||
private static Application sApp;
|
||
|
||
public static Application getApp() {
|
||
return sApp;
|
||
}
|
||
|
||
@Override
|
||
public void onCreate() {
|
||
super.onCreate();
|
||
sApp = this;
|
||
init();
|
||
}
|
||
|
||
protected void init() {
|
||
syncInit();
|
||
asyncInit();
|
||
}
|
||
|
||
private void syncInit() {
|
||
// 初始化 arouter
|
||
if ( DebugConfig.isDebug() ) {
|
||
ARouter.openDebug();
|
||
ARouter.openLog();
|
||
}
|
||
ARouter.init( sApp );
|
||
TipToast.init( this, ( ( context, message ) -> {
|
||
if ( TextUtils.isEmpty( message ) ) {
|
||
return null;
|
||
}
|
||
View contentView = LayoutInflater.from( context ).inflate( R.layout.module_commons_layout_toast, null );
|
||
TextView txt = contentView.findViewById( R.id.module_commons_toast_msg );
|
||
txt.setText( message );
|
||
return contentView;
|
||
} ) );
|
||
}
|
||
|
||
/**
|
||
* 忽略 https 验证
|
||
*
|
||
* @return
|
||
* @throws Exception
|
||
*/
|
||
private static SSLContext getSslContext() throws Exception {
|
||
SSLContext sc = null;
|
||
sc = SSLContext.getInstance( "SSL" );
|
||
sc.init( null, new TrustManager[]{new X509TrustManagerImpl()}, new SecureRandom() );
|
||
return sc;
|
||
}
|
||
|
||
private void asyncInit() {
|
||
ThreadPoolService.execute( () -> {
|
||
initNetConfig();
|
||
initAccountSdk();
|
||
// 初始化toast
|
||
// 初始化埋点
|
||
Analytics.getInstance().start( sApp );
|
||
Analytics.getInstance().setAppKey( "6bbe7e0e1ecd8e2f8dc336e1678a2791" );
|
||
// 0 - debug 近实时上报,积累一条埋点上报,或者积累3秒上报一次。
|
||
// 2 - 本地缓存,聚合上报,积累30条埋点上报,或者积累60秒上报一次。
|
||
AnalyticsConfig.getInstance( sApp ).setMode( DebugConfig.isDebug() ? 2 : 2 );
|
||
AnalyticsConfig.getInstance( sApp ).shouldLog( DebugConfig.isDebug() );
|
||
|
||
Devices.checkBindState();
|
||
} );
|
||
}
|
||
|
||
private static void initAccountSdk() {
|
||
int mode = DebugConfig.getNetMode();
|
||
if ( mode == DebugConfig.NET_MODE_DEMO ) {
|
||
// 演示环境用 qa 的
|
||
mode = DebugConfig.NET_MODE_QA;
|
||
}
|
||
AccountClientManager.init( sApp, mode, NetEnvironManager.OS_2C, "os2.0-launcher" );
|
||
AccountClientManager.getTicket( new TicketInfoCallback() {
|
||
@Override
|
||
public void onSuccess( String ticket ) {
|
||
SpStorage.setTicket( ticket );
|
||
Logger.w( TAG, "request ticket success" );
|
||
}
|
||
|
||
@Override
|
||
public void onFailure( int code, String msg ) {
|
||
Logger.w( TAG, "request ticket error code = %d, msg = %s", code, msg );
|
||
}
|
||
} );
|
||
}
|
||
|
||
private static void initNetConfig() {
|
||
|
||
try {
|
||
SSLContext sc = getSslContext();
|
||
NetConfig.instance().setSslContext( sc );
|
||
} catch ( Exception e ) {
|
||
}
|
||
|
||
NetConfig.instance().setSignaturePrefix( Constants.SIGN_PREFIX )
|
||
.setPublicParams( ParamsUtil.getStaticParams() )
|
||
.setHostnameVerifier( new AllAllowedHostnameVerifier() )
|
||
.addNetworkInterceptor( new Interceptor() {
|
||
@Override
|
||
public Response intercept( Chain chain ) throws IOException {
|
||
Request original = chain.request();
|
||
Request request = original.newBuilder()
|
||
.header( "token", SpStorage.getTicket() )
|
||
.method( original.method(), original.body() )
|
||
.build();
|
||
return chain.proceed( request );
|
||
}
|
||
} )
|
||
.setLoggable( DebugConfig.isDebug() );
|
||
}
|
||
}
|