getAppUUID static method

Future<String> getAppUUID()

获取钥匙串中存储的应用唯一UUID,如果没有则自动生成并写入

返回值: Future<String>: 应用的唯一标识UUID字符串

示例:

String uuid = await AppUtil.getAppUUID();
print('App UUID: $uuid');

返回示例: '018fc816-330b-7dab-b1f4-61109d8e9bc6'

Implementation

static Future<String> getAppUUID() async {
  final appInfo = await getAppInfo();
  String? value;
  try {
    value = await KeychainUtil.read(key: '${appInfo.packageName}.appUUID');
  } catch (e) {
    Logger.trace('Failed to read UUID from keychain: $e');
  }
  if (value == null) {
    value = const Uuid().v7();
    try {
      //防止触发安全机制崩溃
      Future.delayed(const Duration(milliseconds: 500));
      KeychainUtil.write(
        key: '${appInfo.packageName}.appUUID',
        value: value,
      ).then((bool success) {
        if (success) {
          Logger.trace('Write UUID to keychain success: $value');
        }
      });
    } catch (writeError) {
      Logger.trace('Failed to write UUID to keychain: $writeError');
    }
  }
  return value;
}