getAppUUID static method
获取钥匙串中存储的应用唯一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;
}