chatapp3-flutter/lib/shared/tools/sc_deviceId_utils.dart
2026-04-16 19:23:54 +08:00

72 lines
2.4 KiB
Dart

import 'dart:io';
import 'package:device_info_plus/device_info_plus.dart';
import 'package:yumi/app/constants/sc_global_config.dart';
import 'package:yumi/shared/data_sources/sources/local/data_persistence.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:uuid/uuid.dart';
class SCDeviceIdUtils {
static Future<void> initDeviceinfo() async {
final info = await PackageInfo.fromPlatform();
SCGlobalConfig.version = info.version;
SCGlobalConfig.build = info.buildNumber;
final processorCount = Platform.numberOfProcessors;
if (Platform.isAndroid) {
SCGlobalConfig.channel = "Google";
final dev = await DeviceInfoPlugin().androidInfo;
SCGlobalConfig.model = dev.model;
SCGlobalConfig.sysVersion = dev.version.release;
SCGlobalConfig.sdkInt = dev.version.sdkInt;
SCGlobalConfig.applyDevicePerformanceProfile(
isLowRamDevice: dev.isLowRamDevice,
processorCount: processorCount,
);
} else if (Platform.isIOS) {
SCGlobalConfig.channel = "AppStore";
final dev = await DeviceInfoPlugin().iosInfo;
SCGlobalConfig.model = dev.model;
SCGlobalConfig.sysVersion = dev.systemVersion;
SCGlobalConfig.applyDevicePerformanceProfile(
isLowRamDevice: false,
processorCount: processorCount,
);
}
}
// 获取持久化的唯一设备ID
static Future<String> getDeviceId({bool forceRefresh = false}) async {
// 如果强制刷新或配置中不存在,则重新生成
if (forceRefresh || SCGlobalConfig.imei.isEmpty) {
final newId = await _g();
DataPersistence.setUniqueId(newId);
SCGlobalConfig.imei = newId;
return newId;
}
// 检查存储中的ID
String storedId = DataPersistence.getUniqueId();
if (storedId.isNotEmpty) {
SCGlobalConfig.imei = storedId;
return storedId;
}
// 生成新ID并存储
final newId = await _g();
DataPersistence.setUniqueId(newId);
SCGlobalConfig.imei = newId;
return newId;
}
// 生成组合唯一ID
static Future<String> _g() async {
final packageInfo = await PackageInfo.fromPlatform();
// 生成新 UUID 并存储
final newId = '${const Uuid().v4()}-${packageInfo.packageName}';
DataPersistence.setUniqueId(newId);
return newId;
}
}