getDeviceId static method

Future<String> getDeviceId()

获取唯一设备 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!;
}