getDeviceData function
Implementation
Future<Map<String, dynamic>> getDeviceData() async {
final PackageInfo packageInfo = await PackageInfo.fromPlatform();
final DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin();
final List<ConnectivityResult> connectivityResult =
await Connectivity().checkConnectivity();
ReferrerDetails? androidInstallReferrer;
Map<String, dynamic> deviceData = {
'application_name': packageInfo.appName,
'app_version': packageInfo.version,
'build_number': packageInfo.buildNumber,
'bundle_id': packageInfo.packageName,
'connectivity': (connectivityResult.contains(ConnectivityResult.mobile))
? 'Mobile Network'
: 'Wi-Fi',
'version': packageInfo.version,
};
String? advertisingId;
try {
advertisingId = await AdvertisingId.id(true);
final bool? isLimitAdTrackingEnabled = await AdvertisingId.isLimitAdTrackingEnabled;
if (isLimitAdTrackingEnabled == true) {
advertisingId = null;
}
} catch(e) {
advertisingId = null;
}
if (Platform.isAndroid) {
AndroidDeviceInfo androidInfo = await deviceInfoPlugin.androidInfo;
deviceData.addAll({
'android_id': androidInfo.id,
'api_level': androidInfo.version.sdkInt,
'base_os': androidInfo.version.baseOS,
'build_id': androidInfo.id,
'brand': androidInfo.brand,
'device_id': androidInfo.id,
'device_type': androidInfo.type,
'device_name': androidInfo.model,
'manufacturer': androidInfo.manufacturer,
'gaid': advertisingId,
});
try {
androidInstallReferrer = await AndroidPlayInstallReferrer.installReferrer;
} catch (e) {
developer.log(
'Failed to get install referrer: ',
error: e,
name: packageName,
);
}
} else if (Platform.isIOS) {
IosDeviceInfo iosInfo = await deviceInfoPlugin.iosInfo;
deviceData.addAll({
'device_id': iosInfo.identifierForVendor,
'device_name': iosInfo.name,
'device_model': iosInfo.model,
'system_name': iosInfo.systemName,
'system_version': iosInfo.systemVersion,
'idfa': advertisingId,
'idfv': iosInfo.identifierForVendor
});
}
if (androidInstallReferrer != null) {
deviceData['install_ref_url'] = androidInstallReferrer.installReferrer;
deviceData['install_ref_hashCode'] = androidInstallReferrer.hashCode;
deviceData['install_ref_installBeginTimestampSeconds'] =
androidInstallReferrer.installBeginTimestampSeconds;
deviceData['install_ref_installBeginTimestampServerSeconds'] =
androidInstallReferrer.installBeginTimestampServerSeconds;
deviceData['install_ref_install_version'] =
androidInstallReferrer.installVersion;
deviceData['install_ref_referrerClickTimestampSeconds'] =
androidInstallReferrer.referrerClickTimestampSeconds;
deviceData['install_ref_referrerClickTimestampServerSeconds'] =
androidInstallReferrer.referrerClickTimestampServerSeconds;
}
return deviceData;
}