@attryio/react-native 0.1.3 → 0.1.5
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/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +85 -42
- package/package.json +3 -2
package/dist/index.d.ts
CHANGED
|
@@ -53,11 +53,11 @@ export interface ReactNativeAttryConfig extends Omit<AttryConfig, "platform" | "
|
|
|
53
53
|
}
|
|
54
54
|
export { parseAttryUrl };
|
|
55
55
|
export declare function createAttryReactNative(config: ReactNativeAttryConfig): Promise<Attry>;
|
|
56
|
-
export declare function collectReactNativeContext(rn?: ReactNativeLike
|
|
56
|
+
export declare function collectReactNativeContext(rn?: ReactNativeLike, configuredContext?: AttryConfig["context"]): Promise<AttryContext>;
|
|
57
57
|
export declare function attachReactNativeLifecycleTracking(client: Attry, rn: ReactNativeLike | undefined, storage: AttryStorage | undefined, options: {
|
|
58
58
|
appId: string;
|
|
59
59
|
sessionTimeoutMs?: number;
|
|
60
60
|
}): Promise<void>;
|
|
61
|
-
export declare function attachDeepLinkTracking(client: Attry, rn?: ReactNativeLike
|
|
62
|
-
export declare function collectInstallAttribution(client: Attry, rn?: ReactNativeLike
|
|
61
|
+
export declare function attachDeepLinkTracking(client: Attry, rn?: ReactNativeLike): Promise<void>;
|
|
62
|
+
export declare function collectInstallAttribution(client: Attry, rn?: ReactNativeLike): Promise<void>;
|
|
63
63
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EAGL,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAE3B,KAAK,eAAe,GAAG;IACrB,QAAQ,CAAC,EAAE;QACT,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,CACjB,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,KAC9B;YAAE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;SAAE,CAAC;KAC9B,CAAC;IACF,UAAU,CAAC,EAAE;QACX,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,KAAK;YACxC,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,KAAK,CAAC,EAAE,MAAM,CAAC;SAChB,CAAC;KACH,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAC7C,gBAAgB,CAAC,EAAE,CACjB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,OAAO,EAAE;YAAE,GAAG,EAAE,MAAM,CAAA;SAAE,KAAK,IAAI,KACzC;YAAE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;SAAE,CAAC;KAC9B,CAAC;IACF,aAAa,CAAC,EAAE;QACd,aAAa,CAAC,EAAE;YACd,gBAAgB,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;SAChD,CAAC;QACF,oBAAoB,CAAC,EAAE;YACrB,kBAAkB,EAAE,MAAM,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;SAClE,CAAC;QACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,EAAE,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;QAChC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;KAC3B,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,sBACf,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,SAAS,CAAC;IACjD,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACjC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAKD,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,sBAAsB,kBAiC1E;AAED,wBAAsB,yBAAyB,CAC7C,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { Attry, ATTRY_EVENTS, MemoryStorage, parseAttryUrl } from "@attryio/sdk-core";
|
|
2
2
|
const SDK_NAME = "attry-react-native";
|
|
3
|
-
const SDK_VERSION = "0.1.
|
|
3
|
+
const SDK_VERSION = "0.1.5";
|
|
4
4
|
export { parseAttryUrl };
|
|
5
5
|
export async function createAttryReactNative(config) {
|
|
6
|
-
const rn =
|
|
6
|
+
const rn = await loadReactNative();
|
|
7
7
|
const platform = rn?.Platform?.OS === "ios" || rn?.Platform?.OS === "android"
|
|
8
8
|
? rn.Platform.OS
|
|
9
9
|
: "unknown";
|
|
10
|
-
const storage = config.storage ?? createAsyncStorageAdapter() ?? new MemoryStorage();
|
|
10
|
+
const storage = config.storage ?? (await createAsyncStorageAdapter()) ?? new MemoryStorage();
|
|
11
11
|
const context = await collectReactNativeContext(rn, config.context);
|
|
12
12
|
const client = await new Attry({
|
|
13
13
|
...config,
|
|
@@ -29,18 +29,26 @@ export async function createAttryReactNative(config) {
|
|
|
29
29
|
}
|
|
30
30
|
return client;
|
|
31
31
|
}
|
|
32
|
-
export async function collectReactNativeContext(rn
|
|
33
|
-
const
|
|
32
|
+
export async function collectReactNativeContext(rn, configuredContext = {}) {
|
|
33
|
+
const native = rn ?? (await loadReactNative());
|
|
34
|
+
const modules = native?.NativeModules;
|
|
34
35
|
const deviceInfo = modules?.RNDeviceInfo;
|
|
35
36
|
const expoConstants = modules?.ExpoConstants ?? modules?.ExponentConstants;
|
|
36
37
|
const platformConstants = modules?.PlatformConstants;
|
|
37
38
|
const settings = modules?.SettingsManager;
|
|
38
|
-
const screen =
|
|
39
|
+
const screen = native?.Dimensions?.get?.("screen");
|
|
39
40
|
const locale = configuredContext?.locale ??
|
|
40
41
|
readNestedString(settings?.settings, ["AppleLocale"]) ??
|
|
41
42
|
readFirstString(readNestedUnknown(settings?.settings, ["AppleLanguages"])) ??
|
|
42
43
|
readNestedString(deviceInfo, ["deviceLocale"]) ??
|
|
43
|
-
|
|
44
|
+
native?.I18nManager?.localeIdentifier;
|
|
45
|
+
const timezone = configuredContext?.timezone ??
|
|
46
|
+
safeTimezone() ??
|
|
47
|
+
(await readMaybeString(deviceInfo?.timezone)) ??
|
|
48
|
+
(await readMaybeString(deviceInfo?.getTimezone));
|
|
49
|
+
const countryCode = configuredContext?.countryCode ??
|
|
50
|
+
readCountryCodeFromLocale(typeof locale === "string" ? locale : undefined) ??
|
|
51
|
+
readCountryCodeFromTimezone(timezone);
|
|
44
52
|
return compactContext({
|
|
45
53
|
sdkName: SDK_NAME,
|
|
46
54
|
sdkVersion: SDK_VERSION,
|
|
@@ -74,10 +82,12 @@ export async function collectReactNativeContext(rn = getReactNative(), configure
|
|
|
74
82
|
(await readMaybeString(deviceInfo?.getBuildNumber)) ??
|
|
75
83
|
readNestedString(expoConstants, ["expoConfig", "ios", "buildNumber"]) ??
|
|
76
84
|
readNestedString(expoConstants, ["expoConfig", "android", "versionCode"]),
|
|
77
|
-
osVersion:
|
|
85
|
+
osVersion: native?.Platform?.Version
|
|
86
|
+
? String(native.Platform.Version)
|
|
87
|
+
: undefined,
|
|
78
88
|
systemName: configuredContext?.systemName ??
|
|
79
89
|
(await readMaybeString(deviceInfo?.systemName)) ??
|
|
80
|
-
(
|
|
90
|
+
(native?.Platform?.OS ? String(native.Platform.OS) : undefined),
|
|
81
91
|
deviceModel: configuredContext?.deviceModel ??
|
|
82
92
|
(await readMaybeString(deviceInfo?.model)) ??
|
|
83
93
|
(await readMaybeString(deviceInfo?.getModel)) ??
|
|
@@ -106,13 +116,9 @@ export async function collectReactNativeContext(rn = getReactNative(), configure
|
|
|
106
116
|
locale,
|
|
107
117
|
language: configuredContext?.language ??
|
|
108
118
|
(typeof locale === "string" ? locale.split(/[-_]/)[0] : undefined),
|
|
109
|
-
timezone
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
(await readMaybeString(deviceInfo?.getTimezone)),
|
|
113
|
-
country: configuredContext?.country,
|
|
114
|
-
countryCode: configuredContext?.countryCode ??
|
|
115
|
-
readCountryCodeFromLocale(typeof locale === "string" ? locale : undefined),
|
|
119
|
+
timezone,
|
|
120
|
+
country: configuredContext?.country ?? countryNameFromCode(countryCode),
|
|
121
|
+
countryCode,
|
|
116
122
|
region: configuredContext?.region,
|
|
117
123
|
city: configuredContext?.city,
|
|
118
124
|
carrier: configuredContext?.carrier ??
|
|
@@ -124,7 +130,8 @@ export async function collectReactNativeContext(rn = getReactNative(), configure
|
|
|
124
130
|
...configuredContext
|
|
125
131
|
});
|
|
126
132
|
}
|
|
127
|
-
export async function attachReactNativeLifecycleTracking(client, rn
|
|
133
|
+
export async function attachReactNativeLifecycleTracking(client, rn, storage = new MemoryStorage(), options) {
|
|
134
|
+
const native = rn ?? (await loadReactNative());
|
|
128
135
|
const installKey = `attry.${options.appId}.install_tracked`;
|
|
129
136
|
const sessionStartedAt = Date.now();
|
|
130
137
|
const sessionId = `ses_${sessionStartedAt.toString(36)}`;
|
|
@@ -143,7 +150,7 @@ export async function attachReactNativeLifecycleTracking(client, rn = getReactNa
|
|
|
143
150
|
await client.track(ATTRY_EVENTS.OPEN, {
|
|
144
151
|
properties: {
|
|
145
152
|
auto: true,
|
|
146
|
-
appState:
|
|
153
|
+
appState: native?.AppState?.currentState ?? "active"
|
|
147
154
|
},
|
|
148
155
|
context: {
|
|
149
156
|
sessionId
|
|
@@ -157,10 +164,10 @@ export async function attachReactNativeLifecycleTracking(client, rn = getReactNa
|
|
|
157
164
|
sessionId
|
|
158
165
|
}
|
|
159
166
|
});
|
|
160
|
-
let active =
|
|
167
|
+
let active = native?.AppState?.currentState !== "background";
|
|
161
168
|
let lastActiveAt = sessionStartedAt;
|
|
162
169
|
const sessionTimeoutMs = options.sessionTimeoutMs ?? 30 * 60 * 1000;
|
|
163
|
-
|
|
170
|
+
native?.AppState?.addEventListener?.("change", (state) => {
|
|
164
171
|
const now = Date.now();
|
|
165
172
|
if (state === "active" && !active) {
|
|
166
173
|
active = true;
|
|
@@ -202,18 +209,20 @@ export async function attachReactNativeLifecycleTracking(client, rn = getReactNa
|
|
|
202
209
|
}
|
|
203
210
|
});
|
|
204
211
|
}
|
|
205
|
-
export async function attachDeepLinkTracking(client, rn
|
|
206
|
-
const
|
|
212
|
+
export async function attachDeepLinkTracking(client, rn) {
|
|
213
|
+
const native = rn ?? (await loadReactNative());
|
|
214
|
+
const initialUrl = await native?.Linking?.getInitialURL?.();
|
|
207
215
|
if (initialUrl) {
|
|
208
|
-
await trackDeepLinkOpen(client, initialUrl, "initial_url",
|
|
216
|
+
await trackDeepLinkOpen(client, initialUrl, "initial_url", native);
|
|
209
217
|
}
|
|
210
|
-
|
|
211
|
-
void trackDeepLinkOpen(client, url, "linking_event",
|
|
218
|
+
native?.Linking?.addEventListener?.("url", ({ url }) => {
|
|
219
|
+
void trackDeepLinkOpen(client, url, "linking_event", native);
|
|
212
220
|
});
|
|
213
221
|
}
|
|
214
|
-
export async function collectInstallAttribution(client, rn
|
|
215
|
-
|
|
216
|
-
|
|
222
|
+
export async function collectInstallAttribution(client, rn) {
|
|
223
|
+
const native = rn ?? (await loadReactNative());
|
|
224
|
+
if (native?.Platform?.OS === "ios") {
|
|
225
|
+
const token = await native.NativeModules?.AttryAppleAds?.attributionToken?.();
|
|
217
226
|
if (token) {
|
|
218
227
|
const response = await client.submitAppleAdsToken(token);
|
|
219
228
|
await client.track("apple_ads_token_collected", {
|
|
@@ -225,8 +234,8 @@ export async function collectInstallAttribution(client, rn = getReactNative()) {
|
|
|
225
234
|
}
|
|
226
235
|
return;
|
|
227
236
|
}
|
|
228
|
-
if (
|
|
229
|
-
const payload = await
|
|
237
|
+
if (native?.Platform?.OS === "android") {
|
|
238
|
+
const payload = await native.NativeModules?.AttryInstallReferrer?.getInstallReferrer?.();
|
|
230
239
|
if (payload?.installReferrer) {
|
|
231
240
|
const response = await client.resolveInstall({
|
|
232
241
|
installReferrer: payload.installReferrer
|
|
@@ -242,10 +251,11 @@ export async function collectInstallAttribution(client, rn = getReactNative()) {
|
|
|
242
251
|
}
|
|
243
252
|
}
|
|
244
253
|
}
|
|
245
|
-
async function trackDeepLinkOpen(client, url, openType, rn
|
|
254
|
+
async function trackDeepLinkOpen(client, url, openType, rn) {
|
|
255
|
+
const native = rn ?? (await loadReactNative());
|
|
246
256
|
const parsed = parseAttryUrl(url);
|
|
247
|
-
const openedFromUniversalLink =
|
|
248
|
-
const openedFromAndroidAppLink =
|
|
257
|
+
const openedFromUniversalLink = native?.Platform?.OS === "ios";
|
|
258
|
+
const openedFromAndroidAppLink = native?.Platform?.OS === "android";
|
|
249
259
|
const resolved = await client.resolveDeepLink({
|
|
250
260
|
url,
|
|
251
261
|
openedFromUniversalLink,
|
|
@@ -329,9 +339,43 @@ function compactContext(context) {
|
|
|
329
339
|
return Object.fromEntries(Object.entries(context).filter(([, value]) => value !== undefined && value !== null && value !== ""));
|
|
330
340
|
}
|
|
331
341
|
function readCountryCodeFromLocale(locale) {
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
342
|
+
if (!locale) {
|
|
343
|
+
return undefined;
|
|
344
|
+
}
|
|
345
|
+
try {
|
|
346
|
+
return normalizeCountryCode(new Intl.Locale(locale.replace("_", "-")).region);
|
|
347
|
+
}
|
|
348
|
+
catch {
|
|
349
|
+
const match = locale.match(/[-_]([A-Za-z]{2})(?:$|[-_])/);
|
|
350
|
+
return normalizeCountryCode(match?.[1]);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
function readCountryCodeFromTimezone(timezone) {
|
|
354
|
+
return timezone ? TIMEZONE_COUNTRY_CODES[timezone] : undefined;
|
|
355
|
+
}
|
|
356
|
+
const TIMEZONE_COUNTRY_CODES = {
|
|
357
|
+
"Europe/Istanbul": "TR"
|
|
358
|
+
};
|
|
359
|
+
function normalizeCountryCode(countryCode) {
|
|
360
|
+
if (!countryCode || countryCode.length !== 2) {
|
|
361
|
+
return undefined;
|
|
362
|
+
}
|
|
363
|
+
const upper = countryCode.toUpperCase();
|
|
364
|
+
return upper === "XX" || upper === "T1" ? undefined : upper;
|
|
365
|
+
}
|
|
366
|
+
function countryNameFromCode(countryCode) {
|
|
367
|
+
if (!countryCode) {
|
|
368
|
+
return undefined;
|
|
369
|
+
}
|
|
370
|
+
if (countryCode === "TR") {
|
|
371
|
+
return "Turkey";
|
|
372
|
+
}
|
|
373
|
+
try {
|
|
374
|
+
return new Intl.DisplayNames(["en"], { type: "region" }).of(countryCode);
|
|
375
|
+
}
|
|
376
|
+
catch {
|
|
377
|
+
return countryCode;
|
|
378
|
+
}
|
|
335
379
|
}
|
|
336
380
|
function safeTimezone() {
|
|
337
381
|
try {
|
|
@@ -341,19 +385,18 @@ function safeTimezone() {
|
|
|
341
385
|
return undefined;
|
|
342
386
|
}
|
|
343
387
|
}
|
|
344
|
-
function
|
|
388
|
+
async function loadReactNative() {
|
|
345
389
|
try {
|
|
346
|
-
|
|
347
|
-
return dynamicRequire("react-native");
|
|
390
|
+
return (await import("react-native"));
|
|
348
391
|
}
|
|
349
392
|
catch {
|
|
350
393
|
return undefined;
|
|
351
394
|
}
|
|
352
395
|
}
|
|
353
|
-
function createAsyncStorageAdapter() {
|
|
396
|
+
async function createAsyncStorageAdapter() {
|
|
354
397
|
try {
|
|
355
|
-
const
|
|
356
|
-
const asyncStorage =
|
|
398
|
+
const asyncStorageModule = (await import("@react-native-async-storage/async-storage"));
|
|
399
|
+
const asyncStorage = asyncStorageModule.default;
|
|
357
400
|
return asyncStorage;
|
|
358
401
|
}
|
|
359
402
|
catch {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@attryio/react-native",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -29,7 +29,8 @@
|
|
|
29
29
|
"access": "public"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@attryio/sdk-core": "0.1.3"
|
|
32
|
+
"@attryio/sdk-core": "0.1.3",
|
|
33
|
+
"@react-native-async-storage/async-storage": "^2.2.0"
|
|
33
34
|
},
|
|
34
35
|
"peerDependencies": {
|
|
35
36
|
"react-native": ">=0.72"
|