getDeviceInfoContext static method
Future<SelfDescribing?>
getDeviceInfoContext(
)
Implementation
static Future<SelfDescribing?> getDeviceInfoContext() async {
final deviceFCM =
await cacheInstance.getValue(cdnConfigInstance.getKeys(StorageKeyKeys.gkNotificationToken)!);
final deviceInfoJson = await cacheInstance.getValue(cdnConfigInstance.getKeys(StorageKeyKeys.gkDeviceInfo)!);
final deviceInfo = deviceInfoJson != null ? jsonDecode(deviceInfoJson) : {};
// If no device id then dont pass the deviceInfoSchema
final deviceId = deviceInfo[cdnConfigInstance.getKeys(StorageKeyKeys.gkDeviceUniqueId)];
if (deviceId == null || deviceId.toString().isEmpty) {
return null;
}
// ADD META TO THE USER DEVICE SCHEMA
final metaItems = <Map<String, dynamic>>[];
final isVersionAddedInMeta = metaItems.any((item) => item['property'] == 'sdk_version');
if (!isVersionAddedInMeta) {
metaItems.add({
'property': 'sdk_version',
'value': KPSdkVersion.version,
});
metaItems.add({
'property': 'platform',
'value': 'flutter',
});
}
final schemas = cdnConfigInstance.getSnowplowSchema();
final userDeviceSchema = (schemas is Map<String, String>)
? (schemas['user_device'] ?? 'user_device/jsonschema/1-0-0')
: 'user_device/jsonschema/1-0-0';
return _createContext(
userDeviceSchema,
{
'device_id': deviceId,
'android_ad_id':
Platform.isAndroid ? deviceInfo[cdnConfigInstance.getKeys(StorageKeyKeys.gkGoogleAdId)] : '',
'ios_ad_id': Platform.isIOS ? deviceInfo[cdnConfigInstance.getKeys(StorageKeyKeys.gkGoogleAdId)] : '',
'fcm_token': deviceFCM ?? '',
'app_domain': deviceInfo[cdnConfigInstance.getKeys(StorageKeyKeys.gkAppDomain)],
'device_type': Platform.operatingSystem.toLowerCase(),
'app_version': deviceInfo[cdnConfigInstance.getKeys(StorageKeyKeys.gkAppVersion)],
'meta': metaItems,
},
);
}