import { CommonUtils } from "./common"; class getuiInstance { constructor() { this.cid = "" } getClientID(Userbm, UserName) { // #ifdef APP-PLUS // 定义重试参数:最多重试5次,每次间隔1.5秒(可根据实际情况调整) const maxRetry = 5; const retryInterval = 1500; let retryCount = 0; // 封装获取clientid的核心逻辑 const tryGetClientId = () => { try { const info = plus.push.getClientInfo(); // 兼容iOS不同SDK版本的字段名(clientid / clientId) const clientid = info?.clientid || info?.clientId; // 成功获取到clientid if (clientid) { this.cid = clientid; console.log('成功获取cid: ', this.cid); this.setUserClientIDRelative(Userbm, UserName, this.cid, 1); return; } // 未获取到,且还有重试次数 if (retryCount < maxRetry) { retryCount++; console.log(`第${retryCount}次重试获取cid(暂未获取到),剩余重试次数:${maxRetry - retryCount}`); setTimeout(tryGetClientId, retryInterval); return; } // 重试耗尽仍未获取到 console.error('重试次数耗尽,iOS环境下未获取到clientid'); this.cid = ''; // 可选:此处可添加获取失败的兜底逻辑(比如记录日志、提示用户等) this.setUserClientIDRelative(Userbm, UserName, this.cid, 1); } catch (error) { console.error('获取clientid过程中出现异常:', error); if (retryCount < maxRetry) { retryCount++; setTimeout(tryGetClientId, retryInterval); } } }; // 启动第一次获取 tryGetClientId(); // #endif } async setUserClientIDRelative(Userbm, UserName, ClientID, Online) { try { let res = await CommonUtils.doRequest2Async({ url: "/Web/SetGy_UserClientIdConnection", method: "POST", data: { HUserbm: Userbm, HUserName: UserName, HClientID: ClientID, HOnline: Online } }) let { data, count, Message } = res.data if(count != 1) { CommonUtils.showTips({ title: "温馨提示", message: Message }) } }catch(err) { CommonUtils.showTips({ title: "温馨提示", message: err }) } } } export default new getuiInstance()