getDeviceInformation method

Future<Map<String, String>> getDeviceInformation()

Implementation

Future<Map<String, String>> getDeviceInformation() async {
  DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
  String deviceId = "";
  String osVersion = "";
  String deviceType = "PC";
  String deviceModel = "";
  if (kIsWeb) {
    WebBrowserInfo info = await deviceInfo.webBrowserInfo;
    deviceId = _getRandomId().toString();
    osVersion = "${info.platform} ${_getRandomId()}";
    deviceType = "PC";
    deviceModel = info.browserName.toString();
  }
  if (!kIsWeb && Platform.isAndroid) {
    AndroidDeviceInfo info = await deviceInfo.androidInfo;
    deviceId = info.id;
    osVersion = info.version.release;
    deviceModel = info.model;
  } else if (!kIsWeb && Platform.isIOS) {
    IosDeviceInfo info = await deviceInfo.iosInfo;
    deviceId = info.identifierForVendor ?? _getRandomId().toString();
    osVersion = info.systemName ?? "UNKNOWN";
    deviceModel = info.model ?? "UNKNOWN";
  } else {
    deviceId = _getRandomId().toString();
    osVersion = _getRandomId().toString();
    deviceModel = _getRandomId().toString();
  }

  bool isWebApple = (defaultTargetPlatform == TargetPlatform.macOS ||
      defaultTargetPlatform == TargetPlatform.iOS);
  String deviceOS = (!kIsWeb && Platform.isAndroid)
      ? "ANDROID"
      : (!kIsWeb && Platform.isIOS)
          ? "IOS"
          : (!kIsWeb && Platform.isWindows)
              ? "WINDOWS"
              : (!kIsWeb && isWebApple)
                  ? "MAC"
                  : (kIsWeb && isWebApple)
                      ? "MACOS"
                      : "WEBOS";
  DeviceInfo.deviceid = deviceId;
  DeviceInfo.devicetype = deviceType;
  DeviceInfo.deviceos = deviceOS;
  DeviceInfo.osversion = osVersion;

  DeviceInfo.devicemodel = deviceModel;
  Map<String, String> params = {
    'deviceid': DeviceInfo.deviceid,
    "devicetype": deviceType,
    "providerid": providerid,
    "deviceos": deviceOS,
    "appversion": appversion,
    "osversion": osVersion,
    "timestamp": DateTime.now().millisecondsSinceEpoch.toString(),
  };

  return params;
}