getIdentifier method
Collects device information and returns a populated DeviceIdentifier.
Pass the optional appVersion string to embed in the identifier.
Implementation
Future<DeviceIdentifier> getIdentifier(String? appVersion) async {
appVersion ??= '';
final deviceInfo = await deviceInfoPlugin.deviceInfo;
final allInfo = deviceInfo.data;
String emu = '';
DeviceIdentifier deviceIdentifier = DeviceIdentifier(
name: '',
os: '',
uuid: '',
osVersion: '',
appVersion: '',
deviceToken: '',
firebaseToken: '',
active: true,
id: null,
lastLogin: null,
created: null,
updated: null,
ip: '',
);
if (Platform.isAndroid) {
if (!allInfo['isPhysicalDevice']) {
emu = 'EMULATOR';
}
deviceIdentifier.name =
'${allInfo['brand']} ${allInfo['model']} $emu ${allInfo['device']} ${allInfo['manufacturer']}';
deviceIdentifier.os =
'Android ${allInfo['version.release']} ${allInfo['version.sdkInt']}';
deviceIdentifier.osVersion = allInfo['version.release'];
deviceIdentifier.appVersion = appVersion;
deviceIdentifier.deviceToken = '';
deviceIdentifier.firebaseToken = '';
} else if (Platform.isIOS) {
if (!allInfo['isPhysicalDevice']) {
emu = 'EMULATOR';
}
deviceIdentifier.name = '${allInfo['name']} ${allInfo['model']} $emu ';
deviceIdentifier.os =
'${allInfo['systemName']} ${allInfo['systemVersion']}';
deviceIdentifier.osVersion = allInfo['systemVersion'];
deviceIdentifier.appVersion = appVersion;
deviceIdentifier.deviceToken = allInfo['identifierForVendor'];
deviceIdentifier.firebaseToken = '';
} else if (Platform.isWindows) {
deviceIdentifier.name =
'${allInfo['productName']} ${allInfo['displayVersion']} $emu ';
deviceIdentifier.os = '${allInfo['productName']}';
deviceIdentifier.osVersion = allInfo['displayVersion'];
deviceIdentifier.appVersion = appVersion;
deviceIdentifier.deviceToken = allInfo['deviceId'];
deviceIdentifier.firebaseToken = '';
} else if (Platform.isLinux) {
deviceIdentifier.name = '${allInfo['prettyName']}';
deviceIdentifier.os = '${allInfo['id']}';
deviceIdentifier.osVersion = allInfo['version'];
deviceIdentifier.appVersion = appVersion;
deviceIdentifier.deviceToken = allInfo['machineId'];
deviceIdentifier.firebaseToken = '';
} else if (Platform.isMacOS) {
deviceIdentifier.name =
'${allInfo['computerName']} ${allInfo['model']} ${allInfo['osRelease']} $emu ';
deviceIdentifier.os =
'macOS ${allInfo['osRelease']} ${allInfo['osVersion']}';
deviceIdentifier.osVersion = allInfo['osRelease'];
deviceIdentifier.appVersion = appVersion;
deviceIdentifier.deviceToken = allInfo['systemGUID'];
deviceIdentifier.firebaseToken = '';
} else {
// is browser
deviceIdentifier.name =
'${allInfo['appName']} ${allInfo['appVersion']} $emu ';
deviceIdentifier.os = '${allInfo['platform']} ${allInfo['appVersion']}';
deviceIdentifier.osVersion = allInfo['userAgent'];
deviceIdentifier.appVersion = appVersion;
deviceIdentifier.deviceToken = '';
deviceIdentifier.firebaseToken = '';
}
return deviceIdentifier;
}