getDeviceId static method
获取唯一设备 ID 若没有从设备获取到,则生成一个 UUID 作为设备 ID
Implementation
static Future<String> getDeviceId() async {
// 如果已经获取过设备ID,则直接返回
if (_deviceId.isNotNullOrEmpty) {
return _deviceId!;
}
// 从本地获取设备ID
String? deviceId = await SharedPrefsUtils.getString(SPConstants.deviceId);
if (deviceId.isNotNullOrEmpty) {
_deviceId = deviceId;
return _deviceId!;
}
// 获取设备ID
Map<String, dynamic> deviceData = await getDeviceData();
if (kIsWeb) {
_deviceId = '';
} else if (Platform.isAndroid) {
_deviceId = await _getAndroidId();
} else if (Platform.isIOS) {
_deviceId = deviceData['identifierForVendor'];
}
// 如果获取不到,则生成一个UUID
_deviceId = _getUniqueDeviceId(_deviceId);
// 保存到本地
SharedPrefsUtils.putString(SPConstants.deviceId, _deviceId!);
return _deviceId!;
}