import KVStore from "../storage/KVStore"; import DeviceId from "./DeviceId"; export class DeviceIdService { private static _I: DeviceIdService | null = null; static get I(): DeviceIdService { return this._I ?? (this._I = new DeviceIdService()); } private constructor(private store = new KVStore("app:")) {} private static KEY = "device_id"; private _id: string | null = null; private _inited = false; /** 启动时调用:加载或生成并持久化 */ init(): void { if (this._inited) return; const saved = this.store.get(DeviceIdService.KEY); if (saved) { this._id = saved; } else { // 如需原生ID,可先尝试原生,再用 UUID 兜底 this._id = DeviceId.uuidv4(); this.store.set(DeviceIdService.KEY, this._id); } this._inited = true; } /** 获取设备号(若未 init,会懒初始化一次) */ get id(): string { if (!this._inited) this.init(); // 理论上不为空,保险起见再兜底 return this._id ?? DeviceId.uuidv4(); } /** 重置(合规/调试用) */ reset(): void { this.store.remove(DeviceIdService.KEY); this._id = null; this._inited = false; } } export default DeviceIdService;