public void OnPostDeviceInitFinished(string url, string error, string reply, System.Object userData) { int result = 0; Hashtable hashtable = MiniJSON.JsonDecode(reply) as Hashtable; if (hashtable != null) { result = DBTextResource.ParseI(hashtable["result"].ToString()); } bool ret = false; string errorMsg = ""; Hashtable argsHashtable = hashtable["args"] as Hashtable; if (result == 1) { if (argsHashtable != null) { string deviceMark = argsHashtable["device_mark"].ToString(); if (GlobalConfig.Instance.DeviceMark.Equals(deviceMark) == false) { GlobalConfig.Instance.DeviceMark = deviceMark; GlobalSettings.GetInstance(); UserPlayerPrefs.Instance.SetString("DeviceMark", deviceMark); UserPlayerPrefs.Instance.Save(); } ret = true; } } else { if (argsHashtable != null) { errorMsg = argsHashtable["error_msg"].ToString(); } } if (ret == true) { // DeviceInit成功 ControlServerLogHelper.Instance.PostPlayerFollowRecord(PlayerFollowRecordSceneId.DeviceInitEnd, "", false); ControlServerLogHelper.Instance.PostCloudLadderEventAction(CloudLadderMarkEnum.boot_app); } else { // DeviceInit失败 if (string.IsNullOrEmpty(errorMsg) == true) { if (string.IsNullOrEmpty(error) == false) { ControlServerLogHelper.Instance.PostPlayerFollowRecord(PlayerFollowRecordSceneId.DeviceInitFail, error, false); } else { ControlServerLogHelper.Instance.PostPlayerFollowRecord(PlayerFollowRecordSceneId.DeviceInitFail, "Unknown error", false); } } else { ControlServerLogHelper.Instance.PostPlayerFollowRecord(PlayerFollowRecordSceneId.DeviceInitFail, errorMsg, false); } } // action保存了NewInitSceneLoader中的函数,调用之后需要赋空 if (mPostDeviceInitFinishedCallback != null) { mPostDeviceInitFinishedCallback.Invoke(ret); mPostDeviceInitFinishedCallback = null; } }
public GlobalConfig() { LoginInfo = new LoginInfoStruct(); IBridge bridge = DBOSManager.getDBOSManager().getBridge(); mDeviceMark = bridge.getDBMachineId(); mSDKName = bridge.getSDKName(); mAppDocPath = bridge.getGameDocPath(); mAppResPath = bridge.getGameResPath(); mAppId = 0; mChannel = ""; mSubChannel = ""; // 从SDKName中解析出Channel string[] sdkNameStrs = mSDKName.Split('_'); #if UNITY_ANDROID if (sdkNameStrs.Length >= 3) { mAppId = DBTextResource.ParseI_s(sdkNameStrs[1], 0); mChannel = sdkNameStrs[2]; } #elif UNITY_IPHONE if (sdkNameStrs.Length >= 2) { mAppId = DBTextResource.ParseI_s(sdkNameStrs[1], 0); } #else #endif int appId = bridge.getAppID(); if (appId > 0) { mAppId = appId; } string channel = bridge.getCurrChannel(); if (string.IsNullOrEmpty(channel) == false) { mChannel = channel; } string subChannel = bridge.getSubChannel(); if (string.IsNullOrEmpty(subChannel) == false) { mSubChannel = subChannel; } // 获取游戏启动时间戳,非安卓平台在NewInitSceneLoader那边获取 #if UNITY_ANDROID mStartTimeStamp = bridge.getStartTimeStamp(); #endif if (bridge.isBridgeEnable() == false) { mIsEnterSDK = false; mPlatformName = ""; #if UNITY_ANDROID mPlatformName = "android"; #elif UNITY_IPHONE mPlatformName = "ios"; #elif UNITY_EDITOR mPlatformName = "editor"; #else mPlatformName = "win"; #endif return; } #if UNITY_ANDROID #if HD_RESOURCE // 高清版 mIsEnterSDK = false; Const.IsFullApp = true; #else mIsEnterSDK = true; #endif mPlatformName = "android"; mDeviceMark = bridge.getDBMachineId(); #elif UNITY_IPHONE mIsEnterSDK = true; //mIsEnterUpgradeScene = false; mPlatformName = "ios"; // iOS的DeviceMark需要从本地保存的文件读取 GlobalSettings.GetInstance(); mDeviceMark = UserPlayerPrefs.Instance.GetString("DeviceMark", ""); #if FULL_APP mIsEnterSDK = true; Const.IsFullApp = true; #else mIsEnterSDK = true; #endif #elif UNITY_STANDALONE_WIN mPlatformName = "win"; #else mPlatformName = "android"; mDeviceMark = bridge.getDBMachineId(); #endif mIsDebugMode = false; #if TEST_HOST || CMPT_RELEASE //通过SDK登录 mIsEnterSDK = false; #if UNITY_ANDROID || UNITY_IPHONE mIsEnterSDK = false; #endif #endif }