@appmetrica/react-native-analytics 3.3.0 → 3.5.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/android/build.gradle +1 -1
- package/android/src/main/AndroidManifest.xml +4 -0
- package/android/src/main/AndroidManifestNew.xml +5 -0
- package/android/src/main/java/io/appmetrica/analytics/reactnative/AppMetricaModule.java +60 -6
- package/android/src/main/java/io/appmetrica/analytics/reactnative/AppMetricaPackage.java +1 -0
- package/android/src/main/java/io/appmetrica/analytics/reactnative/ExceptionSerializer.java +91 -0
- package/android/src/main/java/io/appmetrica/analytics/reactnative/ExternalAttributionSerializer.java +16 -9
- package/android/src/main/java/io/appmetrica/analytics/reactnative/ReactNativeDeferredDeeplinkListener.java +48 -0
- package/android/src/main/java/io/appmetrica/analytics/reactnative/ReactNativeDeferredDeeplinkParametersListener.java +53 -0
- package/android/src/main/java/io/appmetrica/analytics/reactnative/ReporterModule.java +130 -0
- package/android/src/main/java/io/appmetrica/analytics/reactnative/Utils.java +58 -2
- package/appmetrica-react-native-analytics.podspec +1 -1
- package/ios/AMARNAppMetrica.m +77 -7
- package/ios/AMARNAppMetricaUtils.h +1 -0
- package/ios/AMARNAppMetricaUtils.m +49 -0
- package/ios/AMARNExceptionSerializer.h +6 -0
- package/ios/AMARNExceptionSerializer.m +65 -0
- package/ios/AMARNReporter.h +6 -0
- package/ios/AMARNReporter.m +131 -0
- package/lib/commonjs/deferredDeeplink.js +2 -0
- package/lib/commonjs/deferredDeeplink.js.map +1 -0
- package/lib/commonjs/error.js +71 -0
- package/lib/commonjs/error.js.map +1 -0
- package/lib/commonjs/index.js +53 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/reporter.js +69 -0
- package/lib/commonjs/reporter.js.map +1 -0
- package/lib/commonjs/revenue.js +1 -0
- package/lib/commonjs/revenue.js.map +1 -1
- package/lib/module/deferredDeeplink.js +2 -0
- package/lib/module/deferredDeeplink.js.map +1 -0
- package/lib/module/error.js +63 -0
- package/lib/module/error.js.map +1 -0
- package/lib/module/index.js +42 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/reporter.js +62 -0
- package/lib/module/reporter.js.map +1 -0
- package/lib/module/revenue.js +1 -0
- package/lib/module/revenue.js.map +1 -1
- package/lib/typescript/src/deferredDeeplink.d.ts +10 -0
- package/lib/typescript/src/deferredDeeplink.d.ts.map +1 -0
- package/lib/typescript/src/error.d.ts +19 -0
- package/lib/typescript/src/error.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +19 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/reporter.d.ts +51 -0
- package/lib/typescript/src/reporter.d.ts.map +1 -0
- package/lib/typescript/src/revenue.d.ts +1 -0
- package/lib/typescript/src/revenue.d.ts.map +1 -1
- package/package.json +3 -1
- package/src/deferredDeeplink.ts +11 -0
- package/src/error.ts +87 -0
- package/src/index.ts +79 -2
- package/src/reporter.ts +126 -0
- package/src/revenue.ts +1 -0
package/ios/AMARNAppMetrica.m
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
#import "AMARNUserProfileSerializer.h"
|
|
6
6
|
#import "AMARNExternalAttribution.h"
|
|
7
7
|
#import <AppMetricaCrashes/AppMetricaCrashes.h>
|
|
8
|
+
#import "AMARNExceptionSerializer.h"
|
|
8
9
|
|
|
9
10
|
@implementation AMARNAppMetrica
|
|
10
11
|
|
|
@@ -38,9 +39,13 @@ RCT_EXPORT_METHOD(reportAppOpen:(NSString *)deeplink)
|
|
|
38
39
|
[AMAAppMetrica trackOpeningURL:[NSURL URLWithString:deeplink]];
|
|
39
40
|
}
|
|
40
41
|
|
|
41
|
-
RCT_EXPORT_METHOD(reportError:(NSString *)identifier:(NSString *)message) {
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
RCT_EXPORT_METHOD(reportError:(NSString *)identifier:(NSString *)message:(NSDictionary *)_reason) {
|
|
43
|
+
[[[AMAAppMetricaCrashes crashes] pluginExtension] reportErrorWithIdentifier:identifier
|
|
44
|
+
message:message
|
|
45
|
+
details:amarn_exceptionForDictionary(_reason)
|
|
46
|
+
onFailure:^(NSError *error) {
|
|
47
|
+
NSLog(@"Failed to report error to AppMetrica: %@", [error localizedDescription]);
|
|
48
|
+
}];
|
|
44
49
|
}
|
|
45
50
|
|
|
46
51
|
RCT_EXPORT_METHOD(reportEvent:(NSString *)eventName:(NSDictionary *)attributes)
|
|
@@ -93,7 +98,7 @@ RCT_EXPORT_METHOD(setDataSendingEnabled:(BOOL)enabled)
|
|
|
93
98
|
|
|
94
99
|
RCT_EXPORT_METHOD(reportECommerce:(NSDictionary *)ecommerceDict)
|
|
95
100
|
{
|
|
96
|
-
|
|
101
|
+
[AMAAppMetrica reportECommerce:[AMARNAppMetricaUtils ecommerceForDict:ecommerceDict] onFailure:nil];
|
|
97
102
|
}
|
|
98
103
|
|
|
99
104
|
RCT_EXPORT_METHOD(setUserProfileID:(NSString *)userProfileID)
|
|
@@ -123,21 +128,86 @@ RCT_EXPORT_METHOD(putErrorEnvironmentValue:(NSString *)key:(NSString *)value)
|
|
|
123
128
|
|
|
124
129
|
RCT_EXPORT_METHOD(reportExternalAttribution:(NSDictionary *)externalAttributionsDict)
|
|
125
130
|
{
|
|
126
|
-
|
|
131
|
+
|
|
127
132
|
NSString *sourceStr = externalAttributionsDict[@"source"];
|
|
128
133
|
AMAAttributionSource source = amarn_getExternalAttributionSource(sourceStr);
|
|
129
134
|
if (source == nil) {
|
|
130
135
|
NSLog(@"Failed to report external attribution to AppMetrica. Unknown source %@", sourceStr);
|
|
131
136
|
return;
|
|
132
137
|
}
|
|
133
|
-
|
|
138
|
+
|
|
134
139
|
NSDictionary *value = externalAttributionsDict[@"value"];
|
|
135
|
-
|
|
140
|
+
|
|
136
141
|
[AMAAppMetrica reportExternalAttribution:value source:source onFailure:^(NSError *error) {
|
|
137
142
|
NSLog(@"Failed to report external attribution to AppMetrica: %@", [error localizedDescription]);
|
|
138
143
|
}];
|
|
139
144
|
}
|
|
140
145
|
|
|
146
|
+
RCT_EXPORT_METHOD(reportErrorWithoutIdentifier:(NSString *)message:(NSDictionary *)error)
|
|
147
|
+
{
|
|
148
|
+
AMAPluginErrorDetails *details = amarn_exceptionForDictionary(error);
|
|
149
|
+
if (details.backtrace.count == 0) {
|
|
150
|
+
[[[AMAAppMetricaCrashes crashes] pluginExtension] reportErrorWithIdentifier:@"Errors without stacktrace"
|
|
151
|
+
message:message
|
|
152
|
+
details:details
|
|
153
|
+
onFailure:^(NSError *error) {
|
|
154
|
+
NSLog(@"Failed to report error to AppMetrica: %@", [error localizedDescription]);
|
|
155
|
+
}];
|
|
156
|
+
} else {
|
|
157
|
+
[[[AMAAppMetricaCrashes crashes] pluginExtension] reportError:details message:message onFailure:^(NSError *error) {
|
|
158
|
+
NSLog(@"Failed to report error to AppMetrica: %@", [error localizedDescription]);
|
|
159
|
+
}];
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
RCT_EXPORT_METHOD(reportUnhandledException:(NSDictionary *)error)
|
|
164
|
+
{
|
|
165
|
+
[[[AMAAppMetricaCrashes crashes] pluginExtension] reportUnhandledException:amarn_exceptionForDictionary(error)
|
|
166
|
+
onFailure:^(NSError *error) {
|
|
167
|
+
NSLog(@"Failed to report unhandled exception to AppMetrica: %@", [error localizedDescription]);
|
|
168
|
+
}];
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
RCT_EXPORT_METHOD(putAppEnvironmentValue:(NSString *)key:(NSString *)value)
|
|
172
|
+
{
|
|
173
|
+
[AMAAppMetrica setAppEnvironmentValue:value forKey:key];
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
RCT_EXPORT_METHOD(clearAppEnvironment)
|
|
177
|
+
{
|
|
178
|
+
[AMAAppMetrica clearAppEnvironment];
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
RCT_EXPORT_METHOD(activateReporter:(NSDictionary *)configDict)
|
|
182
|
+
{
|
|
183
|
+
[AMAAppMetrica activateReporterWithConfiguration:[AMARNAppMetricaUtils reporterConfigurationForDictionary:configDict]];
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
RCT_EXPORT_METHOD(touchReporter:(NSString *)apiKey)
|
|
187
|
+
{
|
|
188
|
+
[AMAAppMetrica reporterForAPIKey:apiKey];
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
RCT_EXPORT_METHOD(getDeviceId:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
192
|
+
{
|
|
193
|
+
resolve([AMAAppMetrica deviceID]);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
RCT_EXPORT_METHOD(getUuid:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
197
|
+
{
|
|
198
|
+
resolve([AMAAppMetrica UUID]);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
RCT_EXPORT_METHOD(requestDeferredDeeplink:(RCTResponseSenderBlock)onFailure:(RCTResponseSenderBlock)onSuccess)
|
|
202
|
+
{
|
|
203
|
+
// It does nothing for iOS
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
RCT_EXPORT_METHOD(requestDeferredDeeplinkParameters:(RCTResponseSenderBlock)onFailure:(RCTResponseSenderBlock)onSuccess)
|
|
207
|
+
{
|
|
208
|
+
// It does nothing for iOS
|
|
209
|
+
}
|
|
210
|
+
|
|
141
211
|
- (NSObject *)wrap:(NSObject *)value
|
|
142
212
|
{
|
|
143
213
|
if (value == nil) {
|
|
@@ -22,5 +22,6 @@
|
|
|
22
22
|
+ (AMAAdType)toAdType:(NSString *)type;
|
|
23
23
|
+ (NSDictionary *)convertRevenueInfoPayload:(NSString *)payload;
|
|
24
24
|
+ (AMAUserProfile *)userProfileForDict:(NSDictionary *)userProfileDict;
|
|
25
|
+
+ (AMAMutableReporterConfiguration *)reporterConfigurationForDictionary:(NSDictionary *)configDict;
|
|
25
26
|
|
|
26
27
|
@end
|
|
@@ -43,6 +43,18 @@
|
|
|
43
43
|
if (configDict[@"userProfileID"] != nil) {
|
|
44
44
|
configuration.userProfileID = configDict[@"userProfileID"];
|
|
45
45
|
}
|
|
46
|
+
if (configDict[@"appEnvironment"] != nil) {
|
|
47
|
+
NSDictionary *appEnvironmentMap = configDict[@"appEnvironment"];
|
|
48
|
+
for (NSString *key in appEnvironmentMap) {
|
|
49
|
+
[AMAAppMetrica setAppEnvironmentValue:appEnvironmentMap[key] forKey:key];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (configDict[@"maxReportsCount"] != nil) {
|
|
53
|
+
configuration.maxReportsCount = [configDict[@"maxReportsCount"] unsignedIntegerValue];
|
|
54
|
+
}
|
|
55
|
+
if (configDict[@"dispatchPeriodSeconds"] != nil) {
|
|
56
|
+
configuration.dispatchPeriod = [configDict[@"dispatchPeriodSeconds"] unsignedIntegerValue];
|
|
57
|
+
}
|
|
46
58
|
|
|
47
59
|
return configuration;
|
|
48
60
|
}
|
|
@@ -353,6 +365,9 @@
|
|
|
353
365
|
if ([type isEqualToString:@"rewarded"]){
|
|
354
366
|
return AMAAdTypeRewarded;
|
|
355
367
|
}
|
|
368
|
+
if ([type isEqualToString:@"app_open"]){
|
|
369
|
+
return AMAAdTypeAppOpen;
|
|
370
|
+
}
|
|
356
371
|
if ([type isEqualToString:@"other"]){
|
|
357
372
|
return AMAAdTypeOther;
|
|
358
373
|
}
|
|
@@ -379,4 +394,38 @@
|
|
|
379
394
|
return amarn_deserializeUserProfile(userProfileDict);
|
|
380
395
|
}
|
|
381
396
|
|
|
397
|
+
+ (AMAMutableReporterConfiguration *)reporterConfigurationForDictionary:(NSDictionary *)configDict
|
|
398
|
+
{
|
|
399
|
+
NSString *apiKey = configDict[@"apiKey"];
|
|
400
|
+
AMAMutableReporterConfiguration *configuration = [[AMAMutableReporterConfiguration alloc] initWithAPIKey:apiKey];
|
|
401
|
+
if (configDict[@"logs"] != nil) {
|
|
402
|
+
configuration.logsEnabled = [configDict[@"logs"] boolValue];
|
|
403
|
+
}
|
|
404
|
+
if (configDict[@"maxReportsInDatabaseCount"] != nil) {
|
|
405
|
+
configuration.maxReportsInDatabaseCount = [configDict[@"maxReportsInDatabaseCount"] unsignedIntegerValue];
|
|
406
|
+
}
|
|
407
|
+
if (configDict[@"sessionTimeout"] != nil) {
|
|
408
|
+
configuration.sessionTimeout = [configDict[@"sessionTimeout"] unsignedIntegerValue];
|
|
409
|
+
}
|
|
410
|
+
if (configDict[@"dataSendingEnabled"] != nil) {
|
|
411
|
+
configuration.dataSendingEnabled = [configDict[@"dataSendingEnabled"] boolValue];
|
|
412
|
+
}
|
|
413
|
+
if (configDict[@"appEnvironment"] != nil) {
|
|
414
|
+
NSDictionary *appEnvironmentMap = configDict[@"appEnvironment"];
|
|
415
|
+
for (NSString *key in appEnvironmentMap) {
|
|
416
|
+
[AMAAppMetrica setAppEnvironmentValue:appEnvironmentMap[key] forKey:key];
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
if (configDict[@"userProfileID"] != nil) {
|
|
420
|
+
configuration.userProfileID = configDict[@"userProfileID"];
|
|
421
|
+
}
|
|
422
|
+
if (configDict[@"dispatchPeriodSeconds"] != nil) {
|
|
423
|
+
configuration.dispatchPeriod = [configDict[@"dispatchPeriodSeconds"] unsignedIntegerValue];
|
|
424
|
+
}
|
|
425
|
+
if (configDict[@"maxReportsCount"] != nil) {
|
|
426
|
+
configuration.maxReportsCount = [configDict[@"maxReportsCount"] unsignedIntegerValue];
|
|
427
|
+
}
|
|
428
|
+
return configuration;
|
|
429
|
+
}
|
|
430
|
+
|
|
382
431
|
@end
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
|
|
2
|
+
#import "AMARNExceptionSerializer.h"
|
|
3
|
+
|
|
4
|
+
NSNumber *amarn_parseNumber(NSString *string)
|
|
5
|
+
{
|
|
6
|
+
NSNumberFormatter *format = [[NSNumberFormatter alloc] init];
|
|
7
|
+
format.numberStyle = NSNumberFormatterDecimalStyle;
|
|
8
|
+
NSNumber *myNumber = [format numberFromString:string];
|
|
9
|
+
return myNumber;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
AMAStackTraceElement *amarn_deserializeTraceItem(NSDictionary *traceDict)
|
|
13
|
+
{
|
|
14
|
+
AMAStackTraceElement *item = [[AMAStackTraceElement alloc] init];
|
|
15
|
+
if (traceDict[@"fileName"] != nil) {
|
|
16
|
+
item.fileName = traceDict[@"fileName"];
|
|
17
|
+
}
|
|
18
|
+
if (traceDict[@"className"] != nil) {
|
|
19
|
+
item.className = traceDict[@"className"];
|
|
20
|
+
}
|
|
21
|
+
if (traceDict[@"methodName"] != nil) {
|
|
22
|
+
item.methodName = traceDict[@"methodName"];
|
|
23
|
+
}
|
|
24
|
+
if (traceDict[@"line"] != nil) {
|
|
25
|
+
item.line = amarn_parseNumber(traceDict[@"line"]);
|
|
26
|
+
}
|
|
27
|
+
if (traceDict[@"column"] != nil) {
|
|
28
|
+
item.column = amarn_parseNumber(traceDict[@"column"]);
|
|
29
|
+
}
|
|
30
|
+
return item;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
NSArray<AMAStackTraceElement *> *amarn_deserializeStackTrace(NSArray *frames)
|
|
34
|
+
{
|
|
35
|
+
NSMutableArray<AMAStackTraceElement *> *items = [[NSMutableArray alloc] init];
|
|
36
|
+
for (NSDictionary *frameDict in frames) {
|
|
37
|
+
[items addObject:amarn_deserializeTraceItem(frameDict)];
|
|
38
|
+
}
|
|
39
|
+
return items;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
AMAPluginErrorDetails *amarn_exceptionForDictionary(NSDictionary *configDict)
|
|
43
|
+
{
|
|
44
|
+
if (configDict == nil) {
|
|
45
|
+
return nil;
|
|
46
|
+
}
|
|
47
|
+
AMAPluginErrorDetails *error = [[AMAPluginErrorDetails alloc] init];
|
|
48
|
+
error.platform = kAMAPlatformReactNative;
|
|
49
|
+
if (configDict[@"errorName"] != nil) {
|
|
50
|
+
error.exceptionClass = configDict[@"errorName"];
|
|
51
|
+
}
|
|
52
|
+
if (configDict[@"message"] != nil) {
|
|
53
|
+
error.message = configDict[@"message"];
|
|
54
|
+
}
|
|
55
|
+
if (configDict[@"stackTrace"] != nil) {
|
|
56
|
+
error.backtrace = amarn_deserializeStackTrace(configDict[@"stackTrace"]);
|
|
57
|
+
}
|
|
58
|
+
if (configDict[@"virtualMachineVersion"] != nil) {
|
|
59
|
+
error.virtualMachineVersion = configDict[@"virtualMachineVersion"];
|
|
60
|
+
}
|
|
61
|
+
if (configDict[@"pluginEnvironment"] != nil) {
|
|
62
|
+
error.pluginEnvironment = configDict[@"pluginEnvironment"];
|
|
63
|
+
}
|
|
64
|
+
return error;
|
|
65
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
|
|
2
|
+
#import "AMARNReporter.h"
|
|
3
|
+
#import "AMARNAppMetricaUtils.h"
|
|
4
|
+
#import <AppMetricaCore/AppMetricaCore.h>
|
|
5
|
+
#import <AppMetricaCrashes/AppMetricaCrashes.h>
|
|
6
|
+
#import "AMARNUserProfileSerializer.h"
|
|
7
|
+
#import "AMARNExceptionSerializer.h"
|
|
8
|
+
|
|
9
|
+
@implementation AMARNReporter
|
|
10
|
+
|
|
11
|
+
RCT_EXPORT_MODULE(AppMetricaReporter)
|
|
12
|
+
|
|
13
|
+
RCT_EXPORT_METHOD(reportError:(NSString *)apiKey:(NSString *)identifier:(NSString *)message:(NSDictionary *)_reason)
|
|
14
|
+
{
|
|
15
|
+
id<AMAAppMetricaCrashReporting> reporter = [[AMAAppMetricaCrashes crashes] reporterForAPIKey:apiKey];
|
|
16
|
+
[[reporter pluginExtension] reportErrorWithIdentifier:identifier
|
|
17
|
+
message:message
|
|
18
|
+
details:amarn_exceptionForDictionary(_reason)
|
|
19
|
+
onFailure:^(NSError *error) {
|
|
20
|
+
NSLog(@"Failed to report error to AppMetrica: %@", [error localizedDescription]);
|
|
21
|
+
}];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
RCT_EXPORT_METHOD(reportErrorWithoutIdentifier:(NSString *)apiKey:(NSString *)message:(NSDictionary *)error)
|
|
25
|
+
{
|
|
26
|
+
id<AMAAppMetricaCrashReporting> reporter = [[AMAAppMetricaCrashes crashes] reporterForAPIKey:apiKey];
|
|
27
|
+
AMAPluginErrorDetails *details = amarn_exceptionForDictionary(error);
|
|
28
|
+
if (details.backtrace.count == 0) {
|
|
29
|
+
[[reporter pluginExtension] reportErrorWithIdentifier:@"Errors without stacktrace"
|
|
30
|
+
message:message
|
|
31
|
+
details:details
|
|
32
|
+
onFailure:^(NSError *error) {
|
|
33
|
+
NSLog(@"Failed to report error to AppMetrica: %@", [error localizedDescription]);
|
|
34
|
+
}];
|
|
35
|
+
} else {
|
|
36
|
+
[[reporter pluginExtension] reportError:details message:message onFailure:^(NSError *error) {
|
|
37
|
+
NSLog(@"Failed to report error to AppMetrica: %@", [error localizedDescription]);
|
|
38
|
+
}];
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
RCT_EXPORT_METHOD(reportUnhandledException:(NSString *)apiKey:(NSDictionary *)error)
|
|
43
|
+
{
|
|
44
|
+
id<AMAAppMetricaCrashReporting> reporter = [[AMAAppMetricaCrashes crashes] reporterForAPIKey:apiKey];
|
|
45
|
+
[[reporter pluginExtension] reportUnhandledException:amarn_exceptionForDictionary(error)
|
|
46
|
+
onFailure:^(NSError *error) {
|
|
47
|
+
NSLog(@"Failed to report unhandled exception to AppMetrica: %@", [error localizedDescription]);
|
|
48
|
+
}];
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
RCT_EXPORT_METHOD(reportEvent:(NSString *)apiKey:(NSString *)eventName:(NSDictionary *)attributes)
|
|
52
|
+
{
|
|
53
|
+
id<AMAAppMetricaReporting> reporter = [AMAAppMetrica reporterForAPIKey:apiKey];
|
|
54
|
+
if (attributes == nil) {
|
|
55
|
+
[reporter reportEvent:eventName onFailure:^(NSError *error) {
|
|
56
|
+
NSLog(@"error: %@", [error localizedDescription]);
|
|
57
|
+
}];
|
|
58
|
+
} else {
|
|
59
|
+
[reporter reportEvent:eventName parameters:attributes onFailure:^(NSError *error) {
|
|
60
|
+
NSLog(@"error: %@", [error localizedDescription]);
|
|
61
|
+
}];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
RCT_EXPORT_METHOD(pauseSession:(NSString *)apiKey)
|
|
66
|
+
{
|
|
67
|
+
id<AMAAppMetricaReporting> reporter = [AMAAppMetrica reporterForAPIKey:apiKey];
|
|
68
|
+
[reporter pauseSession];
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
RCT_EXPORT_METHOD(resumeSession:(NSString *)apiKey)
|
|
72
|
+
{
|
|
73
|
+
id<AMAAppMetricaReporting> reporter = [AMAAppMetrica reporterForAPIKey:apiKey];
|
|
74
|
+
[reporter resumeSession];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
RCT_EXPORT_METHOD(sendEventsBuffer:(NSString *)apiKey)
|
|
78
|
+
{
|
|
79
|
+
id<AMAAppMetricaReporting> reporter = [AMAAppMetrica reporterForAPIKey:apiKey];
|
|
80
|
+
[reporter sendEventsBuffer];
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
RCT_EXPORT_METHOD(putAppEnvironmentValue:(NSString *)apiKey:(NSString *)key:(NSString *)value)
|
|
84
|
+
{
|
|
85
|
+
id<AMAAppMetricaReporting> reporter = [AMAAppMetrica reporterForAPIKey:apiKey];
|
|
86
|
+
[reporter setAppEnvironmentValue:value forKey:key];
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
RCT_EXPORT_METHOD(clearAppEnvironment:(NSString *)apiKey)
|
|
90
|
+
{
|
|
91
|
+
id<AMAAppMetricaReporting> reporter = [AMAAppMetrica reporterForAPIKey:apiKey];
|
|
92
|
+
[reporter clearAppEnvironment];
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
RCT_EXPORT_METHOD(setUserProfileID:(NSString *)apiKey:(NSString *)userProfileID)
|
|
96
|
+
{
|
|
97
|
+
id<AMAAppMetricaReporting> reporter = [AMAAppMetrica reporterForAPIKey:apiKey];
|
|
98
|
+
[reporter setUserProfileID:userProfileID];
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
RCT_EXPORT_METHOD(setDataSendingEnabled:(NSString *)apiKey:(BOOL)enabled)
|
|
102
|
+
{
|
|
103
|
+
id<AMAAppMetricaReporting> reporter = [AMAAppMetrica reporterForAPIKey:apiKey];
|
|
104
|
+
[reporter setDataSendingEnabled:enabled];
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
RCT_EXPORT_METHOD(reportUserProfile:(NSString *)apiKey:(NSDictionary *)userProfileDict)
|
|
108
|
+
{
|
|
109
|
+
id<AMAAppMetricaReporting> reporter = [AMAAppMetrica reporterForAPIKey:apiKey];
|
|
110
|
+
[reporter reportUserProfile:[AMARNAppMetricaUtils userProfileForDict:userProfileDict] onFailure:nil];
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
RCT_EXPORT_METHOD(reportRevenue:(NSString *)apiKey:(NSDictionary *)revenueDict)
|
|
114
|
+
{
|
|
115
|
+
id<AMAAppMetricaReporting> reporter = [AMAAppMetrica reporterForAPIKey:apiKey];
|
|
116
|
+
[reporter reportRevenue:[AMARNAppMetricaUtils revenueForDict:revenueDict] onFailure:nil];
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
RCT_EXPORT_METHOD(reportAdRevenue:(NSString *)apiKey:(NSDictionary *)revenueDict)
|
|
120
|
+
{
|
|
121
|
+
id<AMAAppMetricaReporting> reporter = [AMAAppMetrica reporterForAPIKey:apiKey];
|
|
122
|
+
[reporter reportAdRevenue:[AMARNAppMetricaUtils adRevenueForDict:revenueDict] onFailure:nil];
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
RCT_EXPORT_METHOD(reportECommerce:(NSString *)apiKey:(NSDictionary *)ecommerceDict)
|
|
126
|
+
{
|
|
127
|
+
id<AMAAppMetricaReporting> reporter = [AMAAppMetrica reporterForAPIKey:apiKey];
|
|
128
|
+
[reporter reportECommerce:[AMARNAppMetricaUtils ecommerceForDict:ecommerceDict] onFailure:nil];
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
@end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["deferredDeeplink.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.AppMetricaError = void 0;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
const traceRegex = /^\s*at (.*?) ?\((.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i;
|
|
11
|
+
function parseTraceLine(line) {
|
|
12
|
+
const parts = traceRegex.exec(line);
|
|
13
|
+
if (parts === null) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
return {
|
|
17
|
+
fileName: parts[2],
|
|
18
|
+
methodName: parts[1],
|
|
19
|
+
column: parts[3],
|
|
20
|
+
line: parts[4]
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function getRNVersion() {
|
|
24
|
+
const versions = _reactNative.Platform.constants.reactNativeVersion;
|
|
25
|
+
return versions.major + '.' + versions.minor + '.' + versions.patch;
|
|
26
|
+
}
|
|
27
|
+
function getReactVersion() {
|
|
28
|
+
return _react.default.version;
|
|
29
|
+
}
|
|
30
|
+
function getPluginEnvironment() {
|
|
31
|
+
return {
|
|
32
|
+
reactVersion: getReactVersion()
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function parseStackTrace(stackTrace) {
|
|
36
|
+
if (stackTrace === undefined) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
const lines = stackTrace.split('\n');
|
|
41
|
+
const array = [];
|
|
42
|
+
lines === null || lines === void 0 || lines.forEach(line => {
|
|
43
|
+
const item = parseTraceLine(line);
|
|
44
|
+
if (item !== undefined) {
|
|
45
|
+
array.push(item);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
return array;
|
|
49
|
+
} catch (e) {
|
|
50
|
+
console.log(e);
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
class AppMetricaError {
|
|
55
|
+
constructor(errorName, message) {
|
|
56
|
+
this.errorName = errorName;
|
|
57
|
+
this.message = message;
|
|
58
|
+
this.pluginEnvironment = getPluginEnvironment();
|
|
59
|
+
this.virtualMachineVersion = getRNVersion();
|
|
60
|
+
}
|
|
61
|
+
static withError(error) {
|
|
62
|
+
const newError = new AppMetricaError(error.name, error.message);
|
|
63
|
+
newError.stackTrace = parseStackTrace(error.stack);
|
|
64
|
+
return newError;
|
|
65
|
+
}
|
|
66
|
+
static withObject(error) {
|
|
67
|
+
return new AppMetricaError(undefined, JSON.stringify(error));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.AppMetricaError = AppMetricaError;
|
|
71
|
+
//# sourceMappingURL=error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_react","_interopRequireDefault","e","__esModule","default","traceRegex","parseTraceLine","line","parts","exec","undefined","fileName","methodName","column","getRNVersion","versions","Platform","constants","reactNativeVersion","major","minor","patch","getReactVersion","React","version","getPluginEnvironment","reactVersion","parseStackTrace","stackTrace","lines","split","array","forEach","item","push","console","log","AppMetricaError","constructor","errorName","message","pluginEnvironment","virtualMachineVersion","withError","error","newError","name","stack","withObject","JSON","stringify","exports"],"sourceRoot":"../../src","sources":["error.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA0B,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE1B,MAAMG,UAAU,GAAG,qDAAqD;AAExE,SAASC,cAAcA,CAACC,IAAY,EAA8B;EAChE,MAAMC,KAAK,GAAGH,UAAU,CAACI,IAAI,CAACF,IAAI,CAAC;EACnC,IAAIC,KAAK,KAAK,IAAI,EAAE;IAClB,OAAOE,SAAS;EAClB;EACA,OAAO;IACLC,QAAQ,EAAEH,KAAK,CAAC,CAAC,CAAC;IAClBI,UAAU,EAAEJ,KAAK,CAAC,CAAC,CAAC;IACpBK,MAAM,EAAEL,KAAK,CAAC,CAAC,CAAC;IAChBD,IAAI,EAAEC,KAAK,CAAC,CAAC;EACf,CAAC;AACH;AAEA,SAASM,YAAYA,CAAA,EAAW;EAC9B,MAAMC,QAAQ,GAAGC,qBAAQ,CAACC,SAAS,CAACC,kBAAkB;EACtD,OAAOH,QAAQ,CAACI,KAAK,GAAG,GAAG,GAAGJ,QAAQ,CAACK,KAAK,GAAG,GAAG,GAAGL,QAAQ,CAACM,KAAK;AACrE;AAEA,SAASC,eAAeA,CAAA,EAAW;EACjC,OAAOC,cAAK,CAACC,OAAO;AACtB;AAEA,SAASC,oBAAoBA,CAAA,EAAuC;EAClE,OAAO;IACLC,YAAY,EAAEJ,eAAe,CAAC;EAChC,CAAC;AACH;AAEA,SAASK,eAAeA,CACtBC,UAAmB,EACgB;EACnC,IAAIA,UAAU,KAAKlB,SAAS,EAAE;IAC5B,OAAOA,SAAS;EAClB;EACA,IAAI;IACF,MAAMmB,KAAK,GAAGD,UAAU,CAACE,KAAK,CAAC,IAAI,CAAC;IACpC,MAAMC,KAA4B,GAAG,EAAE;IACvCF,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEG,OAAO,CAAEzB,IAAY,IAAK;MAC/B,MAAM0B,IAAI,GAAG3B,cAAc,CAACC,IAAI,CAAC;MACjC,IAAI0B,IAAI,KAAKvB,SAAS,EAAE;QACtBqB,KAAK,CAACG,IAAI,CAACD,IAAI,CAAC;MAClB;IACF,CAAC,CAAC;IACF,OAAOF,KAAK;EACd,CAAC,CAAC,OAAM7B,CAAC,EAAE;IACTiC,OAAO,CAACC,GAAG,CAAClC,CAAC,CAAC;IACd,OAAOQ,SAAS;EAClB;AACF;AAUO,MAAM2B,eAAe,CAAC;EAO3BC,WAAWA,CAACC,SAAkB,EAAEC,OAAgB,EAAE;IAChD,IAAI,CAACD,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACC,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,iBAAiB,GAAGhB,oBAAoB,CAAC,CAAC;IAC/C,IAAI,CAACiB,qBAAqB,GAAG5B,YAAY,CAAC,CAAC;EAC7C;EAEA,OAAO6B,SAASA,CAACC,KAAY,EAAmB;IAC9C,MAAMC,QAAQ,GAAG,IAAIR,eAAe,CAACO,KAAK,CAACE,IAAI,EAAEF,KAAK,CAACJ,OAAO,CAAC;IAC/DK,QAAQ,CAACjB,UAAU,GAAGD,eAAe,CAACiB,KAAK,CAACG,KAAK,CAAC;IAClD,OAAOF,QAAQ;EACjB;EAEA,OAAOG,UAAUA,CAACJ,KAAc,EAAmB;IACjD,OAAO,IAAIP,eAAe,CAAC3B,SAAS,EAAEuC,IAAI,CAACC,SAAS,CAACN,KAAK,CAAC,CAAC;EAC9D;AACF;AAACO,OAAA,CAAAd,eAAA,GAAAA,eAAA","ignoreList":[]}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -11,6 +11,8 @@ var _exportNames = {
|
|
|
11
11
|
exports.default = exports.UUID_KEY = exports.DEVICE_ID_KEY = exports.DEVICE_ID_HASH_KEY = void 0;
|
|
12
12
|
var _reactNative = require("react-native");
|
|
13
13
|
var _utils = require("./utils");
|
|
14
|
+
var _error = require("./error");
|
|
15
|
+
var _reporter = require("./reporter");
|
|
14
16
|
var _ecommerce = require("./ecommerce");
|
|
15
17
|
Object.keys(_ecommerce).forEach(function (key) {
|
|
16
18
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -59,6 +61,18 @@ Object.keys(_externalAttribution).forEach(function (key) {
|
|
|
59
61
|
}
|
|
60
62
|
});
|
|
61
63
|
});
|
|
64
|
+
var _deferredDeeplink = require("./deferredDeeplink");
|
|
65
|
+
Object.keys(_deferredDeeplink).forEach(function (key) {
|
|
66
|
+
if (key === "default" || key === "__esModule") return;
|
|
67
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
68
|
+
if (key in exports && exports[key] === _deferredDeeplink[key]) return;
|
|
69
|
+
Object.defineProperty(exports, key, {
|
|
70
|
+
enumerable: true,
|
|
71
|
+
get: function () {
|
|
72
|
+
return _deferredDeeplink[key];
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
});
|
|
62
76
|
const LINKING_ERROR = `The package '@appmetrica/react-native-analytics' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
|
|
63
77
|
ios: "- You have run 'pod install'\n",
|
|
64
78
|
default: ''
|
|
@@ -86,6 +100,7 @@ const DEVICE_ID_HASH_KEY = exports.DEVICE_ID_HASH_KEY = 'appmetrica_device_id_ha
|
|
|
86
100
|
const DEVICE_ID_KEY = exports.DEVICE_ID_KEY = 'appmetrica_device_id';
|
|
87
101
|
const UUID_KEY = exports.UUID_KEY = 'appmetrica_uuid';
|
|
88
102
|
class AppMetrica {
|
|
103
|
+
static reporters = new Map();
|
|
89
104
|
static activate(config) {
|
|
90
105
|
if (!activated) {
|
|
91
106
|
AppMetricaNative.activate(config);
|
|
@@ -110,7 +125,13 @@ class AppMetrica {
|
|
|
110
125
|
AppMetricaNative.reportAppOpen(deeplink);
|
|
111
126
|
}
|
|
112
127
|
static reportError(identifier, message, _reason) {
|
|
113
|
-
AppMetricaNative.reportError(identifier, message);
|
|
128
|
+
AppMetricaNative.reportError(identifier, message, _reason instanceof Error ? _error.AppMetricaError.withError(_reason) : _error.AppMetricaError.withObject(_reason));
|
|
129
|
+
}
|
|
130
|
+
static reportUnhandledException(error) {
|
|
131
|
+
AppMetricaNative.reportUnhandledException(_error.AppMetricaError.withError(error));
|
|
132
|
+
}
|
|
133
|
+
static reportErrorWithoutIdentifier(message, error) {
|
|
134
|
+
AppMetricaNative.reportErrorWithoutIdentifier(message, _error.AppMetricaError.withError(error));
|
|
114
135
|
}
|
|
115
136
|
static reportEvent(eventName, attributes) {
|
|
116
137
|
AppMetricaNative.reportEvent(eventName, attributes);
|
|
@@ -154,6 +175,37 @@ class AppMetrica {
|
|
|
154
175
|
static reportExternalAttribution(attribution) {
|
|
155
176
|
AppMetricaNative.reportExternalAttribution(attribution);
|
|
156
177
|
}
|
|
178
|
+
static putAppEnvironmentValue(key, value) {
|
|
179
|
+
AppMetricaNative.putAppEnvironmentValue(key, value);
|
|
180
|
+
}
|
|
181
|
+
static clearAppEnvironment() {
|
|
182
|
+
AppMetricaNative.clearAppEnvironment();
|
|
183
|
+
}
|
|
184
|
+
static getReporter(apiKey) {
|
|
185
|
+
if (AppMetrica.reporters.has(apiKey)) {
|
|
186
|
+
return AppMetrica.reporters.get(apiKey);
|
|
187
|
+
} else {
|
|
188
|
+
AppMetricaNative.touchReporter(apiKey);
|
|
189
|
+
const reporter = new _reporter.Reporter(apiKey);
|
|
190
|
+
AppMetrica.reporters.set(apiKey, reporter);
|
|
191
|
+
return reporter;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
static activateReporter(config) {
|
|
195
|
+
AppMetricaNative.activateReporter(config);
|
|
196
|
+
}
|
|
197
|
+
static getDeviceId() {
|
|
198
|
+
return AppMetricaNative.getDeviceId();
|
|
199
|
+
}
|
|
200
|
+
static getUuid() {
|
|
201
|
+
return AppMetricaNative.getUuid();
|
|
202
|
+
}
|
|
203
|
+
static requestDeferredDeeplink(listener) {
|
|
204
|
+
AppMetricaNative.requestDeferredDeeplink(listener.onFailure, listener.onSuccess);
|
|
205
|
+
}
|
|
206
|
+
static requestDeferredDeeplinkParameters(listener) {
|
|
207
|
+
AppMetricaNative.requestDeferredDeeplinkParameters(listener.onFailure, listener.onSuccess);
|
|
208
|
+
}
|
|
157
209
|
}
|
|
158
210
|
exports.default = AppMetrica;
|
|
159
211
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_utils","_ecommerce","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_revenue","_userProfile","_externalAttribution","LINKING_ERROR","Platform","select","ios","default","AppMetricaNative","NativeModules","AppMetrica","Proxy","Error","activated","appOpenTracking","getUrlAsync","initialUrl","Linking","getInitialURL","reportAppOpen","callback","event","url","addEventListener","DEVICE_ID_HASH_KEY","DEVICE_ID_KEY","UUID_KEY","activate","config","appOpenTrackingEnabled","getLibraryApiLevel","getLibraryVersion","pauseSession","deeplink","reportError","identifier","message","_reason","reportEvent","eventName","attributes","requestStartupParams","listener","identifiers","resumeSession","sendEventsBuffer","setLocation","location","setLocationTracking","enabled","setDataSendingEnabled","setUserProfileID","userProfileID","reportECommerce","reportRevenue","revenue","reportAdRevenue","adRevenue","normalizeAdRevenue","reportUserProfile","userProfile","putErrorEnvironmentValue","value","reportExternalAttribution","attribution"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAKA,IAAAC,MAAA,GAAAD,OAAA;
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_utils","_error","_reporter","_ecommerce","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_revenue","_userProfile","_externalAttribution","_deferredDeeplink","LINKING_ERROR","Platform","select","ios","default","AppMetricaNative","NativeModules","AppMetrica","Proxy","Error","activated","appOpenTracking","getUrlAsync","initialUrl","Linking","getInitialURL","reportAppOpen","callback","event","url","addEventListener","DEVICE_ID_HASH_KEY","DEVICE_ID_KEY","UUID_KEY","reporters","Map","activate","config","appOpenTrackingEnabled","getLibraryApiLevel","getLibraryVersion","pauseSession","deeplink","reportError","identifier","message","_reason","AppMetricaError","withError","withObject","reportUnhandledException","error","reportErrorWithoutIdentifier","reportEvent","eventName","attributes","requestStartupParams","listener","identifiers","resumeSession","sendEventsBuffer","setLocation","location","setLocationTracking","enabled","setDataSendingEnabled","setUserProfileID","userProfileID","reportECommerce","reportRevenue","revenue","reportAdRevenue","adRevenue","normalizeAdRevenue","reportUserProfile","userProfile","putErrorEnvironmentValue","value","reportExternalAttribution","attribution","putAppEnvironmentValue","clearAppEnvironment","getReporter","apiKey","has","touchReporter","reporter","Reporter","set","activateReporter","getDeviceId","getUuid","requestDeferredDeeplink","onFailure","onSuccess","requestDeferredDeeplinkParameters"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
|