persistentUUID property
Get a persistent device UUID that survives app reinstalls. Uses secure storage for persistence, generates new UUID if none exists.
Implementation
static Future<String> get persistentUUID async {
// Return cached value if available
if (_cachedUUID != null) {
return _cachedUUID!;
}
// Strategy 1: Try to get from secure storage (survives app reinstalls)
final storedUUID = await KeychainManager.shared.retrieveDeviceUUID();
if (storedUUID != null && storedUUID.isNotEmpty) {
_cachedUUID = storedUUID;
return storedUUID;
}
// Strategy 2: Generate new UUID and store it
final newUUID = _uuid.v4();
try {
await KeychainManager.shared.storeDeviceUUID(newUUID);
_logger.debug('Generated and stored new device UUID');
} catch (e) {
_logger.warning('Failed to store device UUID: $e');
}
_cachedUUID = newUUID;
return newUUID;
}