getIdentifier method

Future<DeviceIdentifier> getIdentifier(
  1. String? appVersion
)

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;
}