rn-linkrunner 1.1.1 → 1.1.2
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/lib/commonjs/helper.js +80 -58
- package/lib/commonjs/helper.js.map +1 -1
- package/lib/module/helper.js +80 -58
- package/lib/module/helper.js.map +1 -1
- package/lib/typescript/helper.d.ts +1 -1
- package/lib/typescript/helper.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/helper.ts +100 -71
package/lib/commonjs/helper.js
CHANGED
|
@@ -16,72 +16,94 @@ var _reactNativeIdfaAaid = _interopRequireDefault(require("@sparkfabrik/react-na
|
|
|
16
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
17
|
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); }
|
|
18
18
|
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; }
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
19
|
+
const getInstallReferrerInfo = () => {
|
|
20
|
+
return new Promise(resolve => {
|
|
21
|
+
if (_reactNative.Platform.OS === 'ios') {
|
|
22
|
+
resolve({});
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
26
25
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
clearTimeout(timeoutId);
|
|
35
|
-
if (!error && !!installReferrerInfo) {
|
|
36
|
-
resolve(installReferrerInfo);
|
|
37
|
-
} else {
|
|
38
|
-
resolve({});
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
} catch (e) {
|
|
42
|
-
// Clear the timeout since we caught an exception
|
|
26
|
+
// Add a timeout to ensure the promise resolves even if the callback never fires
|
|
27
|
+
const timeoutId = setTimeout(() => {
|
|
28
|
+
resolve({});
|
|
29
|
+
}, 2000);
|
|
30
|
+
try {
|
|
31
|
+
_reactNativePlayInstallReferrer.PlayInstallReferrer.getInstallReferrerInfo((installReferrerInfo, error) => {
|
|
32
|
+
// Clear the timeout since callback fired
|
|
43
33
|
clearTimeout(timeoutId);
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
34
|
+
if (!error && !!installReferrerInfo) {
|
|
35
|
+
resolve(installReferrerInfo);
|
|
36
|
+
} else {
|
|
37
|
+
resolve({});
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
} catch (e) {
|
|
41
|
+
// Clear the timeout since we caught an exception
|
|
42
|
+
clearTimeout(timeoutId);
|
|
43
|
+
resolve({});
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
const getAdvertisingIdentifier = async () => {
|
|
48
|
+
try {
|
|
49
49
|
const identifier = await _reactNativeIdfaAaid.default.getAdvertisingInfo();
|
|
50
50
|
if (!identifier.isAdTrackingLimited && identifier.id) {
|
|
51
51
|
return identifier.id;
|
|
52
52
|
} else {
|
|
53
53
|
return null;
|
|
54
54
|
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
55
|
+
} catch (error) {
|
|
56
|
+
console.error('Error getting advertising identifier:', error);
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
const device_data = async () => {
|
|
61
|
+
try {
|
|
62
|
+
const [installReferrerInfo, connectivity, manufacturer, systemVersion] = await Promise.all([getInstallReferrerInfo(), (0, _netinfo.fetch)(), (0, _reactNativeDeviceInfo.getManufacturer)(), (0, _reactNativeDeviceInfo.getSystemVersion)()]);
|
|
63
|
+
|
|
64
|
+
// Helper function to safely get device info with fallback
|
|
65
|
+
const safeGet = async (getter, fallback = null) => {
|
|
66
|
+
try {
|
|
67
|
+
return await getter();
|
|
68
|
+
} catch (error) {
|
|
69
|
+
console.warn(`DeviceInfo error: ${error}`);
|
|
70
|
+
return fallback;
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
return {
|
|
74
|
+
android_id: await safeGet(_reactNativeDeviceInfo.default.getAndroidId),
|
|
75
|
+
api_level: await safeGet(_reactNativeDeviceInfo.default.getApiLevel),
|
|
76
|
+
application_name: await safeGet(_reactNativeDeviceInfo.default.getApplicationName),
|
|
77
|
+
base_os: await safeGet(_reactNativeDeviceInfo.default.getBaseOs),
|
|
78
|
+
build_id: await safeGet(_reactNativeDeviceInfo.default.getBuildId),
|
|
79
|
+
brand: await safeGet(_reactNativeDeviceInfo.default.getBrand),
|
|
80
|
+
build_number: await safeGet(_reactNativeDeviceInfo.default.getBuildNumber),
|
|
81
|
+
bundle_id: await safeGet(_reactNativeDeviceInfo.default.getBundleId),
|
|
82
|
+
carrier: [await safeGet(_reactNativeDeviceInfo.default.getCarrier)],
|
|
83
|
+
device: await safeGet(_reactNativeDeviceInfo.default.getDevice),
|
|
84
|
+
device_id: await safeGet(_reactNativeDeviceInfo.default.getDeviceId),
|
|
85
|
+
device_display: await safeGet(_reactNativeDeviceInfo.default.getDisplay),
|
|
86
|
+
device_type: await safeGet(_reactNativeDeviceInfo.default.getDeviceType),
|
|
87
|
+
device_name: await safeGet(_reactNativeDeviceInfo.default.getDeviceName),
|
|
88
|
+
device_token: await safeGet(_reactNativeDeviceInfo.default.getDeviceToken),
|
|
89
|
+
device_ip: await safeGet(_reactNativeDeviceInfo.default.getIpAddress),
|
|
90
|
+
install_ref: await safeGet(_reactNativeDeviceInfo.default.getInstallReferrer),
|
|
91
|
+
manufacturer,
|
|
92
|
+
system_version: systemVersion,
|
|
93
|
+
version: await safeGet(_reactNativeDeviceInfo.default.getVersion),
|
|
94
|
+
connectivity: connectivity.type,
|
|
95
|
+
user_agent: await safeGet(_reactNativeDeviceInfo.default.getUserAgent),
|
|
96
|
+
gaid: _reactNative.Platform.OS === 'android' ? await getAdvertisingIdentifier() : null,
|
|
97
|
+
idfa: _reactNative.Platform.OS === 'ios' ? await getAdvertisingIdentifier() : null,
|
|
98
|
+
idfv: _reactNative.Platform.OS === 'ios' ? await safeGet(_reactNativeDeviceInfo.default.getUniqueId) : null,
|
|
99
|
+
...installReferrerInfo
|
|
100
|
+
};
|
|
101
|
+
} catch (error) {
|
|
102
|
+
console.error('Error collecting device data:', error);
|
|
103
|
+
return {
|
|
104
|
+
error: 'Failed to collect device data'
|
|
105
|
+
};
|
|
106
|
+
}
|
|
85
107
|
};
|
|
86
108
|
exports.device_data = device_data;
|
|
87
109
|
const STORAGE_KEY = 'linkrunner_install_instance_id';
|
|
@@ -1 +1 @@
|
|
|
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","
|
|
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","getInstallReferrerInfo","Promise","resolve","Platform","OS","timeoutId","setTimeout","PlayInstallReferrer","installReferrerInfo","error","clearTimeout","getAdvertisingIdentifier","identifier","ReactNativeIdfaAaid","getAdvertisingInfo","isAdTrackingLimited","id","console","device_data","connectivity","manufacturer","systemVersion","all","netinfoFetch","getManufacturer","getSystemVersion","safeGet","getter","fallback","warn","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","length","chars","Array","fill","map","charAt","Math","floor","random","join","DEEPLINK_URL_STORAGE_KEY","setDeeplinkURL","deeplink_url","getDeeplinkURL"],"sourceRoot":"../../src","sources":["helper.ts"],"mappings":"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"}
|
package/lib/module/helper.js
CHANGED
|
@@ -4,72 +4,94 @@ import { PlayInstallReferrer } from 'react-native-play-install-referrer';
|
|
|
4
4
|
import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
5
5
|
import { Platform } from 'react-native';
|
|
6
6
|
import ReactNativeIdfaAaid from '@sparkfabrik/react-native-idfa-aaid';
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
7
|
+
const getInstallReferrerInfo = () => {
|
|
8
|
+
return new Promise(resolve => {
|
|
9
|
+
if (Platform.OS === 'ios') {
|
|
10
|
+
resolve({});
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
14
13
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
|
14
|
+
// Add a timeout to ensure the promise resolves even if the callback never fires
|
|
15
|
+
const timeoutId = setTimeout(() => {
|
|
16
|
+
resolve({});
|
|
17
|
+
}, 2000);
|
|
18
|
+
try {
|
|
19
|
+
PlayInstallReferrer.getInstallReferrerInfo((installReferrerInfo, error) => {
|
|
20
|
+
// Clear the timeout since callback fired
|
|
31
21
|
clearTimeout(timeoutId);
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
22
|
+
if (!error && !!installReferrerInfo) {
|
|
23
|
+
resolve(installReferrerInfo);
|
|
24
|
+
} else {
|
|
25
|
+
resolve({});
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
} catch (e) {
|
|
29
|
+
// Clear the timeout since we caught an exception
|
|
30
|
+
clearTimeout(timeoutId);
|
|
31
|
+
resolve({});
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
const getAdvertisingIdentifier = async () => {
|
|
36
|
+
try {
|
|
37
37
|
const identifier = await ReactNativeIdfaAaid.getAdvertisingInfo();
|
|
38
38
|
if (!identifier.isAdTrackingLimited && identifier.id) {
|
|
39
39
|
return identifier.id;
|
|
40
40
|
} else {
|
|
41
41
|
return null;
|
|
42
42
|
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
43
|
+
} catch (error) {
|
|
44
|
+
console.error('Error getting advertising identifier:', error);
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
const device_data = async () => {
|
|
49
|
+
try {
|
|
50
|
+
const [installReferrerInfo, connectivity, manufacturer, systemVersion] = await Promise.all([getInstallReferrerInfo(), netinfoFetch(), getManufacturer(), getSystemVersion()]);
|
|
51
|
+
|
|
52
|
+
// Helper function to safely get device info with fallback
|
|
53
|
+
const safeGet = async (getter, fallback = null) => {
|
|
54
|
+
try {
|
|
55
|
+
return await getter();
|
|
56
|
+
} catch (error) {
|
|
57
|
+
console.warn(`DeviceInfo error: ${error}`);
|
|
58
|
+
return fallback;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
return {
|
|
62
|
+
android_id: await safeGet(DeviceInfo.getAndroidId),
|
|
63
|
+
api_level: await safeGet(DeviceInfo.getApiLevel),
|
|
64
|
+
application_name: await safeGet(DeviceInfo.getApplicationName),
|
|
65
|
+
base_os: await safeGet(DeviceInfo.getBaseOs),
|
|
66
|
+
build_id: await safeGet(DeviceInfo.getBuildId),
|
|
67
|
+
brand: await safeGet(DeviceInfo.getBrand),
|
|
68
|
+
build_number: await safeGet(DeviceInfo.getBuildNumber),
|
|
69
|
+
bundle_id: await safeGet(DeviceInfo.getBundleId),
|
|
70
|
+
carrier: [await safeGet(DeviceInfo.getCarrier)],
|
|
71
|
+
device: await safeGet(DeviceInfo.getDevice),
|
|
72
|
+
device_id: await safeGet(DeviceInfo.getDeviceId),
|
|
73
|
+
device_display: await safeGet(DeviceInfo.getDisplay),
|
|
74
|
+
device_type: await safeGet(DeviceInfo.getDeviceType),
|
|
75
|
+
device_name: await safeGet(DeviceInfo.getDeviceName),
|
|
76
|
+
device_token: await safeGet(DeviceInfo.getDeviceToken),
|
|
77
|
+
device_ip: await safeGet(DeviceInfo.getIpAddress),
|
|
78
|
+
install_ref: await safeGet(DeviceInfo.getInstallReferrer),
|
|
79
|
+
manufacturer,
|
|
80
|
+
system_version: systemVersion,
|
|
81
|
+
version: await safeGet(DeviceInfo.getVersion),
|
|
82
|
+
connectivity: connectivity.type,
|
|
83
|
+
user_agent: await safeGet(DeviceInfo.getUserAgent),
|
|
84
|
+
gaid: Platform.OS === 'android' ? await getAdvertisingIdentifier() : null,
|
|
85
|
+
idfa: Platform.OS === 'ios' ? await getAdvertisingIdentifier() : null,
|
|
86
|
+
idfv: Platform.OS === 'ios' ? await safeGet(DeviceInfo.getUniqueId) : null,
|
|
87
|
+
...installReferrerInfo
|
|
88
|
+
};
|
|
89
|
+
} catch (error) {
|
|
90
|
+
console.error('Error collecting device data:', error);
|
|
91
|
+
return {
|
|
92
|
+
error: 'Failed to collect device data'
|
|
93
|
+
};
|
|
94
|
+
}
|
|
73
95
|
};
|
|
74
96
|
const STORAGE_KEY = 'linkrunner_install_instance_id';
|
|
75
97
|
const ID_LENGTH = 20;
|
package/lib/module/helper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DeviceInfo","getManufacturer","getSystemVersion","fetch","netinfoFetch","PlayInstallReferrer","AsyncStorage","Platform","ReactNativeIdfaAaid","
|
|
1
|
+
{"version":3,"names":["DeviceInfo","getManufacturer","getSystemVersion","fetch","netinfoFetch","PlayInstallReferrer","AsyncStorage","Platform","ReactNativeIdfaAaid","getInstallReferrerInfo","Promise","resolve","OS","timeoutId","setTimeout","installReferrerInfo","error","clearTimeout","e","getAdvertisingIdentifier","identifier","getAdvertisingInfo","isAdTrackingLimited","id","console","device_data","connectivity","manufacturer","systemVersion","all","safeGet","getter","fallback","warn","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","length","chars","Array","fill","map","charAt","Math","floor","random","join","DEEPLINK_URL_STORAGE_KEY","setDeeplinkURL","deeplink_url","getDeeplinkURL"],"sourceRoot":"../../src","sources":["helper.ts"],"mappings":"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"}
|
|
@@ -2,5 +2,5 @@ declare const device_data: () => Promise<Record<string, any>>;
|
|
|
2
2
|
declare function getLinkRunnerInstallInstanceId(): Promise<string>;
|
|
3
3
|
declare function setDeeplinkURL(deeplink_url: string): Promise<void>;
|
|
4
4
|
declare function getDeeplinkURL(): Promise<string | null>;
|
|
5
|
-
export { device_data, getLinkRunnerInstallInstanceId, setDeeplinkURL, getDeeplinkURL };
|
|
5
|
+
export { device_data, getLinkRunnerInstallInstanceId, setDeeplinkURL, getDeeplinkURL, };
|
|
6
6
|
//# sourceMappingURL=helper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../src/helper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../src/helper.ts"],"names":[],"mappings":"AA4DA,QAAA,MAAM,WAAW,QAAa,QAAQ,OAAO,MAAM,EAAE,GAAG,CAAC,CAwDxD,CAAC;AAKF,iBAAe,8BAA8B,IAAI,OAAO,CAAC,MAAM,CAAC,CAgB/D;AAaD,iBAAe,cAAc,CAAC,YAAY,EAAE,MAAM,iBAMjD;AAED,iBAAe,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOtD;AAED,OAAO,EACL,WAAW,EACX,8BAA8B,EAC9B,cAAc,EACd,cAAc,GACf,CAAC"}
|
package/package.json
CHANGED
package/src/helper.ts
CHANGED
|
@@ -11,85 +11,109 @@ import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
|
11
11
|
import { Platform } from 'react-native';
|
|
12
12
|
import ReactNativeIdfaAaid from '@sparkfabrik/react-native-idfa-aaid';
|
|
13
13
|
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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);
|
|
14
|
+
const getInstallReferrerInfo = (): Promise<PlayInstallReferrerInfo | {}> => {
|
|
15
|
+
return new Promise((resolve) => {
|
|
16
|
+
if (Platform.OS === 'ios') {
|
|
17
|
+
resolve({});
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
26
20
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
21
|
+
// Add a timeout to ensure the promise resolves even if the callback never fires
|
|
22
|
+
const timeoutId = setTimeout(() => {
|
|
23
|
+
resolve({});
|
|
24
|
+
}, 2000);
|
|
25
|
+
|
|
26
|
+
try {
|
|
27
|
+
PlayInstallReferrer.getInstallReferrerInfo(
|
|
28
|
+
(installReferrerInfo, error) => {
|
|
29
|
+
// Clear the timeout since callback fired
|
|
30
|
+
clearTimeout(timeoutId);
|
|
31
|
+
|
|
32
|
+
if (!error && !!installReferrerInfo) {
|
|
33
|
+
resolve(installReferrerInfo);
|
|
34
|
+
} else {
|
|
35
|
+
resolve({});
|
|
38
36
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
};
|
|
37
|
+
}
|
|
38
|
+
);
|
|
39
|
+
} catch (e) {
|
|
40
|
+
// Clear the timeout since we caught an exception
|
|
41
|
+
clearTimeout(timeoutId);
|
|
42
|
+
resolve({});
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
};
|
|
47
46
|
|
|
48
|
-
|
|
47
|
+
const getAdvertisingIdentifier = async (): Promise<string | null> => {
|
|
48
|
+
try {
|
|
49
49
|
const identifier = await ReactNativeIdfaAaid.getAdvertisingInfo();
|
|
50
50
|
if (!identifier.isAdTrackingLimited && identifier.id) {
|
|
51
51
|
return identifier.id;
|
|
52
52
|
} else {
|
|
53
53
|
return null;
|
|
54
54
|
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
]
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
55
|
+
} catch (error) {
|
|
56
|
+
console.error('Error getting advertising identifier:', error);
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
const device_data = async (): Promise<Record<string, any>> => {
|
|
62
|
+
try {
|
|
63
|
+
const [installReferrerInfo, connectivity, manufacturer, systemVersion] =
|
|
64
|
+
await Promise.all([
|
|
65
|
+
getInstallReferrerInfo(),
|
|
66
|
+
netinfoFetch(),
|
|
67
|
+
getManufacturer(),
|
|
68
|
+
getSystemVersion(),
|
|
69
|
+
]);
|
|
70
|
+
|
|
71
|
+
// Helper function to safely get device info with fallback
|
|
72
|
+
const safeGet = async <T>(
|
|
73
|
+
getter: () => Promise<T> | T,
|
|
74
|
+
fallback: T = null as unknown as T
|
|
75
|
+
): Promise<T> => {
|
|
76
|
+
try {
|
|
77
|
+
return await getter();
|
|
78
|
+
} catch (error) {
|
|
79
|
+
console.warn(`DeviceInfo error: ${error}`);
|
|
80
|
+
return fallback;
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
return {
|
|
85
|
+
android_id: await safeGet(DeviceInfo.getAndroidId),
|
|
86
|
+
api_level: await safeGet(DeviceInfo.getApiLevel),
|
|
87
|
+
application_name: await safeGet(DeviceInfo.getApplicationName),
|
|
88
|
+
base_os: await safeGet(DeviceInfo.getBaseOs),
|
|
89
|
+
build_id: await safeGet(DeviceInfo.getBuildId),
|
|
90
|
+
brand: await safeGet(DeviceInfo.getBrand),
|
|
91
|
+
build_number: await safeGet(DeviceInfo.getBuildNumber),
|
|
92
|
+
bundle_id: await safeGet(DeviceInfo.getBundleId),
|
|
93
|
+
carrier: [await safeGet(DeviceInfo.getCarrier)],
|
|
94
|
+
device: await safeGet(DeviceInfo.getDevice),
|
|
95
|
+
device_id: await safeGet(DeviceInfo.getDeviceId),
|
|
96
|
+
device_display: await safeGet(DeviceInfo.getDisplay),
|
|
97
|
+
device_type: await safeGet(DeviceInfo.getDeviceType),
|
|
98
|
+
device_name: await safeGet(DeviceInfo.getDeviceName),
|
|
99
|
+
device_token: await safeGet(DeviceInfo.getDeviceToken),
|
|
100
|
+
device_ip: await safeGet(DeviceInfo.getIpAddress),
|
|
101
|
+
install_ref: await safeGet(DeviceInfo.getInstallReferrer),
|
|
102
|
+
manufacturer,
|
|
103
|
+
system_version: systemVersion,
|
|
104
|
+
version: await safeGet(DeviceInfo.getVersion),
|
|
105
|
+
connectivity: connectivity.type,
|
|
106
|
+
user_agent: await safeGet(DeviceInfo.getUserAgent),
|
|
107
|
+
gaid: Platform.OS === 'android' ? await getAdvertisingIdentifier() : null,
|
|
108
|
+
idfa: Platform.OS === 'ios' ? await getAdvertisingIdentifier() : null,
|
|
109
|
+
idfv:
|
|
110
|
+
Platform.OS === 'ios' ? await safeGet(DeviceInfo.getUniqueId) : null,
|
|
111
|
+
...installReferrerInfo,
|
|
112
|
+
};
|
|
113
|
+
} catch (error) {
|
|
114
|
+
console.error('Error collecting device data:', error);
|
|
115
|
+
return { error: 'Failed to collect device data' };
|
|
116
|
+
}
|
|
93
117
|
};
|
|
94
118
|
|
|
95
119
|
const STORAGE_KEY = 'linkrunner_install_instance_id';
|
|
@@ -141,4 +165,9 @@ async function getDeeplinkURL(): Promise<string | null> {
|
|
|
141
165
|
}
|
|
142
166
|
}
|
|
143
167
|
|
|
144
|
-
export {
|
|
168
|
+
export {
|
|
169
|
+
device_data,
|
|
170
|
+
getLinkRunnerInstallInstanceId,
|
|
171
|
+
setDeeplinkURL,
|
|
172
|
+
getDeeplinkURL,
|
|
173
|
+
};
|