@datalyr/react-native 1.4.6 → 1.4.7
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/ios/DatalyrNativeModule.swift +60 -144
- package/package.json +1 -1
- package/ios/ObjCExceptionHelper.h +0 -11
- package/ios/ObjCExceptionHelper.m +0 -22
|
@@ -11,49 +11,36 @@ public class DatalyrNativeModule: Module {
|
|
|
11
11
|
|
|
12
12
|
AsyncFunction("initializeMetaSDK") { (appId: String, clientToken: String?, advertiserTrackingEnabled: Bool, promise: Promise) in
|
|
13
13
|
DispatchQueue.main.async {
|
|
14
|
-
|
|
15
|
-
Settings.shared.appID = appId
|
|
14
|
+
Settings.shared.appID = appId
|
|
16
15
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
Settings.shared.isAdvertiserTrackingEnabled = advertiserTrackingEnabled
|
|
22
|
-
Settings.shared.isAdvertiserIDCollectionEnabled = advertiserTrackingEnabled
|
|
23
|
-
|
|
24
|
-
ApplicationDelegate.shared.application(
|
|
25
|
-
UIApplication.shared,
|
|
26
|
-
didFinishLaunchingWithOptions: nil
|
|
27
|
-
)
|
|
16
|
+
if let token = clientToken, !token.isEmpty {
|
|
17
|
+
Settings.shared.clientToken = token
|
|
28
18
|
}
|
|
29
19
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
20
|
+
Settings.shared.isAdvertiserTrackingEnabled = advertiserTrackingEnabled
|
|
21
|
+
Settings.shared.isAdvertiserIDCollectionEnabled = advertiserTrackingEnabled
|
|
22
|
+
|
|
23
|
+
ApplicationDelegate.shared.application(
|
|
24
|
+
UIApplication.shared,
|
|
25
|
+
didFinishLaunchingWithOptions: nil
|
|
26
|
+
)
|
|
34
27
|
|
|
35
28
|
promise.resolve(true)
|
|
36
29
|
}
|
|
37
30
|
}
|
|
38
31
|
|
|
39
32
|
AsyncFunction("fetchDeferredAppLink") { (promise: Promise) in
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
if let url = url {
|
|
48
|
-
promise.resolve(url.absoluteString)
|
|
49
|
-
} else {
|
|
50
|
-
promise.resolve(nil)
|
|
51
|
-
}
|
|
33
|
+
AppLinkUtility.fetchDeferredAppLink { url, error in
|
|
34
|
+
if error != nil {
|
|
35
|
+
promise.resolve(nil)
|
|
36
|
+
return
|
|
52
37
|
}
|
|
53
|
-
}
|
|
54
38
|
|
|
55
|
-
|
|
56
|
-
|
|
39
|
+
if let url = url {
|
|
40
|
+
promise.resolve(url.absoluteString)
|
|
41
|
+
} else {
|
|
42
|
+
promise.resolve(nil)
|
|
43
|
+
}
|
|
57
44
|
}
|
|
58
45
|
}
|
|
59
46
|
|
|
@@ -66,19 +53,12 @@ public class DatalyrNativeModule: Module {
|
|
|
66
53
|
}
|
|
67
54
|
}
|
|
68
55
|
|
|
69
|
-
let
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
AppEvents.shared.logEvent(AppEvents.Name(eventName), parameters: params)
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
if let error = error {
|
|
80
|
-
promise.reject("meta_exception", error.localizedDescription)
|
|
81
|
-
return
|
|
56
|
+
if let value = valueToSum {
|
|
57
|
+
AppEvents.shared.logEvent(AppEvents.Name(eventName), valueToSum: value, parameters: params)
|
|
58
|
+
} else if params.isEmpty {
|
|
59
|
+
AppEvents.shared.logEvent(AppEvents.Name(eventName))
|
|
60
|
+
} else {
|
|
61
|
+
AppEvents.shared.logEvent(AppEvents.Name(eventName), parameters: params)
|
|
82
62
|
}
|
|
83
63
|
|
|
84
64
|
promise.resolve(true)
|
|
@@ -93,64 +73,33 @@ public class DatalyrNativeModule: Module {
|
|
|
93
73
|
}
|
|
94
74
|
}
|
|
95
75
|
|
|
96
|
-
|
|
97
|
-
AppEvents.shared.logPurchase(amount: amount, currency: currency, parameters: params)
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
if let error = error {
|
|
101
|
-
promise.reject("meta_exception", error.localizedDescription)
|
|
102
|
-
return
|
|
103
|
-
}
|
|
104
|
-
|
|
76
|
+
AppEvents.shared.logPurchase(amount: amount, currency: currency, parameters: params)
|
|
105
77
|
promise.resolve(true)
|
|
106
78
|
}
|
|
107
79
|
|
|
108
80
|
AsyncFunction("setMetaUserData") { (userData: [String: Any], promise: Promise) in
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
AppEvents.shared.setUserData(userData["country"] as? String, forType: .country)
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
if let error = error {
|
|
123
|
-
promise.reject("meta_exception", error.localizedDescription)
|
|
124
|
-
return
|
|
125
|
-
}
|
|
81
|
+
AppEvents.shared.setUserData(userData["email"] as? String, forType: .email)
|
|
82
|
+
AppEvents.shared.setUserData(userData["firstName"] as? String, forType: .firstName)
|
|
83
|
+
AppEvents.shared.setUserData(userData["lastName"] as? String, forType: .lastName)
|
|
84
|
+
AppEvents.shared.setUserData(userData["phone"] as? String, forType: .phone)
|
|
85
|
+
AppEvents.shared.setUserData(userData["dateOfBirth"] as? String, forType: .dateOfBirth)
|
|
86
|
+
AppEvents.shared.setUserData(userData["gender"] as? String, forType: .gender)
|
|
87
|
+
AppEvents.shared.setUserData(userData["city"] as? String, forType: .city)
|
|
88
|
+
AppEvents.shared.setUserData(userData["state"] as? String, forType: .state)
|
|
89
|
+
AppEvents.shared.setUserData(userData["zip"] as? String, forType: .zip)
|
|
90
|
+
AppEvents.shared.setUserData(userData["country"] as? String, forType: .country)
|
|
126
91
|
|
|
127
92
|
promise.resolve(true)
|
|
128
93
|
}
|
|
129
94
|
|
|
130
95
|
AsyncFunction("clearMetaUserData") { (promise: Promise) in
|
|
131
|
-
|
|
132
|
-
AppEvents.shared.clearUserData()
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
if let error = error {
|
|
136
|
-
promise.reject("meta_exception", error.localizedDescription)
|
|
137
|
-
return
|
|
138
|
-
}
|
|
139
|
-
|
|
96
|
+
AppEvents.shared.clearUserData()
|
|
140
97
|
promise.resolve(true)
|
|
141
98
|
}
|
|
142
99
|
|
|
143
100
|
AsyncFunction("updateMetaTrackingAuthorization") { (enabled: Bool, promise: Promise) in
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
Settings.shared.isAdvertiserIDCollectionEnabled = enabled
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
if let error = error {
|
|
150
|
-
promise.reject("meta_exception", error.localizedDescription)
|
|
151
|
-
return
|
|
152
|
-
}
|
|
153
|
-
|
|
101
|
+
Settings.shared.isAdvertiserTrackingEnabled = enabled
|
|
102
|
+
Settings.shared.isAdvertiserIDCollectionEnabled = enabled
|
|
154
103
|
promise.resolve(true)
|
|
155
104
|
}
|
|
156
105
|
|
|
@@ -169,79 +118,46 @@ public class DatalyrNativeModule: Module {
|
|
|
169
118
|
config?.setLogLevel(TikTokLogLevelDebug)
|
|
170
119
|
}
|
|
171
120
|
|
|
172
|
-
|
|
173
|
-
promise.reject("tiktok_init_error", "Failed to create TikTok config")
|
|
174
|
-
return
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
let error = ObjCExceptionHelper.execute {
|
|
121
|
+
if let validConfig = config {
|
|
178
122
|
TikTokBusiness.initializeSdk(validConfig)
|
|
123
|
+
promise.resolve(true)
|
|
124
|
+
} else {
|
|
125
|
+
promise.reject("tiktok_init_error", "Failed to create TikTok config")
|
|
179
126
|
}
|
|
180
|
-
|
|
181
|
-
if let error = error {
|
|
182
|
-
promise.reject("tiktok_init_exception", error.localizedDescription)
|
|
183
|
-
return
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
promise.resolve(true)
|
|
187
127
|
}
|
|
188
128
|
}
|
|
189
129
|
|
|
190
130
|
AsyncFunction("trackTikTokEvent") { (eventName: String, eventId: String?, properties: [String: Any]?, promise: Promise) in
|
|
191
|
-
let
|
|
192
|
-
let event: TikTokBaseEvent
|
|
131
|
+
let event: TikTokBaseEvent
|
|
193
132
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
if let dict = properties {
|
|
201
|
-
for (key, value) in dict {
|
|
202
|
-
event.addProperty(withKey: key, value: value)
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
TikTokBusiness.trackTTEvent(event)
|
|
133
|
+
if let eid = eventId, !eid.isEmpty {
|
|
134
|
+
event = TikTokBaseEvent(eventName: eventName, eventId: eid)
|
|
135
|
+
} else {
|
|
136
|
+
event = TikTokBaseEvent(eventName: eventName)
|
|
207
137
|
}
|
|
208
138
|
|
|
209
|
-
if let
|
|
210
|
-
|
|
211
|
-
|
|
139
|
+
if let dict = properties {
|
|
140
|
+
for (key, value) in dict {
|
|
141
|
+
event.addProperty(withKey: key, value: value)
|
|
142
|
+
}
|
|
212
143
|
}
|
|
213
144
|
|
|
145
|
+
TikTokBusiness.trackTTEvent(event)
|
|
214
146
|
promise.resolve(true)
|
|
215
147
|
}
|
|
216
148
|
|
|
217
149
|
AsyncFunction("identifyTikTokUser") { (externalId: String, externalUserName: String, phoneNumber: String, email: String, promise: Promise) in
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
)
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
if let error = error {
|
|
228
|
-
promise.reject("tiktok_exception", error.localizedDescription)
|
|
229
|
-
return
|
|
230
|
-
}
|
|
231
|
-
|
|
150
|
+
TikTokBusiness.identify(
|
|
151
|
+
withExternalID: externalId.isEmpty ? nil : externalId,
|
|
152
|
+
externalUserName: externalUserName.isEmpty ? nil : externalUserName,
|
|
153
|
+
phoneNumber: phoneNumber.isEmpty ? nil : phoneNumber,
|
|
154
|
+
email: email.isEmpty ? nil : email
|
|
155
|
+
)
|
|
232
156
|
promise.resolve(true)
|
|
233
157
|
}
|
|
234
158
|
|
|
235
159
|
AsyncFunction("logoutTikTok") { (promise: Promise) in
|
|
236
|
-
|
|
237
|
-
TikTokBusiness.logout()
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
if let error = error {
|
|
241
|
-
promise.reject("tiktok_exception", error.localizedDescription)
|
|
242
|
-
return
|
|
243
|
-
}
|
|
244
|
-
|
|
160
|
+
TikTokBusiness.logout()
|
|
245
161
|
promise.resolve(true)
|
|
246
162
|
}
|
|
247
163
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@datalyr/react-native",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.7",
|
|
4
4
|
"description": "Datalyr SDK for React Native & Expo - Server-side attribution tracking with bundled Meta and TikTok SDKs for iOS and Android",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
#import "ObjCExceptionHelper.h"
|
|
2
|
-
|
|
3
|
-
@implementation ObjCExceptionHelper
|
|
4
|
-
|
|
5
|
-
+ (nullable NSError *)execute:(void (NS_NOESCAPE ^)(void))block {
|
|
6
|
-
@try {
|
|
7
|
-
block();
|
|
8
|
-
return nil;
|
|
9
|
-
} @catch (NSException *exception) {
|
|
10
|
-
NSMutableDictionary *userInfo = [NSMutableDictionary dictionary];
|
|
11
|
-
userInfo[NSLocalizedDescriptionKey] = exception.reason ?: @"Unknown NSException";
|
|
12
|
-
userInfo[@"ExceptionName"] = exception.name;
|
|
13
|
-
if (exception.userInfo) {
|
|
14
|
-
userInfo[@"ExceptionUserInfo"] = exception.userInfo;
|
|
15
|
-
}
|
|
16
|
-
return [NSError errorWithDomain:@"com.datalyr.exception"
|
|
17
|
-
code:-1
|
|
18
|
-
userInfo:userInfo];
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
@end
|