forked from idehub/react-native-google-analytics-bridge
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNativeBridges.ts
More file actions
91 lines (85 loc) · 2.86 KB
/
Copy pathNativeBridges.ts
File metadata and controls
91 lines (85 loc) · 2.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import { HitPayload } from "./models/Analytics";
import { NativeModules, EventSubscriptionVendor } from "react-native";
import DataLayerEvent from "./models/DataLayerEvent";
const {
GoogleTagManagerBridge,
GoogleAnalyticsBridge,
GoogleAnalyticsSettings
} = NativeModules;
if (
!GoogleTagManagerBridge ||
!GoogleAnalyticsBridge ||
!GoogleAnalyticsSettings
) {
console.error(
"Something went wrong initializing the native react-native-google-analytics-bridge module.\nPlease check your configuration.\nDid you forget to run 'react-native link' or install your node_modules?"
);
}
export interface IGoogleAnalyticsBridge {
trackScreenView(
trackerId: string,
screenName: string,
payload: HitPayload
): void;
trackEvent(
trackerId: string,
category: string,
action: string,
label: string,
value: string,
payload: HitPayload
): void;
trackTiming(
trackerId: string,
category: string,
interval: number,
name: string,
label: string,
payload: HitPayload
): void;
trackException(
trackerId: string,
error: string,
fatal: boolean,
payload: HitPayload
): void;
trackSocialInteraction(
trackerId: string,
network: string,
action: string,
targetUrl: string,
payload: HitPayload
): void;
setUser(trackerId: string, userId: string): void;
setClient(trackerId: string, clientId: string): void;
getClientId(trackerId: string): Promise<string>;
allowIDFA(trackerId: string, enabled: boolean): void;
setSamplingRate(trackerId: string, sampleRate: number): void;
setAnonymizeIp(trackerId: string, enabled: boolean): void;
setAppName(trackerId: string, appName: string): void;
setAppVersion(trackerId: string, appVersion: string): void;
setCurrency(trackerId: string, currencyCode: string): void;
setTrackUncaughtExceptions(trackerId: string, enabled: boolean): void;
dispatch(): Promise<boolean>;
}
export interface IGoogleTagManagerBridge extends EventSubscriptionVendor {
openContainerWithId(containerId: string): Promise<boolean>;
refreshContainer(): Promise<boolean>;
booleanForKey(key: string): Promise<boolean>;
stringForKey(key: string): Promise<string>;
doubleForKey(key: any): Promise<number>;
pushDataLayerEvent(event: DataLayerEvent): Promise<boolean>;
registerFunctionCallTagHandler(functionName: string): Promise<boolean>;
setVerboseLoggingEnabled(enabled: boolean): Promise<boolean>;
}
export interface IGoogleAnalyticsSettings {
setOptOut(enabled): void;
setDispatchInterval(intervalInSeconds): void;
setDryRun(enabled): void;
}
const AnalyticsBridge = GoogleAnalyticsBridge as IGoogleAnalyticsBridge;
const TagManagerBridge = GoogleTagManagerBridge as IGoogleTagManagerBridge;
const AnalyticsSettings = GoogleAnalyticsSettings as IGoogleAnalyticsSettings;
export { TagManagerBridge };
export { AnalyticsBridge };
export { AnalyticsSettings };