react-native-mparticle 2.6.0 → 2.7.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/README.md
CHANGED
|
@@ -61,24 +61,23 @@ import mParticle_Apple_SDK
|
|
|
61
61
|
|
|
62
62
|
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
//override point for customization after application launch.
|
|
65
65
|
let mParticleOptions = MParticleOptions(key: "<<<App Key Here>>>", secret: "<<<App Secret Here>>>")
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
//optional- Please see the Identity page for more information on building this object
|
|
68
68
|
let request = MPIdentityApiRequest()
|
|
69
69
|
request.email = "email@example.com"
|
|
70
70
|
mParticleOptions.identifyRequest = request
|
|
71
|
+
//optional
|
|
71
72
|
mParticleOptions.onIdentifyComplete = { (apiResult, error) in
|
|
72
73
|
NSLog("Identify complete. userId = %@ error = %@", apiResult?.user.userId.stringValue ?? "Null User ID", error?.localizedDescription ?? "No Error Available")
|
|
73
74
|
}
|
|
75
|
+
//optional
|
|
74
76
|
mParticleOptions.onAttributionComplete = { (attributionResult, error) in
|
|
75
77
|
NSLog(@"Attribution Complete. attributionResults = %@", attributionResult.linkInfo)
|
|
76
78
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
MParticle.sharedInstance().start(with: mParticleOptions)
|
|
80
|
-
|
|
81
|
-
return true
|
|
79
|
+
MParticle.sharedInstance().start(with: mParticleOptions)
|
|
80
|
+
return true
|
|
82
81
|
}
|
|
83
82
|
```
|
|
84
83
|
|
|
@@ -110,13 +109,15 @@ Next, you'll need to start the SDK:
|
|
|
110
109
|
MParticleOptions *mParticleOptions = [MParticleOptions optionsWithKey:@"REPLACE ME"
|
|
111
110
|
secret:@"REPLACE ME"];
|
|
112
111
|
|
|
113
|
-
//Please see the Identity page for more information on building this object
|
|
112
|
+
//optional - Please see the Identity page for more information on building this object
|
|
114
113
|
MPIdentityApiRequest *request = [MPIdentityApiRequest requestWithEmptyUser];
|
|
115
114
|
request.email = @"email@example.com";
|
|
116
115
|
mParticleOptions.identifyRequest = request;
|
|
116
|
+
//optional
|
|
117
117
|
mParticleOptions.onIdentifyComplete = ^(MPIdentityApiResult * _Nullable apiResult, NSError * _Nullable error) {
|
|
118
118
|
NSLog(@"Identify complete. userId = %@ error = %@", apiResult.user.userId, error);
|
|
119
119
|
};
|
|
120
|
+
//optional
|
|
120
121
|
mParticleOptions.onAttributionComplete(MPAttributionResult * _Nullable attributionResult, NSError * _Nullable error) {
|
|
121
122
|
NSLog(@"Attribution Complete. attributionResults = %@", attributionResult.linkInfo)
|
|
122
123
|
}
|
|
@@ -138,29 +139,31 @@ See [Identity](http://docs.mparticle.com/developers/sdk/ios/identity/) for more
|
|
|
138
139
|
|
|
139
140
|
For more help, see [the Android set up docs](https://docs.mparticle.com/developers/sdk/android/getting-started/#create-an-input).
|
|
140
141
|
|
|
141
|
-
```
|
|
142
|
+
```kotlin
|
|
142
143
|
package com.example.myapp;
|
|
143
144
|
|
|
144
145
|
import android.app.Application;
|
|
145
146
|
import com.mparticle.MParticle;
|
|
146
147
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
.
|
|
148
|
+
class MyApplication : Application() {
|
|
149
|
+
fun onCreate() {
|
|
150
|
+
super.onCreate()
|
|
151
|
+
val options: MParticleOptions = MParticleOptions.builder(this)
|
|
152
|
+
.credentials("REPLACE ME WITH KEY", "REPLACE ME WITH SECRET")
|
|
153
|
+
//optional
|
|
154
|
+
.logLevel(MParticle.LogLevel.VERBOSE)
|
|
155
|
+
//optional
|
|
154
156
|
.identify(identifyRequest)
|
|
157
|
+
//optional
|
|
155
158
|
.identifyTask(
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
159
|
+
BaseIdentityTask()
|
|
160
|
+
.addFailureListener { errorResponse -> }
|
|
161
|
+
.addSuccessListener{ result -> }
|
|
162
|
+
)
|
|
163
|
+
//optional
|
|
160
164
|
.attributionListener(this)
|
|
161
|
-
.build()
|
|
162
|
-
|
|
163
|
-
MParticle.start(options);
|
|
165
|
+
.build()
|
|
166
|
+
MParticle.start(options)
|
|
164
167
|
}
|
|
165
168
|
}
|
|
166
169
|
```
|
package/android/build.gradle
CHANGED
|
@@ -47,7 +47,7 @@ dependencies {
|
|
|
47
47
|
//
|
|
48
48
|
// (See https://github.com/mparticle/mparticle-android-sdk for the latest version)
|
|
49
49
|
//
|
|
50
|
-
compileOnly 'com.mparticle:android-core:[5.9.3,
|
|
50
|
+
compileOnly 'com.mparticle:android-core:[5.9.3, 5.38.2]'
|
|
51
51
|
|
|
52
52
|
//
|
|
53
53
|
// And, if you want to include kits, you can do so as follows:
|
|
@@ -13,6 +13,8 @@ import com.facebook.react.bridge.Callback;
|
|
|
13
13
|
import com.facebook.react.bridge.ReadableType;
|
|
14
14
|
import com.facebook.react.bridge.WritableMap;
|
|
15
15
|
import com.facebook.react.bridge.WritableNativeMap;
|
|
16
|
+
import com.facebook.react.bridge.WritableArray;
|
|
17
|
+
import com.facebook.react.bridge.WritableNativeArray;
|
|
16
18
|
import com.mparticle.AttributionResult;
|
|
17
19
|
import com.mparticle.MParticle;
|
|
18
20
|
import com.mparticle.MPEvent;
|
|
@@ -86,9 +88,9 @@ public class MParticleModule extends ReactContextBaseJavaModule {
|
|
|
86
88
|
}
|
|
87
89
|
|
|
88
90
|
@ReactMethod
|
|
89
|
-
public void logScreenEvent(final String event, final ReadableMap attributesMap) {
|
|
91
|
+
public void logScreenEvent(final String event, final ReadableMap attributesMap, final boolean shouldUploadEvent) {
|
|
90
92
|
Map<String, String> attributes = ConvertStringMap(attributesMap);
|
|
91
|
-
MParticle.getInstance().logScreen(event, attributes);
|
|
93
|
+
MParticle.getInstance().logScreen(event, attributes, shouldUploadEvent);
|
|
92
94
|
}
|
|
93
95
|
|
|
94
96
|
@ReactMethod
|
|
@@ -121,7 +123,19 @@ public class MParticleModule extends ReactContextBaseJavaModule {
|
|
|
121
123
|
selectedUser.getUserAttributes(new UserAttributeListener() {
|
|
122
124
|
@Override
|
|
123
125
|
public void onUserAttributesReceived(Map<String, String> userAttributes, Map<String, List<String>> userAttributeLists, Long mpid) {
|
|
124
|
-
|
|
126
|
+
WritableMap resultMap = new WritableNativeMap();
|
|
127
|
+
for (Map.Entry<String, String> entry : userAttributes.entrySet()) {
|
|
128
|
+
resultMap.putString(entry.getKey(), entry.getValue());
|
|
129
|
+
}
|
|
130
|
+
for (Map.Entry<String, List<String>> entry : userAttributeLists.entrySet()) {
|
|
131
|
+
WritableArray resultArray = new WritableNativeArray();
|
|
132
|
+
List<String> valueList = entry.getValue();
|
|
133
|
+
for (String arrayVal : valueList) {
|
|
134
|
+
resultArray.pushString(arrayVal);
|
|
135
|
+
}
|
|
136
|
+
resultMap.putArray(entry.getKey(), resultArray);
|
|
137
|
+
}
|
|
138
|
+
completion.invoke(null, resultMap);
|
|
125
139
|
}
|
|
126
140
|
});
|
|
127
141
|
} else {
|
|
@@ -595,6 +609,19 @@ public class MParticleModule extends ReactContextBaseJavaModule {
|
|
|
595
609
|
if (map.hasKey("shouldUploadEvent")) {
|
|
596
610
|
builder.shouldUploadEvent(map.getBoolean("shouldUploadEvent"));
|
|
597
611
|
}
|
|
612
|
+
if (map.hasKey("customAttributes")) {
|
|
613
|
+
builder.customAttributes(ConvertStringMap(map.getMap("customAttributes")));
|
|
614
|
+
}
|
|
615
|
+
if (map.hasKey("currency")) {
|
|
616
|
+
builder.currency(map.getString("currency"));
|
|
617
|
+
}
|
|
618
|
+
if (map.hasKey("checkoutStep")) {
|
|
619
|
+
builder.checkoutStep(map.getInt("checkoutStep"));
|
|
620
|
+
}
|
|
621
|
+
if (map.hasKey("checkoutOptions")) {
|
|
622
|
+
builder.checkoutOptions(map.getString("checkoutOptions"));
|
|
623
|
+
}
|
|
624
|
+
|
|
598
625
|
|
|
599
626
|
return builder.build();
|
|
600
627
|
}
|
|
@@ -34,9 +34,9 @@ RCT_EXPORT_METHOD(logCommerceEvent:(MPCommerceEvent *)commerceEvent)
|
|
|
34
34
|
[[MParticle sharedInstance] logCommerceEvent:commerceEvent];
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
RCT_EXPORT_METHOD(logScreenEvent:(NSString *)screenName attributes:(NSDictionary *)attributes)
|
|
37
|
+
RCT_EXPORT_METHOD(logScreenEvent:(NSString *)screenName attributes:(NSDictionary *)attributes shouldUploadEvent:(BOOL)shouldUploadEvent)
|
|
38
38
|
{
|
|
39
|
-
[[MParticle sharedInstance] logScreen:screenName eventInfo:attributes];
|
|
39
|
+
[[MParticle sharedInstance] logScreen:screenName eventInfo:attributes shouldUploadEvent:shouldUploadEvent];
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
RCT_EXPORT_METHOD(setATTStatus:(NSInteger)status withATTStatusTimestampMillis:(nonnull NSNumber *)timestamp)
|
|
@@ -413,12 +413,14 @@ typedef NS_ENUM(NSUInteger, MPReactCommerceEventAction) {
|
|
|
413
413
|
commerceEvent.productListSource = json[@"productActionListSource"];
|
|
414
414
|
commerceEvent.screenName = json[@"screenName"];
|
|
415
415
|
commerceEvent.transactionAttributes = [RCTConvert MPTransactionAttributes:json[@"transactionAttributes"]];
|
|
416
|
-
commerceEvent.action = [RCTConvert MPCommerceEventAction:json[@"productActionType"]];
|
|
417
416
|
commerceEvent.checkoutStep = [json[@"checkoutStep"] intValue];
|
|
418
417
|
commerceEvent.nonInteractive = [json[@"nonInteractive"] boolValue];
|
|
419
418
|
if (json[@"shouldUploadEvent"] != nil) {
|
|
420
419
|
commerceEvent.shouldUploadEvent = [json[@"shouldUploadEvent"] boolValue];
|
|
421
420
|
}
|
|
421
|
+
if (json[@"customAttributes"] != nil) {
|
|
422
|
+
commerceEvent.customAttributes = json[@"customAttributes"];
|
|
423
|
+
}
|
|
422
424
|
|
|
423
425
|
NSMutableArray *products = [NSMutableArray array];
|
|
424
426
|
NSArray *jsonProducts = json[@"products"];
|
package/js/index.js
CHANGED
|
@@ -96,8 +96,8 @@ const logCommerceEvent = (commerceEvent) => {
|
|
|
96
96
|
NativeModules.MParticle.logCommerceEvent(commerceEvent)
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
const logScreenEvent = (screenName, attributes = null) => {
|
|
100
|
-
NativeModules.MParticle.logScreenEvent(screenName, attributes)
|
|
99
|
+
const logScreenEvent = (screenName, attributes = null, shouldUploadEvent = true) => {
|
|
100
|
+
NativeModules.MParticle.logScreenEvent(screenName, attributes, shouldUploadEvent)
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
// Use ATTAuthStatus constants for status
|
package/package.json
CHANGED