diff --git a/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/stageone/HttpDnsStartUp.kt b/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/stageone/HttpDnsStartUp.kt index 8f4b6de3f7..9728f6827a 100644 --- a/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/stageone/HttpDnsStartUp.kt +++ b/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/stageone/HttpDnsStartUp.kt @@ -11,15 +11,16 @@ import com.mogo.cloud.passport.IMoGoTokenCallback import com.mogo.cloud.passport.MoGoAiCloudClient import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.commons.AbsMogoApplication -import com.mogo.commons.utils.MogoAnalyticUtils import com.mogo.commons.constants.SharedPrefsConstants import com.mogo.commons.debug.DebugConfig import com.mogo.commons.module.status.MogoStatusManager import com.mogo.commons.network.NetConfigUtils +import com.mogo.commons.utils.MogoAnalyticUtils import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_CLOUD_CONNECT_FAIL import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_CLOUD_CONNECT_LOST import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_CLOUD_CONNECT_SUCCESS +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_CLOUD_RECONNECT import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_CLOUD import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_CONNECT_STATUS import com.mogo.eagle.core.data.map.MogoLocation @@ -30,28 +31,35 @@ import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_MAIN import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr import com.mogo.eagle.core.utilcode.util.* import com.rousetime.android_startup.AndroidStartup import com.zhjt.service.chain.ChainLog import com.zhjt.service.chain.TracingConstants.Endpoint.Companion.PAD +import kotlin.properties.Delegates class HttpDnsStartUp : AndroidStartup() { - private val TAG = "MogoApplication" + companion object { + private const val TAG = "HttpDnsStartUp" + } // 配置云服务API private val clientConfig by lazy { MoGoAiCloudClientConfig.getInstance() } - // 缓存IP地址 - private var cacheIp: String? = null - private var context: Context? = null private var gotToken = false + private var httpDnsSimpleLocation by Delegates.observable(getDefaultSimpleLocation()) { _, oldValue, newValue -> + if (oldValue.cityCode != newValue.cityCode) { + reConnectSocket(oldValue.cityCode, newValue.cityCode) + } + } + override fun callCreateOnMainThread() = true override fun waitOnMainThread() = false @@ -121,7 +129,10 @@ class HttpDnsStartUp : AndroidStartup() { override fun getCurrentLocation(): HttpDnsSimpleLocation { val envConfig = CallerDevaToolsManager.getEnvConfig() if (envConfig != null) { - return HttpDnsSimpleLocation(envConfig.cityCode, envConfig.lat, envConfig.lon) + // 更新 + httpDnsSimpleLocation = + HttpDnsSimpleLocation(envConfig.cityCode, envConfig.lat, envConfig.lon) + return httpDnsSimpleLocation } var mogoLocation: MogoLocation? = null val locationClient = @@ -129,49 +140,25 @@ class HttpDnsStartUp : AndroidStartup() { if (locationClient != null) { mogoLocation = locationClient } - val httpDnsSimpleLocation = - if (mogoLocation != null && mogoLocation.latitude != 0.0 && mogoLocation.longitude != 0.0) { - if (mogoLocation.cityCode.isNullOrEmpty() - && !CallerMapUIServiceManager.getGDLocationServer(context!!)?.lastCityCode.isNullOrEmpty() - ) { - HttpDnsSimpleLocation( - CallerMapUIServiceManager.getGDLocationServer(context!!)?.lastCityCode - ?: "010", - mogoLocation.latitude, - mogoLocation.longitude - ) - } else { - HttpDnsSimpleLocation( - mogoLocation.cityCode, - mogoLocation.latitude, - mogoLocation.longitude - ) - } + if (mogoLocation != null && mogoLocation.latitude != 0.0 && mogoLocation.longitude != 0.0) { + // 更新 + httpDnsSimpleLocation = if (mogoLocation.cityCode.isNullOrEmpty() + && !CallerMapUIServiceManager.getGDLocationServer(context!!)?.lastCityCode.isNullOrEmpty() + ) { + HttpDnsSimpleLocation( + CallerMapUIServiceManager.getGDLocationServer(context!!)?.lastCityCode + ?: "010", + mogoLocation.latitude, + mogoLocation.longitude + ) } else { - val ciyCode = - SharedPrefsMgr.getInstance( - AbsMogoApplication.getApp() - ) - .getString(SharedPrefsConstants.LOCATION_CITY_CODE) - val latitude = - SharedPrefsMgr.getInstance( - AbsMogoApplication.getApp() - ) - .getString(SharedPrefsConstants.LOCATION_LATITUDE) - val longitude = - SharedPrefsMgr.getInstance( - AbsMogoApplication.getApp() - ) - .getString(SharedPrefsConstants.LOCATION_LONGITUDE) - try { - HttpDnsSimpleLocation( - ciyCode, latitude.toDouble(), longitude.toDouble() - ) - } catch (e: NumberFormatException) { - // e.printStackTrace(); - HttpDnsSimpleLocation("010", 1.0, 1.0) - } + HttpDnsSimpleLocation( + mogoLocation.cityCode, + mogoLocation.latitude, + mogoLocation.longitude + ) } + } return httpDnsSimpleLocation } } @@ -186,10 +173,7 @@ class HttpDnsStartUp : AndroidStartup() { clientConfig.token = token // 由于存在token过期问题,在更新后会回调至此处,增加二次判定 if (!gotToken) { - CallerLogger.d( - SceneConstant.M_MAIN + TAG, - "onTokenGot token : $token , sn :$sn" - ) + CallerLogger.d("$M_MAIN$TAG", "onTokenGot token : $token , sn :$sn") CallerCloudListenerManager.invokeCloudTokenGot(token, sn) // 异步初始化NetConfig asyncInit() @@ -202,7 +186,7 @@ class HttpDnsStartUp : AndroidStartup() { override fun onError(code: Int, msg: String) { CallerLogger.d( - SceneConstant.M_MAIN + TAG, + "$M_MAIN$TAG", "初始化MogoAiCloudSdk failed ,reason : $msg , 未能开启长链服务和初始化Modules服务" ) } @@ -252,11 +236,8 @@ class HttpDnsStartUp : AndroidStartup() { private fun startSocketService() { CallerLogger.d(SceneConstant.M_MAIN + TAG, "startSocketService") val location = CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02() - // 关闭长链服务 - MogoAiCloudSocketManager.getInstance(context).destroy() MogoAiCloudSocketManager.getInstance(context) .registerLifecycleListener(10020, object : IMogoLifecycleListener { - @ChainLog( linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS, linkCode = CHAIN_LINK_CLOUD, @@ -319,4 +300,41 @@ class HttpDnsStartUp : AndroidStartup() { MogoAiCloudSocketManager.getInstance(context) .init(context, DebugConfig.getSocketAppId(), lat, lon) } + + @ChainLog( + linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS, + linkCode = CHAIN_LINK_CLOUD, + endpoint = PAD, + nodeAliasCode = CHAIN_ALIAS_CODE_CLOUD_RECONNECT, + paramIndexes = [0, 1], + clientPkFileName = "sn" + ) + private fun reConnectSocket(oldCityCode: String, newCityCode: String) { + MogoAiCloudSocketManager.getInstance(context).reConnect() + } + + private fun getDefaultSimpleLocation(): HttpDnsSimpleLocation { + val ciyCode = + SharedPrefsMgr.getInstance( + AbsMogoApplication.getApp() + ) + .getString(SharedPrefsConstants.LOCATION_CITY_CODE) + val latitude = + SharedPrefsMgr.getInstance( + AbsMogoApplication.getApp() + ) + .getString(SharedPrefsConstants.LOCATION_LATITUDE) + val longitude = + SharedPrefsMgr.getInstance( + AbsMogoApplication.getApp() + ) + .getString(SharedPrefsConstants.LOCATION_LONGITUDE) + try { + return HttpDnsSimpleLocation( + ciyCode, latitude.toDouble(), longitude.toDouble() + ) + } catch (e: NumberFormatException) { + return HttpDnsSimpleLocation("010", 1.0, 1.0) + } + } } \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt index da65a90d98..b3b4418ca4 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt @@ -58,6 +58,7 @@ class ChainConstant { const val CHAIN_ALIAS_CODE_CLOUD_CONNECT_FAIL = "CHAIN_ALIAS_CODE_CLOUD_CONNECT_FAIL" const val CHAIN_ALIAS_CODE_CLOUD_CONNECT_SUCCESS = "CHAIN_ALIAS_CODE_CLOUD_CONNECT_SUCCESS" + const val CHAIN_ALIAS_CODE_CLOUD_RECONNECT = "CHAIN_ALIAS_CODE_CLOUD_RECONNECT" const val CHAIN_ALIAS_CODE_CLOUD_CONNECT_LOST = "CHAIN_ALIAS_CODE_CLOUD_CONNECT_LOST" const val CHAIN_ALIAS_CODE_CLOUD_CONNECT_ERROR = "CHAIN_ALIAS_CODE_CLOUD_CONNECT_ERROR" const val CHAIN_ALIAS_CODE_HTTP_DNS_CHANGED = "CHAIN_ALIAS_CODE_HTTP_DNS_CHANGED" diff --git a/foudations/mogo-aicloud-services-sdk/src/main/java/com/mogo/aicloud/services/socket/IMogoSocketManager.java b/foudations/mogo-aicloud-services-sdk/src/main/java/com/mogo/aicloud/services/socket/IMogoSocketManager.java index 158b60f36c..54f1b65fd8 100644 --- a/foudations/mogo-aicloud-services-sdk/src/main/java/com/mogo/aicloud/services/socket/IMogoSocketManager.java +++ b/foudations/mogo-aicloud-services-sdk/src/main/java/com/mogo/aicloud/services/socket/IMogoSocketManager.java @@ -21,6 +21,11 @@ public interface IMogoSocketManager extends IProvider { */ void init( Context context, String appId , double lat, double lon); + /** + * 重新连接 + */ + void reConnect(); + /** * 注册消息监听 * diff --git a/foudations/mogo-aicloud-services-sdk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java b/foudations/mogo-aicloud-services-sdk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java index 5285ac617c..568bc72725 100644 --- a/foudations/mogo-aicloud-services-sdk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java +++ b/foudations/mogo-aicloud-services-sdk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java @@ -74,6 +74,11 @@ public class MogoAiCloudSocketManager extends ConnectionLifecycleListener implem SocketManager.getInstance().init(context, lat, lon); } + @Override + public void reConnect() { + SocketManager.getInstance().reConnect(); + } + @Override public void registerOnMessageListener(int msgType, IMogoOnMessageListener listener) { if (mListeners.containsKey(msgType)) { diff --git a/gradle.properties b/gradle.properties index d9fedbc60f..1459737491 100644 --- a/gradle.properties +++ b/gradle.properties @@ -66,23 +66,23 @@ SERVICE_BIZ_VERSION=1.2.4 LOGLIB_VERSION=1.5.10 ######## MogoAiCloudSDK Version ######## # 网络请求LOGLIB_VERSION -MOGO_NETWORK_VERSION=1.4.4.4 +MOGO_NETWORK_VERSION=1.4.4.5 # 鉴权 -MOGO_PASSPORT_VERSION=1.4.4.4 +MOGO_PASSPORT_VERSION=1.4.4.5 # 常链接 -MOGO_SOCKET_VERSION=1.4.4.4 +MOGO_SOCKET_VERSION=1.4.4.5 # 数据采集 -MOGO_REALTIME_VERSION=1.4.4.4 +MOGO_REALTIME_VERSION=1.4.4.5 # 探路,道路事件发布,获取 -MOGO_TANLU_VERSION=1.4.4.4 +MOGO_TANLU_VERSION=1.4.4.5 # 直播推流 -MOGO_LIVE_VERSION=1.4.4.4 +MOGO_LIVE_VERSION=1.4.4.5 # 直播拉流 -MOGO_TRAFFICLIVE_VERSION=1.4.4.4 +MOGO_TRAFFICLIVE_VERSION=1.4.4.5 # 定位服务 -MOGO_LOCATION_VERSION=1.4.4.4 +MOGO_LOCATION_VERSION=1.4.4.5 # 远程通讯模块 -MOGO_TELEMATIC_VERSION=1.4.4.4 +MOGO_TELEMATIC_VERSION=1.4.4.5 ######## MogoAiCloudSDK Version ######## # 自研地图 MAP_SDK_VERSION=2.10.0.2_test_01