mapp-intelligence-reactnative-plugin 1.0.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/LICENSE +20 -0
- package/README.md +31 -0
- package/android/build.gradle +118 -0
- package/android/gradle.properties +7 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/AndroidManifestNew.xml +2 -0
- package/android/src/main/java/com/mappinteligenceplugin/ConfigAdapter.kt +25 -0
- package/android/src/main/java/com/mappinteligenceplugin/MappinteligencePluginModule.kt +489 -0
- package/android/src/main/java/com/mappinteligenceplugin/MappinteligencePluginPackage.kt +23 -0
- package/android/src/main/java/com/mappinteligenceplugin/mapper/ActionEventMapper.kt +26 -0
- package/android/src/main/java/com/mappinteligenceplugin/mapper/CampaignActionMapper.kt +17 -0
- package/android/src/main/java/com/mappinteligenceplugin/mapper/CampaignParametersMapper.kt +28 -0
- package/android/src/main/java/com/mappinteligenceplugin/mapper/ECommerceParametersMapper.kt +59 -0
- package/android/src/main/java/com/mappinteligenceplugin/mapper/EventParametersMapper.kt +17 -0
- package/android/src/main/java/com/mappinteligenceplugin/mapper/ExceptionTypeMapper.kt +13 -0
- package/android/src/main/java/com/mappinteligenceplugin/mapper/Mapper.kt +5 -0
- package/android/src/main/java/com/mappinteligenceplugin/mapper/MediaEventMapper.kt +43 -0
- package/android/src/main/java/com/mappinteligenceplugin/mapper/MediaParametersMapper.kt +29 -0
- package/android/src/main/java/com/mappinteligenceplugin/mapper/PageParametersMapper.kt +23 -0
- package/android/src/main/java/com/mappinteligenceplugin/mapper/ProductMapper.kt +29 -0
- package/android/src/main/java/com/mappinteligenceplugin/mapper/SessionParametersMapper.kt +16 -0
- package/android/src/main/java/com/mappinteligenceplugin/mapper/UserCategoriesMapper.kt +49 -0
- package/android/src/main/java/com/mappinteligenceplugin/mapper/Util.kt +75 -0
- package/ios/MappinteligencePlugin.h +11 -0
- package/ios/MappinteligencePlugin.mm +533 -0
- package/lib/commonjs/Converters.js +168 -0
- package/lib/commonjs/Converters.js.map +1 -0
- package/lib/commonjs/DataTypes.js +71 -0
- package/lib/commonjs/DataTypes.js.map +1 -0
- package/lib/commonjs/GlobalErrorHandler.js +51 -0
- package/lib/commonjs/GlobalErrorHandler.js.map +1 -0
- package/lib/commonjs/UseWebTracking.js +114 -0
- package/lib/commonjs/UseWebTracking.js.map +1 -0
- package/lib/commonjs/global.d.js +6 -0
- package/lib/commonjs/global.d.js.map +1 -0
- package/lib/commonjs/index.js +401 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/promiseRejectionHandler.js +50 -0
- package/lib/commonjs/promiseRejectionHandler.js.map +1 -0
- package/lib/module/Converters.js +155 -0
- package/lib/module/Converters.js.map +1 -0
- package/lib/module/DataTypes.js +65 -0
- package/lib/module/DataTypes.js.map +1 -0
- package/lib/module/GlobalErrorHandler.js +44 -0
- package/lib/module/GlobalErrorHandler.js.map +1 -0
- package/lib/module/UseWebTracking.js +107 -0
- package/lib/module/UseWebTracking.js.map +1 -0
- package/lib/module/global.d.js +4 -0
- package/lib/module/global.d.js.map +1 -0
- package/lib/module/index.js +321 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/promiseRejectionHandler.js +44 -0
- package/lib/module/promiseRejectionHandler.js.map +1 -0
- package/lib/typescript/src/Converters.d.ts +10 -0
- package/lib/typescript/src/Converters.d.ts.map +1 -0
- package/lib/typescript/src/DataTypes.d.ts +151 -0
- package/lib/typescript/src/DataTypes.d.ts.map +1 -0
- package/lib/typescript/src/GlobalErrorHandler.d.ts +3 -0
- package/lib/typescript/src/GlobalErrorHandler.d.ts.map +1 -0
- package/lib/typescript/src/UseWebTracking.d.ts +13 -0
- package/lib/typescript/src/UseWebTracking.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +201 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/promiseRejectionHandler.d.ts +3 -0
- package/lib/typescript/src/promiseRejectionHandler.d.ts.map +1 -0
- package/mapp-intelligence-reactnative-plugin.podspec +25 -0
- package/package.json +163 -0
- package/src/Converters.tsx +219 -0
- package/src/DataTypes.tsx +168 -0
- package/src/GlobalErrorHandler.tsx +58 -0
- package/src/UseWebTracking.tsx +135 -0
- package/src/global.d.ts +24 -0
- package/src/index.tsx +410 -0
- package/src/promiseRejectionHandler.tsx +54 -0
|
@@ -0,0 +1,533 @@
|
|
|
1
|
+
#import "MappinteligencePlugin.h"
|
|
2
|
+
#import "MappIntelligence.h"
|
|
3
|
+
#import "MappIntelligenceLogger.h"
|
|
4
|
+
#import "MIDefaultTracker.h"
|
|
5
|
+
#import <Foundation/Foundation.h>
|
|
6
|
+
|
|
7
|
+
@implementation MappinteligencePlugin
|
|
8
|
+
RCT_EXPORT_MODULE()
|
|
9
|
+
|
|
10
|
+
// Example method
|
|
11
|
+
// See // https://reactnative.dev/docs/native-modules-ios
|
|
12
|
+
RCT_EXPORT_METHOD(multiply:(double)a
|
|
13
|
+
b:(double)b
|
|
14
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
15
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
16
|
+
{
|
|
17
|
+
NSNumber *result = @(a * b);
|
|
18
|
+
|
|
19
|
+
resolve(result);
|
|
20
|
+
}
|
|
21
|
+
RCT_EXPORT_METHOD(build:
|
|
22
|
+
(RCTPromiseResolveBlock)resolve
|
|
23
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
24
|
+
{
|
|
25
|
+
|
|
26
|
+
resolve(@1);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
RCT_EXPORT_METHOD(isInitialized:
|
|
30
|
+
(RCTPromiseResolveBlock)resolve
|
|
31
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
32
|
+
{
|
|
33
|
+
BOOL status = [MappIntelligence getId] != NULL && [MappIntelligence getUrl] != NULL;
|
|
34
|
+
resolve((status ? @1 : @0) );
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
RCT_EXPORT_METHOD(setTemporarySessionId:(NSString*)sessionId
|
|
38
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
39
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
40
|
+
{
|
|
41
|
+
[[MappIntelligence shared] setTemporarySessionId:sessionId];
|
|
42
|
+
resolve(@1);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
RCT_EXPORT_METHOD(getEverId:
|
|
46
|
+
(RCTPromiseResolveBlock)resolve
|
|
47
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
48
|
+
{
|
|
49
|
+
resolve([[MappIntelligence shared] getEverId]);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
RCT_EXPORT_METHOD(setEverId:(NSString*)everId
|
|
53
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
54
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
55
|
+
{
|
|
56
|
+
[[MappIntelligence shared] initWithConfiguration:@[[MappIntelligence getId]] onTrackdomain:[MappIntelligence getUrl] andWithEverID:everId];
|
|
57
|
+
[[MappIntelligence shared] setLogLevel:all];
|
|
58
|
+
resolve(@1);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
RCT_EXPORT_METHOD(optOut:(BOOL)sendData
|
|
62
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
63
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
64
|
+
{
|
|
65
|
+
[[MappIntelligence shared] optOutAndSendCurrentData:sendData];
|
|
66
|
+
resolve(@1);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
RCT_EXPORT_METHOD(sendRequestsAndClean:
|
|
70
|
+
(RCTPromiseResolveBlock)resolve
|
|
71
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
72
|
+
{
|
|
73
|
+
[[MIDefaultTracker sharedInstance] sendRequestFromDatabaseWithCompletionHandler:^(NSError * _Nullable error) {
|
|
74
|
+
if (error) {
|
|
75
|
+
NSLog(@"error: %@", error);
|
|
76
|
+
}
|
|
77
|
+
}];
|
|
78
|
+
resolve(@1);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
RCT_EXPORT_METHOD(optIn:(BOOL)sendData
|
|
82
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
83
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
84
|
+
{
|
|
85
|
+
[[MappIntelligence shared] optIn];
|
|
86
|
+
resolve(@1);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
RCT_EXPORT_METHOD(reset:
|
|
90
|
+
(RCTPromiseResolveBlock)resolve
|
|
91
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
92
|
+
{
|
|
93
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
94
|
+
[[MappIntelligence shared] reset];
|
|
95
|
+
});
|
|
96
|
+
resolve(@1);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
RCT_EXPORT_METHOD(getCurrentConfig:
|
|
100
|
+
(RCTPromiseResolveBlock)resolve
|
|
101
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
102
|
+
{
|
|
103
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
104
|
+
[[MappIntelligence shared] setBatchSupportEnabled:[[MappIntelligence shared] batchSupportEnabled]];
|
|
105
|
+
});
|
|
106
|
+
resolve(@"print configuration:");
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
RCT_EXPORT_METHOD(initWithConfiguration:(NSArray*)trackIDs
|
|
110
|
+
domain:(NSString*)domain
|
|
111
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
112
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
113
|
+
{
|
|
114
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
115
|
+
[[MappIntelligence shared] initWithConfiguration:trackIDs onTrackdomain:domain];
|
|
116
|
+
});
|
|
117
|
+
resolve(@1);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
RCT_EXPORT_METHOD(setLogLevel:(NSInteger)level
|
|
121
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
122
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
123
|
+
{
|
|
124
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
125
|
+
[[MappIntelligence shared] setLogLevel:(logLevel)level];
|
|
126
|
+
});
|
|
127
|
+
resolve(@1);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
RCT_EXPORT_METHOD(setExceptionLogLevel:(NSInteger)level
|
|
131
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
132
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
133
|
+
{
|
|
134
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
135
|
+
[[MappIntelligence shared] enableCrashTracking:(exceptionType)(level + 1)];
|
|
136
|
+
});
|
|
137
|
+
resolve(@1);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
RCT_EXPORT_METHOD(setRequestInterval:(NSInteger)interval
|
|
141
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
142
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
143
|
+
{
|
|
144
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
145
|
+
[[MappIntelligence shared] setRequestInterval:60];
|
|
146
|
+
});
|
|
147
|
+
resolve(@1);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
RCT_EXPORT_METHOD(setBatchSupportEnabled:(BOOL)enabled
|
|
151
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
152
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
153
|
+
{
|
|
154
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
155
|
+
[[MappIntelligence shared] setBatchSupportEnabled:enabled];
|
|
156
|
+
});
|
|
157
|
+
resolve(@1);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
RCT_EXPORT_METHOD(setEnableBackgroundSendout:(BOOL)enabled
|
|
161
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
162
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
163
|
+
{
|
|
164
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
165
|
+
[[MappIntelligence shared] setEnableBackgroundSendout:true];
|
|
166
|
+
});
|
|
167
|
+
resolve(@1);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
RCT_EXPORT_METHOD(setBatchSupportSize:(NSInteger)size
|
|
171
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
172
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
173
|
+
{
|
|
174
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
175
|
+
[[MappIntelligence shared] setBatchSupportSize:size];
|
|
176
|
+
});
|
|
177
|
+
resolve(@1);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
RCT_EXPORT_METHOD(setRequestPerQueue:(NSInteger)numberOfRequsts
|
|
181
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
182
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
183
|
+
{
|
|
184
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
185
|
+
[[MappIntelligence shared] setRequestPerQueue:numberOfRequsts];
|
|
186
|
+
});
|
|
187
|
+
resolve(@1);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
RCT_EXPORT_METHOD(setShouldMigrate:(BOOL)migrate
|
|
192
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
193
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
194
|
+
{
|
|
195
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
196
|
+
[[MappIntelligence shared] setShouldMigrate:migrate];
|
|
197
|
+
});
|
|
198
|
+
resolve(@1);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
RCT_EXPORT_METHOD(setAnonymousTracking:(BOOL)anonymous
|
|
202
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
203
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
204
|
+
{
|
|
205
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
206
|
+
[[MappIntelligence shared] setAnonymousTracking:anonymous];
|
|
207
|
+
});
|
|
208
|
+
resolve(@1);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
RCT_EXPORT_METHOD(setSendAppVersionInEveryRequest:(BOOL)flag
|
|
212
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
213
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
214
|
+
{
|
|
215
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
216
|
+
[[MappIntelligence shared] setSendAppVersionInEveryRequest:flag];
|
|
217
|
+
});
|
|
218
|
+
resolve(@1);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
RCT_EXPORT_METHOD(setEnableUserMatching:(BOOL)enabled
|
|
222
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
223
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
224
|
+
{
|
|
225
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
226
|
+
[[MappIntelligence shared] setEnableUserMatching:enabled];
|
|
227
|
+
});
|
|
228
|
+
resolve(@1);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
RCT_EXPORT_METHOD(trackPage:(NSString*)pageTitle
|
|
232
|
+
reslove:(RCTPromiseResolveBlock)resolve
|
|
233
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
234
|
+
{
|
|
235
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
236
|
+
UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;
|
|
237
|
+
|
|
238
|
+
while (topController.presentedViewController) {
|
|
239
|
+
topController = topController.presentedViewController;
|
|
240
|
+
}
|
|
241
|
+
if(pageTitle) {
|
|
242
|
+
MIPageViewEvent* event = [[MIPageViewEvent alloc] initWithName:pageTitle];
|
|
243
|
+
[[MappIntelligence shared] trackPage:event];
|
|
244
|
+
} else {
|
|
245
|
+
[[MappIntelligence shared] trackPageWithViewController:topController pageViewEvent:NULL];
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
resolve(@1);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
RCT_EXPORT_METHOD(trackCustomPage:(NSString*)pageTitle
|
|
252
|
+
pageParameters:(NSDictionary*)pageParameters
|
|
253
|
+
sessionParamters:(NSDictionary*)sessionParamters
|
|
254
|
+
userCategories:(NSDictionary*)userCategories
|
|
255
|
+
ecommerceParameters:(NSDictionary*)ecommerceParameters
|
|
256
|
+
campaignParameters:(NSDictionary*)campaignParameters
|
|
257
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
258
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
259
|
+
{
|
|
260
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
261
|
+
MIPageViewEvent* event = [[MIPageViewEvent alloc] initWithName:pageTitle];
|
|
262
|
+
|
|
263
|
+
[event setPageParameters:[self preparePageParameters:pageParameters]];
|
|
264
|
+
[event setUserCategories:[self prepareUserCategories:userCategories]];
|
|
265
|
+
[event setSessionParameters:[self prepareSessionParameters:sessionParamters]];
|
|
266
|
+
[event setEcommerceParameters:[self prepareEcommerceParameters:ecommerceParameters]];
|
|
267
|
+
[event setCampaignParameters:[self prepareCampaignParameters:campaignParameters]];
|
|
268
|
+
[[MappIntelligence shared] trackPage:event];
|
|
269
|
+
});
|
|
270
|
+
resolve(@1);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
RCT_EXPORT_METHOD(trackPageWithCustomData:(NSDictionary*)pageParameters
|
|
274
|
+
pageTitle:(NSString*)pageTitle
|
|
275
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
276
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
277
|
+
{
|
|
278
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
279
|
+
[[MappIntelligence shared] trackCustomPage:pageTitle trackingParams:pageParameters];
|
|
280
|
+
});
|
|
281
|
+
resolve(@1);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
RCT_EXPORT_METHOD(trackAction:(NSString*)name
|
|
285
|
+
eventParameters:(NSDictionary*)eventParameters
|
|
286
|
+
sessionParamters:(NSDictionary*)sessionParamters
|
|
287
|
+
userCategories:(NSDictionary*)userCategories
|
|
288
|
+
ecommerceParameters:(NSDictionary*)ecommerceParameters
|
|
289
|
+
campaignParameters:(NSDictionary*)campaignParameters
|
|
290
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
291
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
292
|
+
{
|
|
293
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
294
|
+
MIActionEvent* actionEvent = [[MIActionEvent alloc] initWithName:name];
|
|
295
|
+
[actionEvent setEventParameters:[self prepareEventParamters:eventParameters]];
|
|
296
|
+
[actionEvent setUserCategories:[self prepareUserCategories:userCategories]];
|
|
297
|
+
[actionEvent setSessionParameters:[self prepareSessionParameters:sessionParamters]];
|
|
298
|
+
[actionEvent setEcommerceParameters:[self prepareEcommerceParameters:ecommerceParameters]];
|
|
299
|
+
[actionEvent setCampaignParameters:[self prepareCampaignParameters:campaignParameters]];
|
|
300
|
+
|
|
301
|
+
[[MappIntelligence shared] trackAction:actionEvent];
|
|
302
|
+
});
|
|
303
|
+
resolve(@1);
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
RCT_EXPORT_METHOD(trackUrl:(NSString*)url
|
|
307
|
+
mediaCode:(NSString*)mediaCode
|
|
308
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
309
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
310
|
+
{
|
|
311
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
312
|
+
|
|
313
|
+
[[MappIntelligence shared] trackUrl:[[NSURL alloc] initWithString:url] withMediaCode:mediaCode];
|
|
314
|
+
});
|
|
315
|
+
resolve(@1);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
#define key_name @"name"
|
|
319
|
+
#define key_action @"action"
|
|
320
|
+
#define key_bandwith @"bandwith"
|
|
321
|
+
#define key_duration @"duration"
|
|
322
|
+
#define key_position @"position"
|
|
323
|
+
#define key_sound_is_muted @"soundIsMuted"
|
|
324
|
+
#define key_sound_volume @"soundVolume"
|
|
325
|
+
#define key_custom_categories @"customCategories"
|
|
326
|
+
|
|
327
|
+
RCT_EXPORT_METHOD(trackCustomMedia:(NSString*)pageName
|
|
328
|
+
name:(NSString*)name
|
|
329
|
+
customParams:(NSDictionary*)customParams
|
|
330
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
331
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
332
|
+
{
|
|
333
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
334
|
+
MIMediaParameters* mParameters = [self prepareMediaParameters:customParams];
|
|
335
|
+
mParameters.name = name;
|
|
336
|
+
MIMediaEvent* mediaEvent = [[MIMediaEvent alloc] initWithPageName:pageName parameters:mParameters];
|
|
337
|
+
[[MappIntelligence shared] trackMedia:mediaEvent];
|
|
338
|
+
});
|
|
339
|
+
resolve(@1);
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
RCT_EXPORT_METHOD(trackMedia:(NSDictionary*)mediaEventDictionary
|
|
343
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
344
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
345
|
+
{
|
|
346
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
347
|
+
if(!mediaEventDictionary[@"parameters"]) {
|
|
348
|
+
NSLog(@"Media event must have page name");
|
|
349
|
+
}
|
|
350
|
+
MIMediaParameters* mParameters = [self prepareMediaParameters:mediaEventDictionary[@"parameters"]];
|
|
351
|
+
MIMediaEvent* mediaEvent = [[MIMediaEvent alloc] initWithPageName:mediaEventDictionary[@"parameters"][@"name"] parameters:mParameters];
|
|
352
|
+
[mediaEvent setEventParameters:[self prepareEventParamters:mediaEventDictionary[@"eventParameters"]]];
|
|
353
|
+
[mediaEvent setPageName:mediaEventDictionary[@"pageName"]];
|
|
354
|
+
[mediaEvent setSessionParameters:[self prepareSessionParameters:mediaEventDictionary[@"sessionParameters"]]];
|
|
355
|
+
[mediaEvent setEcommerceParameters:[self prepareEcommerceParameters:mediaEventDictionary[@"eCommerceParameters"]]];
|
|
356
|
+
|
|
357
|
+
[[MappIntelligence shared] trackMedia:mediaEvent];
|
|
358
|
+
});
|
|
359
|
+
resolve(@1);
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
RCT_EXPORT_METHOD(trackException:(NSString*)name
|
|
363
|
+
message:(NSString*)message
|
|
364
|
+
stackTrace:(NSString*)stackTrace
|
|
365
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
366
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
367
|
+
{
|
|
368
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
369
|
+
|
|
370
|
+
if (stackTrace) {
|
|
371
|
+
NSDictionary *userInfo = @{
|
|
372
|
+
NSLocalizedDescriptionKey: NSLocalizedString(message, nil),
|
|
373
|
+
NSLocalizedFailureReasonErrorKey: NSLocalizedString(stackTrace, nil),
|
|
374
|
+
NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"", nil)
|
|
375
|
+
};
|
|
376
|
+
NSError *error = [NSError errorWithDomain:name
|
|
377
|
+
code:-57
|
|
378
|
+
userInfo:userInfo];
|
|
379
|
+
[[MappIntelligence shared] trackExceptionWith:error];
|
|
380
|
+
} else {
|
|
381
|
+
[[MappIntelligence shared] trackExceptionWithName:name andWithMessage:message];
|
|
382
|
+
}
|
|
383
|
+
});
|
|
384
|
+
resolve(@1);
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
//MARK: helper methods
|
|
389
|
+
-(NSMutableDictionary*)getFromString:(NSString*)item {
|
|
390
|
+
NSString *jsonString = item;
|
|
391
|
+
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
|
|
392
|
+
NSError *error;
|
|
393
|
+
NSMutableDictionary *dataParam = [NSJSONSerialization JSONObjectWithData:jsonData
|
|
394
|
+
options:NSJSONReadingAllowFragments
|
|
395
|
+
error:&error];
|
|
396
|
+
return dataParam;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
-(MIPageParameters*)preparePageParameters:(NSDictionary*) pageParameters {
|
|
400
|
+
if (pageParameters == NULL) {
|
|
401
|
+
return NULL;
|
|
402
|
+
}
|
|
403
|
+
NSDictionary* pParameters = [self clearDictionaryFromNull:[pageParameters mutableCopy]];
|
|
404
|
+
MIPageParameters* parameter = [[MIPageParameters alloc] initWithPageParams:pParameters[@"params"] pageCategory:pParameters[@"categories"] search:pParameters[@"searchTerm"]];
|
|
405
|
+
return parameter;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
-(MIMediaParameters*)prepareMediaParameters:(NSDictionary*) mediaParameters {
|
|
409
|
+
if (mediaParameters == NULL) {
|
|
410
|
+
return NULL;
|
|
411
|
+
}
|
|
412
|
+
MIMediaParameters* testparams = [[MIMediaParameters alloc] initWithDictionary:mediaParameters];
|
|
413
|
+
if(testparams) {
|
|
414
|
+
return testparams;
|
|
415
|
+
}
|
|
416
|
+
NSMutableDictionary* dict = [[NSMutableDictionary alloc] init];
|
|
417
|
+
|
|
418
|
+
for (NSString *paramKey in mediaParameters.allKeys) {
|
|
419
|
+
id paramValue = mediaParameters[paramKey];
|
|
420
|
+
NSString *key = nil;
|
|
421
|
+
|
|
422
|
+
if ([paramKey isEqualToString:@"mk"]) {
|
|
423
|
+
key = key_action;
|
|
424
|
+
} else if ([paramKey isEqualToString:@"mt1"]) {
|
|
425
|
+
paramValue = [self extractFirstNumberFromString:mediaParameters[paramKey]];
|
|
426
|
+
key = key_position;
|
|
427
|
+
} else if ([paramKey isEqualToString:@"mt2"]) {
|
|
428
|
+
paramValue = [self extractFirstNumberFromString:mediaParameters[paramKey]];
|
|
429
|
+
key = key_duration;
|
|
430
|
+
} else if ([paramKey isEqualToString:@"mut"]) {
|
|
431
|
+
paramValue = [self extractFirstNumberFromString:mediaParameters[paramKey]];
|
|
432
|
+
key = key_sound_is_muted;
|
|
433
|
+
} else if ([paramKey isEqualToString:@"vol"]) {
|
|
434
|
+
paramValue = [self extractFirstNumberFromString:mediaParameters[paramKey]];
|
|
435
|
+
key = key_sound_volume;
|
|
436
|
+
} else if ([paramKey isEqualToString:@"bw"]) {
|
|
437
|
+
paramValue = [self extractFirstNumberFromString:mediaParameters[paramKey]];
|
|
438
|
+
key = key_bandwith;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
if (key) {
|
|
442
|
+
[dict setObject:paramValue forKey:key];
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
MIMediaParameters* mParameters = [[MIMediaParameters alloc] initWithDictionary:[self clearDictionaryFromNull:dict]];
|
|
446
|
+
return mParameters;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
- (NSNumber *)extractFirstNumberFromString:(NSString *)inputString {
|
|
450
|
+
NSScanner *scanner = [NSScanner scannerWithString:inputString];
|
|
451
|
+
NSCharacterSet *numbers = [NSCharacterSet decimalDigitCharacterSet];
|
|
452
|
+
BOOL found = [scanner scanCharactersFromSet:numbers intoString:nil];
|
|
453
|
+
|
|
454
|
+
if (found) {
|
|
455
|
+
NSInteger extractedNumber;
|
|
456
|
+
[scanner scanInteger:&extractedNumber];
|
|
457
|
+
return @(extractedNumber);
|
|
458
|
+
} else {
|
|
459
|
+
return nil;
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
-(MIEventParameters*)prepareEventParamters:(NSDictionary*) eventParameters {
|
|
464
|
+
if (eventParameters == NULL || eventParameters == [NSNull null]) {
|
|
465
|
+
return NULL;
|
|
466
|
+
}
|
|
467
|
+
NSDictionary* eParameters = [self clearDictionaryFromNull:[eventParameters mutableCopy]];
|
|
468
|
+
//this is difference from Android
|
|
469
|
+
id value = [eParameters objectForKey:@"customParameters"];
|
|
470
|
+
[eParameters setValue:value forKey:@"parameters"];
|
|
471
|
+
MIEventParameters* eventParamtersNew = [[MIEventParameters alloc] initWithDictionary:eParameters];
|
|
472
|
+
return eventParamtersNew;
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
-(MIUserCategories*)prepareUserCategories:(NSDictionary*) userCategories {
|
|
476
|
+
if (userCategories == NULL || userCategories == [NSNull null]) {
|
|
477
|
+
return NULL;
|
|
478
|
+
}
|
|
479
|
+
NSDictionary* uCategories = [self clearDictionaryFromNull:[userCategories mutableCopy]];
|
|
480
|
+
MIUserCategories* userCategoriesNew = [[MIUserCategories alloc] initWithDictionary:uCategories];
|
|
481
|
+
return userCategoriesNew;
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
-(MISessionParameters*)prepareSessionParameters:(NSDictionary*) sessionParamters {
|
|
485
|
+
if (sessionParamters == NULL || sessionParamters == [NSNull null]) {
|
|
486
|
+
return NULL;
|
|
487
|
+
}
|
|
488
|
+
NSDictionary* sParameters = [self clearDictionaryFromNull:[sessionParamters mutableCopy]];
|
|
489
|
+
MISessionParameters* sessionParamtersObject = [[MISessionParameters alloc] initWithParameters:sParameters];
|
|
490
|
+
return sessionParamtersObject;
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
-(MIEcommerceParameters*)prepareEcommerceParameters:(NSDictionary*) ecommerceParamters {
|
|
494
|
+
if (ecommerceParamters == NULL || ecommerceParamters == [NSNull null]) {
|
|
495
|
+
return NULL;
|
|
496
|
+
}
|
|
497
|
+
NSDictionary* eParameters = [self clearDictionaryFromNull:[ecommerceParamters mutableCopy]];
|
|
498
|
+
MIEcommerceParameters* ecommerceParamtersObject = [[MIEcommerceParameters alloc] initWithDictionary:eParameters];
|
|
499
|
+
return ecommerceParamtersObject;
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
-(MICampaignParameters*)prepareCampaignParameters:(NSDictionary*) campaignParamters {
|
|
503
|
+
if (campaignParamters == NULL || campaignParamters == [NSNull null]) {
|
|
504
|
+
return NULL;
|
|
505
|
+
}
|
|
506
|
+
NSDictionary* cParameters = [self clearDictionaryFromNull:[campaignParamters mutableCopy]];
|
|
507
|
+
MICampaignParameters* campaignParamtersObject = [[MICampaignParameters alloc] initWithDictionary:cParameters];
|
|
508
|
+
return campaignParamtersObject;
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
- (NSMutableDictionary *)clearDictionaryFromNull:(NSMutableDictionary *)dictionary {
|
|
512
|
+
NSArray *keysToRemove = [NSArray array];
|
|
513
|
+
|
|
514
|
+
for (NSString *key in dictionary.allKeys) {
|
|
515
|
+
if ([dictionary[key] isKindOfClass:[NSDictionary class]]) {
|
|
516
|
+
// Recursively clear nested dictionaries
|
|
517
|
+
NSMutableDictionary *nestedDict = [self clearDictionaryFromNull:dictionary[key]];
|
|
518
|
+
if (nestedDict == nil) {
|
|
519
|
+
keysToRemove = [keysToRemove arrayByAddingObject:key];
|
|
520
|
+
} else {
|
|
521
|
+
dictionary[key] = nestedDict;
|
|
522
|
+
}
|
|
523
|
+
} else if ([dictionary[key] isEqual:[NSNull null]]) {
|
|
524
|
+
keysToRemove = [keysToRemove arrayByAddingObject:key];
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
[dictionary removeObjectsForKeys:keysToRemove];
|
|
529
|
+
|
|
530
|
+
return dictionary;
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
@end
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.convertCampaignParameters = convertCampaignParameters;
|
|
7
|
+
exports.convertEcommerceParameters = convertEcommerceParameters;
|
|
8
|
+
exports.convertEventParameters = convertEventParameters;
|
|
9
|
+
exports.convertMediaEvent = convertMediaEvent;
|
|
10
|
+
exports.convertMediaParameters = convertMediaParameters;
|
|
11
|
+
exports.convertPageParameters = convertPageParameters;
|
|
12
|
+
exports.convertSessionParamters = convertSessionParamters;
|
|
13
|
+
exports.convertUserCategories = convertUserCategories;
|
|
14
|
+
//MARK: methods for converting objects
|
|
15
|
+
function convertUserCategories(userCategories) {
|
|
16
|
+
if (userCategories == null) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
console.log('convertUserCategories');
|
|
20
|
+
const birthday = userCategories?.birthday;
|
|
21
|
+
const categories = userCategories?.customCategories;
|
|
22
|
+
const userCategorisesDict = {
|
|
23
|
+
birthday: birthday != null ? {
|
|
24
|
+
day: birthday.day,
|
|
25
|
+
month: birthday.month,
|
|
26
|
+
year: birthday.year
|
|
27
|
+
} : null,
|
|
28
|
+
city: userCategories?.city,
|
|
29
|
+
country: userCategories?.country,
|
|
30
|
+
emailAddress: userCategories?.emailAddress,
|
|
31
|
+
emailReceiverId: userCategories?.emailReceiverId,
|
|
32
|
+
firstName: userCategories?.firstName,
|
|
33
|
+
gender: userCategories?.gender,
|
|
34
|
+
customerId: userCategories?.customerId,
|
|
35
|
+
lastName: userCategories?.lastName,
|
|
36
|
+
newsletterSubscribed: userCategories?.newsletterSubscribed,
|
|
37
|
+
phoneNumber: userCategories?.phoneNumber,
|
|
38
|
+
street: userCategories?.street,
|
|
39
|
+
streetNumber: userCategories?.streetNumber,
|
|
40
|
+
zipCode: userCategories?.zipCode,
|
|
41
|
+
customCategories: categories != null ? Object.fromEntries(categories.entries()) : null
|
|
42
|
+
};
|
|
43
|
+
return userCategorisesDict;
|
|
44
|
+
}
|
|
45
|
+
function convertPageParameters(pageParameters) {
|
|
46
|
+
console.log('convertPageParameters');
|
|
47
|
+
if (pageParameters == null) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
const params = pageParameters?.params;
|
|
51
|
+
const cat = pageParameters?.categories;
|
|
52
|
+
const page = {
|
|
53
|
+
params: params != null ? Object.fromEntries(params.entries()) : {},
|
|
54
|
+
categories: cat != null ? Object.fromEntries(cat) : {},
|
|
55
|
+
searchTerm: pageParameters?.searchTerm
|
|
56
|
+
};
|
|
57
|
+
return page;
|
|
58
|
+
}
|
|
59
|
+
function convertSessionParamters(sessionParamaters) {
|
|
60
|
+
console.log('convertSessionParamters');
|
|
61
|
+
if (sessionParamaters == null) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
const data = sessionParamaters?.parameters;
|
|
65
|
+
return data != null ? Object.fromEntries(data.entries()) : {};
|
|
66
|
+
}
|
|
67
|
+
function convertEcommerceParameters(ecommerceParameters) {
|
|
68
|
+
console.log('convertEcommerceParameters');
|
|
69
|
+
if (ecommerceParameters == null) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
let products = [];
|
|
73
|
+
ecommerceParameters.products?.map(item => {
|
|
74
|
+
let categories = item.categories;
|
|
75
|
+
let ecommercParams = item.ecommerceParameters;
|
|
76
|
+
products.push({
|
|
77
|
+
name: item?.name,
|
|
78
|
+
cost: item.cost,
|
|
79
|
+
quantity: item.quantity,
|
|
80
|
+
productAdvertiseID: item.productAdvertiseID,
|
|
81
|
+
productSoldOut: item.productSoldOut,
|
|
82
|
+
productVariant: item.productVariant,
|
|
83
|
+
categories: categories != null ? Object.fromEntries(categories.entries()) : {},
|
|
84
|
+
ecommerceParameters: ecommercParams != null ? Object.fromEntries(ecommercParams.entries()) : {}
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
const customParams = ecommerceParameters.customParameters;
|
|
88
|
+
const ecommerce = {
|
|
89
|
+
products: products,
|
|
90
|
+
status: ecommerceParameters.status,
|
|
91
|
+
currency: ecommerceParameters.currency,
|
|
92
|
+
orderID: ecommerceParameters.orderID,
|
|
93
|
+
orderValue: ecommerceParameters.orderValue,
|
|
94
|
+
returningOrNewCustomer: ecommerceParameters.returningOrNewCustomer,
|
|
95
|
+
returnValue: ecommerceParameters.returnValue,
|
|
96
|
+
cancellationValue: ecommerceParameters.cancellationValue,
|
|
97
|
+
couponValue: ecommerceParameters.couponValue,
|
|
98
|
+
paymentMethod: ecommerceParameters.paymentMethod,
|
|
99
|
+
shippingServiceProvider: ecommerceParameters.shippingServiceProvider,
|
|
100
|
+
shippingSpeed: ecommerceParameters.shippingSpeed,
|
|
101
|
+
shippingCost: ecommerceParameters.shippingCost,
|
|
102
|
+
markUp: ecommerceParameters.markUp,
|
|
103
|
+
orderStatus: ecommerceParameters.orderStatus,
|
|
104
|
+
customParameters: customParams != null ? Object.fromEntries(customParams.entries()) : {}
|
|
105
|
+
};
|
|
106
|
+
return ecommerce;
|
|
107
|
+
}
|
|
108
|
+
function convertCampaignParameters(campaignParameters) {
|
|
109
|
+
console.log('convertCapaignParameters');
|
|
110
|
+
if (campaignParameters == null) {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
const params = campaignParameters?.customParameters;
|
|
114
|
+
const campaign = {
|
|
115
|
+
campaignId: campaignParameters?.campaignId,
|
|
116
|
+
action: campaignParameters?.action,
|
|
117
|
+
mediaCode: campaignParameters?.mediaCode,
|
|
118
|
+
oncePerSession: campaignParameters?.oncePerSession,
|
|
119
|
+
customParameters: params != null ? Object.fromEntries(params.entries()) : {}
|
|
120
|
+
};
|
|
121
|
+
return campaign;
|
|
122
|
+
}
|
|
123
|
+
function convertEventParameters(event) {
|
|
124
|
+
if (event == null) {
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
const customParams = event.customParameters != null ? Object.fromEntries(event.customParameters?.entries()) : null;
|
|
128
|
+
const eventParams = {
|
|
129
|
+
customParameters: customParams
|
|
130
|
+
};
|
|
131
|
+
return eventParams;
|
|
132
|
+
}
|
|
133
|
+
function convertMediaParameters(mediaParam) {
|
|
134
|
+
if (mediaParam == null) {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
const params = {
|
|
138
|
+
name: mediaParam?.name,
|
|
139
|
+
action: mediaParam?.action,
|
|
140
|
+
position: mediaParam?.position,
|
|
141
|
+
duration: mediaParam?.duration,
|
|
142
|
+
bandwith: mediaParam?.bandwith,
|
|
143
|
+
soundIsMuted: mediaParam?.soundIsMuted,
|
|
144
|
+
soundVolume: mediaParam?.soundVolume,
|
|
145
|
+
customCategories: mediaParam?.customCategories != null ? Object.fromEntries(mediaParam.customCategories?.entries()) : null
|
|
146
|
+
};
|
|
147
|
+
return params;
|
|
148
|
+
}
|
|
149
|
+
function convertMediaEvent(mediaEvent) {
|
|
150
|
+
if (mediaEvent == null) {
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
const custom = mediaEvent.customParameters != null ? Object.fromEntries(mediaEvent?.customParameters?.entries()) : null;
|
|
154
|
+
const eCommerce = convertEcommerceParameters(mediaEvent.eCommerceParameters);
|
|
155
|
+
const session = convertSessionParamters(mediaEvent.sessionParameters);
|
|
156
|
+
const event = convertEventParameters(mediaEvent.eventParameters);
|
|
157
|
+
const mediaParams = convertMediaParameters(mediaEvent.parameters);
|
|
158
|
+
const data = {
|
|
159
|
+
pageName: mediaEvent.pageName,
|
|
160
|
+
parameters: mediaParams,
|
|
161
|
+
eventParameters: event,
|
|
162
|
+
sessionParameters: session,
|
|
163
|
+
eCommerceParameters: eCommerce,
|
|
164
|
+
customParameters: custom
|
|
165
|
+
};
|
|
166
|
+
return data;
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=Converters.js.map
|