diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java index 534443515f..8373bb03ad 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java @@ -20,6 +20,7 @@ import com.mogo.module.service.network.RefreshCallback; import com.mogo.module.service.network.RefreshModel; import com.mogo.module.service.network.ZhidaoRefreshModel; import com.mogo.module.service.network.bean.LauncherCardAdvertisementData; +import com.mogo.service.passport.IMogoTicketCallback; import com.mogo.utils.AppUtils; import com.mogo.utils.NetworkUtils; import com.mogo.utils.logger.Logger; @@ -74,6 +75,11 @@ class LauncherCardRefresher { */ private int mDefaultConfigCounter = 0; + /** + * 因为缓存ticket失效导致失败的情况,需要重新请求ticket然后再次获取数据,这里重试3次 + */ + private int mRefreshTicketCounter = 0; + private LauncherCardRefresher( Context context ) { mContext = context; mRefreshModel = new RefreshModel( mContext ); @@ -164,6 +170,7 @@ class LauncherCardRefresher { mLaunchTTSText = mContext.getString( R.string.module_service_open_app_tip ); startExplorerWayStrategy(); mDefaultConfigCounter = 0; + mRefreshTicketCounter = 0; // 延时加载数据,已保证accOn之后网络恢复正常 long delay = ONE_MINUTE; if ( NetworkUtils.isConnected( mContext ) ) { @@ -376,9 +383,33 @@ class LauncherCardRefresher { @Override public void onError( String message, int code ) { super.onError( message, code ); + if ( code == 100046 ) { + refreshTicket(); + } Logger.e( TAG, "获取配置失败 msg = %s, code = %s", message, code ); } } ); + + } + + private void refreshTicket() { + mRefreshTicketCounter++; + MarkerServiceHandler.getApis().getPassportManagerApi().requestTicket( new IMogoTicketCallback() { + @Override + public void onTicketGot( String ticket ) { + } + + @Override + public void onError( int code, String msg ) { + } + + @Override + public void onLoginSuccess( String token, String sn ) { + if ( mRefreshTicketCounter < 3 ) { + startAdvertisementsStrategy(); + } + } + } ); } private void handleGotCarAdvertisingList( List< LauncherCardAdvertisementData.LauncherCardAdvertisement > data ) {