rn-linkrunner 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -6,19 +6,26 @@ React Native Package for [linkrunner.io](https://www.linkrunner.io)
6
6
 
7
7
  ### Step 1: Prerequisites
8
8
 
9
- rn-linkrunner also uses `react-native-device-info`, `@react-native-community/netinfo`, `@react-native-async-storage/async-storage` and `react-native-play-install-referrer`. You can install these packages with the following command:
9
+ rn-linkrunner also uses `react-native-device-info`, `@react-native-community/netinfo`, `@react-native-async-storage/async-storage`, `react-native-play-install-referrer` and `@sparkfabrik/react-native-idfa-aaid`. You can install these packages with the following command:
10
10
 
11
11
  ```sh
12
- npm install react-native-device-info @react-native-community/netinfo @react-native-async-storage/async-storage react-native-play-install-referrer
12
+ npm install react-native-device-info @react-native-community/netinfo @react-native-async-storage/async-storage react-native-play-install-referrer @sparkfabrik/react-native-idfa-aaid
13
13
  ```
14
14
 
15
15
  or
16
16
 
17
17
  ```sh
18
- yarn add react-native-device-info @react-native-community/netinfo @react-native-async-storage/async-storage react-native-play-install-referrer
18
+ yarn add react-native-device-info @react-native-community/netinfo @react-native-async-storage/async-storage react-native-play-install-referrer @sparkfabrik/react-native-idfa-aaid
19
19
  ```
20
20
 
21
- Then run `cd ios && pod install` to install pods for the package.
21
+ **IOS Configuration**:
22
+
23
+ - Run `cd ios && pod install` to install pods for the package.
24
+ - Add the below code in `info.plist`:
25
+ ```plist
26
+ <key>NSUserTrackingUsageDescription</key>
27
+ <string>This identifier will be used to deliver personalized ads and improve your app experience.</string>
28
+ ```
22
29
 
23
30
  ### Step 2: Installing rn-linkrunner
24
31
 
@@ -9,45 +9,75 @@ var _reactNativeDeviceInfo = _interopRequireWildcard(require("react-native-devic
9
9
  var _netinfo = require("@react-native-community/netinfo");
10
10
  var _reactNativePlayInstallReferrer = require("react-native-play-install-referrer");
11
11
  var _asyncStorage = _interopRequireDefault(require("@react-native-async-storage/async-storage"));
12
+ var _reactNative = require("react-native");
13
+ var _reactNativeIdfaAaid = _interopRequireDefault(require("@sparkfabrik/react-native-idfa-aaid"));
12
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
15
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
14
16
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
17
  const device_data = async () => {
16
18
  const getInstallReferrerInfo = () => {
17
19
  return new Promise(resolve => {
18
- _reactNativePlayInstallReferrer.PlayInstallReferrer.getInstallReferrerInfo((installReferrerInfo, error) => {
19
- if (!error && !!installReferrerInfo) {
20
- resolve(installReferrerInfo);
21
- } else {
22
- resolve({});
23
- }
24
- });
20
+ if (_reactNative.Platform.OS === 'ios') {
21
+ resolve({});
22
+ return;
23
+ }
24
+
25
+ // Add a timeout to ensure the promise resolves even if the callback never fires
26
+ const timeoutId = setTimeout(() => {
27
+ resolve({});
28
+ }, 2000);
29
+ try {
30
+ _reactNativePlayInstallReferrer.PlayInstallReferrer.getInstallReferrerInfo((installReferrerInfo, error) => {
31
+ // Clear the timeout since callback fired
32
+ clearTimeout(timeoutId);
33
+ if (!error && !!installReferrerInfo) {
34
+ resolve(installReferrerInfo);
35
+ } else {
36
+ resolve({});
37
+ }
38
+ });
39
+ } catch (e) {
40
+ // Clear the timeout since we caught an exception
41
+ clearTimeout(timeoutId);
42
+ resolve({});
43
+ }
25
44
  });
26
45
  };
46
+ const getAdvertisingIdentifier = async () => {
47
+ const identifier = await _reactNativeIdfaAaid.default.getAdvertisingInfo();
48
+ if (!identifier.isAdTrackingLimited && identifier.id) {
49
+ return identifier.id;
50
+ } else {
51
+ return null;
52
+ }
53
+ };
27
54
  const [installReferrerInfo, connectivity, manufacturer, systemVersion] = await Promise.all([getInstallReferrerInfo(), (0, _netinfo.fetch)(), (0, _reactNativeDeviceInfo.getManufacturer)(), (0, _reactNativeDeviceInfo.getSystemVersion)()]);
28
55
  return {
29
- android_id: _reactNativeDeviceInfo.default.getAndroidId(),
30
- api_level: _reactNativeDeviceInfo.default.getApiLevel(),
56
+ android_id: await _reactNativeDeviceInfo.default.getAndroidId(),
57
+ api_level: await _reactNativeDeviceInfo.default.getApiLevel(),
31
58
  application_name: _reactNativeDeviceInfo.default.getApplicationName(),
32
- base_os: _reactNativeDeviceInfo.default.getBaseOs(),
33
- build_id: _reactNativeDeviceInfo.default.getBuildId(),
59
+ base_os: await _reactNativeDeviceInfo.default.getBaseOs(),
60
+ build_id: await _reactNativeDeviceInfo.default.getBuildId(),
34
61
  brand: _reactNativeDeviceInfo.default.getBrand(),
35
62
  build_number: _reactNativeDeviceInfo.default.getBuildNumber(),
36
63
  bundle_id: _reactNativeDeviceInfo.default.getBundleId(),
37
- carrier: [_reactNativeDeviceInfo.default.getCarrier()],
38
- device: _reactNativeDeviceInfo.default.getDevice(),
39
- device_id: _reactNativeDeviceInfo.default.getDeviceId(),
40
- device_display: _reactNativeDeviceInfo.default.getDisplay(),
41
- device_type: _reactNativeDeviceInfo.default.getDeviceType(),
42
- device_name: _reactNativeDeviceInfo.default.getDeviceName(),
43
- device_token: _reactNativeDeviceInfo.default.getDeviceToken(),
44
- device_ip: _reactNativeDeviceInfo.default.getIpAddress(),
64
+ carrier: [await _reactNativeDeviceInfo.default.getCarrier()],
65
+ device: await _reactNativeDeviceInfo.default.getDevice(),
66
+ device_id: await _reactNativeDeviceInfo.default.getDeviceId(),
67
+ device_display: await _reactNativeDeviceInfo.default.getDisplay(),
68
+ device_type: await _reactNativeDeviceInfo.default.getDeviceType(),
69
+ device_name: await _reactNativeDeviceInfo.default.getDeviceName(),
70
+ device_token: await _reactNativeDeviceInfo.default.getDeviceToken(),
71
+ device_ip: await _reactNativeDeviceInfo.default.getIpAddress(),
45
72
  install_ref: await _reactNativeDeviceInfo.default.getInstallReferrer(),
46
73
  manufacturer,
47
74
  system_version: systemVersion,
48
75
  version: _reactNativeDeviceInfo.default.getVersion(),
49
76
  connectivity: connectivity.type,
50
- user_agent: _reactNativeDeviceInfo.default.getUserAgent(),
77
+ user_agent: await _reactNativeDeviceInfo.default.getUserAgent(),
78
+ gaid: _reactNative.Platform.OS === 'android' ? await getAdvertisingIdentifier() : null,
79
+ idfa: _reactNative.Platform.OS === 'ios' ? await getAdvertisingIdentifier() : null,
80
+ idfv: _reactNative.Platform.OS === 'ios' ? await _reactNativeDeviceInfo.default.getUniqueId() : null,
51
81
  ...installReferrerInfo
52
82
  };
53
83
  };
@@ -67,7 +97,7 @@ async function getLinkRunnerInstallInstanceId() {
67
97
  return installInstanceId;
68
98
  } catch (error) {
69
99
  console.error('Error accessing AsyncStorage:', error);
70
- throw error;
100
+ return 'ERROR_GENERAING_INSTALL_INSTANCE_ID';
71
101
  }
72
102
  }
73
103
  function generateRandomString(length) {
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeDeviceInfo","_interopRequireWildcard","require","_netinfo","_reactNativePlayInstallReferrer","_asyncStorage","_interopRequireDefault","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","device_data","getInstallReferrerInfo","Promise","resolve","PlayInstallReferrer","installReferrerInfo","error","connectivity","manufacturer","systemVersion","all","netinfoFetch","getManufacturer","getSystemVersion","android_id","DeviceInfo","getAndroidId","api_level","getApiLevel","application_name","getApplicationName","base_os","getBaseOs","build_id","getBuildId","brand","getBrand","build_number","getBuildNumber","bundle_id","getBundleId","carrier","getCarrier","device","getDevice","device_id","getDeviceId","device_display","getDisplay","device_type","getDeviceType","device_name","getDeviceName","device_token","getDeviceToken","device_ip","getIpAddress","install_ref","getInstallReferrer","system_version","version","getVersion","type","user_agent","getUserAgent","exports","STORAGE_KEY","ID_LENGTH","getLinkRunnerInstallInstanceId","installInstanceId","AsyncStorage","getItem","generateRandomString","setItem","console","length","chars","Array","fill","map","charAt","Math","floor","random","join"],"sourceRoot":"../../src","sources":["helper.ts"],"mappings":"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"}
1
+ {"version":3,"names":["_reactNativeDeviceInfo","_interopRequireWildcard","require","_netinfo","_reactNativePlayInstallReferrer","_asyncStorage","_interopRequireDefault","_reactNative","_reactNativeIdfaAaid","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","device_data","getInstallReferrerInfo","Promise","resolve","Platform","OS","timeoutId","setTimeout","PlayInstallReferrer","installReferrerInfo","error","clearTimeout","getAdvertisingIdentifier","identifier","ReactNativeIdfaAaid","getAdvertisingInfo","isAdTrackingLimited","id","connectivity","manufacturer","systemVersion","all","netinfoFetch","getManufacturer","getSystemVersion","android_id","DeviceInfo","getAndroidId","api_level","getApiLevel","application_name","getApplicationName","base_os","getBaseOs","build_id","getBuildId","brand","getBrand","build_number","getBuildNumber","bundle_id","getBundleId","carrier","getCarrier","device","getDevice","device_id","getDeviceId","device_display","getDisplay","device_type","getDeviceType","device_name","getDeviceName","device_token","getDeviceToken","device_ip","getIpAddress","install_ref","getInstallReferrer","system_version","version","getVersion","type","user_agent","getUserAgent","gaid","idfa","idfv","getUniqueId","exports","STORAGE_KEY","ID_LENGTH","getLinkRunnerInstallInstanceId","installInstanceId","AsyncStorage","getItem","generateRandomString","setItem","console","length","chars","Array","fill","map","charAt","Math","floor","random","join"],"sourceRoot":"../../src","sources":["helper.ts"],"mappings":"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"}
@@ -2,42 +2,72 @@ import DeviceInfo, { getManufacturer, getSystemVersion } from 'react-native-devi
2
2
  import { fetch as netinfoFetch } from '@react-native-community/netinfo';
3
3
  import { PlayInstallReferrer } from 'react-native-play-install-referrer';
4
4
  import AsyncStorage from '@react-native-async-storage/async-storage';
5
+ import { Platform } from 'react-native';
6
+ import ReactNativeIdfaAaid from '@sparkfabrik/react-native-idfa-aaid';
5
7
  const device_data = async () => {
6
8
  const getInstallReferrerInfo = () => {
7
9
  return new Promise(resolve => {
8
- PlayInstallReferrer.getInstallReferrerInfo((installReferrerInfo, error) => {
9
- if (!error && !!installReferrerInfo) {
10
- resolve(installReferrerInfo);
11
- } else {
12
- resolve({});
13
- }
14
- });
10
+ if (Platform.OS === 'ios') {
11
+ resolve({});
12
+ return;
13
+ }
14
+
15
+ // Add a timeout to ensure the promise resolves even if the callback never fires
16
+ const timeoutId = setTimeout(() => {
17
+ resolve({});
18
+ }, 2000);
19
+ try {
20
+ PlayInstallReferrer.getInstallReferrerInfo((installReferrerInfo, error) => {
21
+ // Clear the timeout since callback fired
22
+ clearTimeout(timeoutId);
23
+ if (!error && !!installReferrerInfo) {
24
+ resolve(installReferrerInfo);
25
+ } else {
26
+ resolve({});
27
+ }
28
+ });
29
+ } catch (e) {
30
+ // Clear the timeout since we caught an exception
31
+ clearTimeout(timeoutId);
32
+ resolve({});
33
+ }
15
34
  });
16
35
  };
36
+ const getAdvertisingIdentifier = async () => {
37
+ const identifier = await ReactNativeIdfaAaid.getAdvertisingInfo();
38
+ if (!identifier.isAdTrackingLimited && identifier.id) {
39
+ return identifier.id;
40
+ } else {
41
+ return null;
42
+ }
43
+ };
17
44
  const [installReferrerInfo, connectivity, manufacturer, systemVersion] = await Promise.all([getInstallReferrerInfo(), netinfoFetch(), getManufacturer(), getSystemVersion()]);
18
45
  return {
19
- android_id: DeviceInfo.getAndroidId(),
20
- api_level: DeviceInfo.getApiLevel(),
46
+ android_id: await DeviceInfo.getAndroidId(),
47
+ api_level: await DeviceInfo.getApiLevel(),
21
48
  application_name: DeviceInfo.getApplicationName(),
22
- base_os: DeviceInfo.getBaseOs(),
23
- build_id: DeviceInfo.getBuildId(),
49
+ base_os: await DeviceInfo.getBaseOs(),
50
+ build_id: await DeviceInfo.getBuildId(),
24
51
  brand: DeviceInfo.getBrand(),
25
52
  build_number: DeviceInfo.getBuildNumber(),
26
53
  bundle_id: DeviceInfo.getBundleId(),
27
- carrier: [DeviceInfo.getCarrier()],
28
- device: DeviceInfo.getDevice(),
29
- device_id: DeviceInfo.getDeviceId(),
30
- device_display: DeviceInfo.getDisplay(),
31
- device_type: DeviceInfo.getDeviceType(),
32
- device_name: DeviceInfo.getDeviceName(),
33
- device_token: DeviceInfo.getDeviceToken(),
34
- device_ip: DeviceInfo.getIpAddress(),
54
+ carrier: [await DeviceInfo.getCarrier()],
55
+ device: await DeviceInfo.getDevice(),
56
+ device_id: await DeviceInfo.getDeviceId(),
57
+ device_display: await DeviceInfo.getDisplay(),
58
+ device_type: await DeviceInfo.getDeviceType(),
59
+ device_name: await DeviceInfo.getDeviceName(),
60
+ device_token: await DeviceInfo.getDeviceToken(),
61
+ device_ip: await DeviceInfo.getIpAddress(),
35
62
  install_ref: await DeviceInfo.getInstallReferrer(),
36
63
  manufacturer,
37
64
  system_version: systemVersion,
38
65
  version: DeviceInfo.getVersion(),
39
66
  connectivity: connectivity.type,
40
- user_agent: DeviceInfo.getUserAgent(),
67
+ user_agent: await DeviceInfo.getUserAgent(),
68
+ gaid: Platform.OS === 'android' ? await getAdvertisingIdentifier() : null,
69
+ idfa: Platform.OS === 'ios' ? await getAdvertisingIdentifier() : null,
70
+ idfv: Platform.OS === 'ios' ? await DeviceInfo.getUniqueId() : null,
41
71
  ...installReferrerInfo
42
72
  };
43
73
  };
@@ -56,7 +86,7 @@ async function getLinkRunnerInstallInstanceId() {
56
86
  return installInstanceId;
57
87
  } catch (error) {
58
88
  console.error('Error accessing AsyncStorage:', error);
59
- throw error;
89
+ return 'ERROR_GENERAING_INSTALL_INSTANCE_ID';
60
90
  }
61
91
  }
62
92
  function generateRandomString(length) {
@@ -1 +1 @@
1
- {"version":3,"names":["DeviceInfo","getManufacturer","getSystemVersion","fetch","netinfoFetch","PlayInstallReferrer","AsyncStorage","device_data","getInstallReferrerInfo","Promise","resolve","installReferrerInfo","error","connectivity","manufacturer","systemVersion","all","android_id","getAndroidId","api_level","getApiLevel","application_name","getApplicationName","base_os","getBaseOs","build_id","getBuildId","brand","getBrand","build_number","getBuildNumber","bundle_id","getBundleId","carrier","getCarrier","device","getDevice","device_id","getDeviceId","device_display","getDisplay","device_type","getDeviceType","device_name","getDeviceName","device_token","getDeviceToken","device_ip","getIpAddress","install_ref","getInstallReferrer","system_version","version","getVersion","type","user_agent","getUserAgent","STORAGE_KEY","ID_LENGTH","getLinkRunnerInstallInstanceId","installInstanceId","getItem","generateRandomString","setItem","console","length","chars","Array","fill","map","charAt","Math","floor","random","join"],"sourceRoot":"../../src","sources":["helper.ts"],"mappings":"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"}
1
+ {"version":3,"names":["DeviceInfo","getManufacturer","getSystemVersion","fetch","netinfoFetch","PlayInstallReferrer","AsyncStorage","Platform","ReactNativeIdfaAaid","device_data","getInstallReferrerInfo","Promise","resolve","OS","timeoutId","setTimeout","installReferrerInfo","error","clearTimeout","e","getAdvertisingIdentifier","identifier","getAdvertisingInfo","isAdTrackingLimited","id","connectivity","manufacturer","systemVersion","all","android_id","getAndroidId","api_level","getApiLevel","application_name","getApplicationName","base_os","getBaseOs","build_id","getBuildId","brand","getBrand","build_number","getBuildNumber","bundle_id","getBundleId","carrier","getCarrier","device","getDevice","device_id","getDeviceId","device_display","getDisplay","device_type","getDeviceType","device_name","getDeviceName","device_token","getDeviceToken","device_ip","getIpAddress","install_ref","getInstallReferrer","system_version","version","getVersion","type","user_agent","getUserAgent","gaid","idfa","idfv","getUniqueId","STORAGE_KEY","ID_LENGTH","getLinkRunnerInstallInstanceId","installInstanceId","getItem","generateRandomString","setItem","console","length","chars","Array","fill","map","charAt","Math","floor","random","join"],"sourceRoot":"../../src","sources":["helper.ts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../src/helper.ts"],"names":[],"mappings":"AAWA,QAAA,MAAM,WAAW,QAAa,QAAQ,OAAO,MAAM,EAAE,GAAG,CAAC,CAgDxD,CAAC;AAKF,iBAAe,8BAA8B,IAAI,OAAO,CAAC,MAAM,CAAC,CAgB/D;AAWD,OAAO,EAAE,WAAW,EAAE,8BAA8B,EAAE,CAAC"}
1
+ {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../src/helper.ts"],"names":[],"mappings":"AAaA,QAAA,MAAM,WAAW,QAAa,QAAQ,OAAO,MAAM,EAAE,GAAG,CAAC,CA+ExD,CAAC;AAKF,iBAAe,8BAA8B,IAAI,OAAO,CAAC,MAAM,CAAC,CAgB/D;AAWD,OAAO,EAAE,WAAW,EAAE,8BAA8B,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rn-linkrunner",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "React Native Package for linkrunner",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -140,6 +140,7 @@
140
140
  "dependencies": {
141
141
  "@react-native-async-storage/async-storage": "^2.0.0",
142
142
  "@react-native-community/netinfo": "^11.3.2",
143
+ "@sparkfabrik/react-native-idfa-aaid": "^1.2.0",
143
144
  "react-native-device-info": "^10.12.0",
144
145
  "react-native-play-install-referrer": "^1.1.8"
145
146
  }
package/src/helper.ts CHANGED
@@ -8,22 +8,52 @@ import {
8
8
  type PlayInstallReferrerInfo,
9
9
  } from 'react-native-play-install-referrer';
10
10
  import AsyncStorage from '@react-native-async-storage/async-storage';
11
+ import { Platform } from 'react-native';
12
+ import ReactNativeIdfaAaid from '@sparkfabrik/react-native-idfa-aaid';
11
13
 
12
14
  const device_data = async (): Promise<Record<string, any>> => {
13
15
  const getInstallReferrerInfo = (): Promise<PlayInstallReferrerInfo | {}> => {
14
16
  return new Promise((resolve) => {
15
- PlayInstallReferrer.getInstallReferrerInfo(
16
- (installReferrerInfo, error) => {
17
- if (!error && !!installReferrerInfo) {
18
- resolve(installReferrerInfo);
19
- } else {
20
- resolve({});
17
+ if (Platform.OS === 'ios') {
18
+ resolve({});
19
+ return;
20
+ }
21
+
22
+ // Add a timeout to ensure the promise resolves even if the callback never fires
23
+ const timeoutId = setTimeout(() => {
24
+ resolve({});
25
+ }, 2000);
26
+
27
+ try {
28
+ PlayInstallReferrer.getInstallReferrerInfo(
29
+ (installReferrerInfo, error) => {
30
+ // Clear the timeout since callback fired
31
+ clearTimeout(timeoutId);
32
+
33
+ if (!error && !!installReferrerInfo) {
34
+ resolve(installReferrerInfo);
35
+ } else {
36
+ resolve({});
37
+ }
21
38
  }
22
- }
23
- );
39
+ );
40
+ } catch (e) {
41
+ // Clear the timeout since we caught an exception
42
+ clearTimeout(timeoutId);
43
+ resolve({});
44
+ }
24
45
  });
25
46
  };
26
47
 
48
+ const getAdvertisingIdentifier = async () => {
49
+ const identifier = await ReactNativeIdfaAaid.getAdvertisingInfo();
50
+ if (!identifier.isAdTrackingLimited && identifier.id) {
51
+ return identifier.id;
52
+ } else {
53
+ return null;
54
+ }
55
+ };
56
+
27
57
  const [installReferrerInfo, connectivity, manufacturer, systemVersion] =
28
58
  await Promise.all([
29
59
  getInstallReferrerInfo(),
@@ -33,28 +63,31 @@ const device_data = async (): Promise<Record<string, any>> => {
33
63
  ]);
34
64
 
35
65
  return {
36
- android_id: DeviceInfo.getAndroidId(),
37
- api_level: DeviceInfo.getApiLevel(),
66
+ android_id: await DeviceInfo.getAndroidId(),
67
+ api_level: await DeviceInfo.getApiLevel(),
38
68
  application_name: DeviceInfo.getApplicationName(),
39
- base_os: DeviceInfo.getBaseOs(),
40
- build_id: DeviceInfo.getBuildId(),
69
+ base_os: await DeviceInfo.getBaseOs(),
70
+ build_id: await DeviceInfo.getBuildId(),
41
71
  brand: DeviceInfo.getBrand(),
42
72
  build_number: DeviceInfo.getBuildNumber(),
43
73
  bundle_id: DeviceInfo.getBundleId(),
44
- carrier: [DeviceInfo.getCarrier()],
45
- device: DeviceInfo.getDevice(),
46
- device_id: DeviceInfo.getDeviceId(),
47
- device_display: DeviceInfo.getDisplay(),
48
- device_type: DeviceInfo.getDeviceType(),
49
- device_name: DeviceInfo.getDeviceName(),
50
- device_token: DeviceInfo.getDeviceToken(),
51
- device_ip: DeviceInfo.getIpAddress(),
74
+ carrier: [await DeviceInfo.getCarrier()],
75
+ device: await DeviceInfo.getDevice(),
76
+ device_id: await DeviceInfo.getDeviceId(),
77
+ device_display: await DeviceInfo.getDisplay(),
78
+ device_type: await DeviceInfo.getDeviceType(),
79
+ device_name: await DeviceInfo.getDeviceName(),
80
+ device_token: await DeviceInfo.getDeviceToken(),
81
+ device_ip: await DeviceInfo.getIpAddress(),
52
82
  install_ref: await DeviceInfo.getInstallReferrer(),
53
83
  manufacturer,
54
84
  system_version: systemVersion,
55
85
  version: DeviceInfo.getVersion(),
56
86
  connectivity: connectivity.type,
57
- user_agent: DeviceInfo.getUserAgent(),
87
+ user_agent: await DeviceInfo.getUserAgent(),
88
+ gaid: Platform.OS === 'android' ? await getAdvertisingIdentifier() : null,
89
+ idfa: Platform.OS === 'ios' ? await getAdvertisingIdentifier() : null,
90
+ idfv: Platform.OS === 'ios' ? await DeviceInfo.getUniqueId() : null,
58
91
  ...installReferrerInfo,
59
92
  };
60
93
  };
@@ -76,7 +109,7 @@ async function getLinkRunnerInstallInstanceId(): Promise<string> {
76
109
  return installInstanceId;
77
110
  } catch (error) {
78
111
  console.error('Error accessing AsyncStorage:', error);
79
- throw error;
112
+ return 'ERROR_GENERAING_INSTALL_INSTANCE_ID';
80
113
  }
81
114
  }
82
115