Skip to content

Commit a1d8265

Browse files
author
Aaron Lopez
authored
Merge pull request #497 from sequoiaat/feature/v2Events
Feature/v2 events
2 parents ed40bb2 + f4b9447 commit a1d8265

File tree

11 files changed

+496
-3
lines changed

11 files changed

+496
-3
lines changed

examples/cordova1/config.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<?xml version='1.0' encoding='utf-8'?>
22
<widget id="com.eneff.branch.cordovatestbed" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
33
<branch-config>
4-
<branch-key value="key_live_ndqptlgXNE4LHqIahH1WIpbiyFlb62J3" />
4+
<branch-key value="key_test_amD23OLJP6x2xTgoOMnyypfdCtfYaudl" />
55
<uri-scheme value="branchcordova" />
6-
<link-domain value="cordova.app.link" />
6+
<link-domain value="i2f8.test-app.link" />
77
<ios-team-release value="PW4Q8885U7" />
88
</branch-config>
99
<preference name="android-minSdkVersion" value="16" />

examples/cordova1/platforms/android/app/src/main/java/io/branch/BranchSDK.java

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
import io.branch.referral.BranchError;
2424
import io.branch.referral.BranchViewHandler;
2525
import io.branch.referral.SharingHelper;
26+
import io.branch.referral.util.BRANCH_STANDARD_EVENT;
27+
import io.branch.referral.util.BranchEvent;
2628
import io.branch.referral.util.CommerceEvent;
2729
import io.branch.referral.util.CurrencyType;
2830
import io.branch.referral.util.Product;
@@ -139,6 +141,13 @@ public boolean execute(String action, JSONArray args, CallbackContext callbackCo
139141
}
140142
cordova.getActivity().runOnUiThread(r);
141143
return true;
144+
} else if (action.equals("sendBranchEvent")) {
145+
if (args.length() < 1 && args.length() > 2) {
146+
callbackContext.error(String.format("Parameter mismatched. 1-2 is required but %d is given", args.length()));
147+
return false;
148+
}
149+
cordova.getActivity().runOnUiThread(r);
150+
return true;
142151
} else if (action.equals("getFirstReferringParams")) {
143152
cordova.getActivity().runOnUiThread(r);
144153
return true;
@@ -745,6 +754,59 @@ private void sendCommerceEvent(JSONObject action, JSONObject metaData, CallbackC
745754

746755
}
747756

757+
public void sendBranchEvent(String eventName, JSONObject metaData, CallbackContext callbackContext) throws JSONException {
758+
759+
BranchEvent event;
760+
try {
761+
BRANCH_STANDARD_EVENT standardEvent = BRANCH_STANDARD_EVENT.valueOf(eventName);
762+
event = new BranchEvent(standardEvent);
763+
} catch(IllegalArgumentException e) {
764+
event = new BranchEvent(eventName);
765+
}
766+
767+
Iterator < String > keys = metaData.keys();
768+
while (keys.hasNext()) {
769+
String key = keys.next();
770+
if (key.equals("revenue")) {
771+
event.setRevenue(Double.parseDouble(metaData.getString("revenue")));
772+
} else if (key.equals("currency")) {
773+
String currencyString = metaData.getString("currency");
774+
CurrencyType currency = CurrencyType.getValue(currencyString);
775+
if (currency != null) {
776+
event.setCurrency(currency);
777+
}
778+
else {
779+
Log.d(LCAT, "Invalid currency " + currencyString);
780+
}
781+
} else if (key.equals("transactionID")) {
782+
event.setTransactionID(metaData.getString("transactionID"));
783+
} else if (key.equals("coupon")) {
784+
event.setCoupon(metaData.getString("coupon"));
785+
} else if (key.equals("shipping")) {
786+
event.setShipping(Double.parseDouble(metaData.getString("shipping")));
787+
} else if (key.equals("tax")) {
788+
event.setTax(Double.parseDouble(metaData.getString("tax")));
789+
} else if (key.equals("affiliation")) {
790+
event.setAffiliation(metaData.getString("affiliation"));
791+
} else if (key.equals("description")) {
792+
event.setDescription(metaData.getString("description"));
793+
} else if (key.equals("searchQuery")) {
794+
event.setSearchQuery(metaData.getString("searchQuery"));
795+
} else if (key.equals("customData")) {
796+
JSONObject customData = metaData.getJSONObject("customData");
797+
keys = customData.keys();
798+
799+
while (keys.hasNext()) {
800+
String keyValue = (String) keys.next();
801+
event.addCustomDataProperty(keyValue, customData.getString(keyValue));
802+
}
803+
}
804+
805+
}
806+
event.logEvent(this.activity);
807+
//callbackContext.success();
808+
}
809+
748810
/**
749811
* <p>Gets the credit history of the specified bucket and triggers a callback to handle the
750812
* response.</p>
@@ -1272,6 +1334,8 @@ public void run() {
12721334
}
12731335
} else if (this.action.equals("sendCommerceEvent")) {
12741336
sendCommerceEvent(this.args.getJSONObject(0), this.args.getJSONObject(1), this.callbackContext);
1337+
} else if (this.action.equals("sendBranchEvent")) {
1338+
sendBranchEvent(this.args.getString(0), this.args.getJSONObject(1), this.callbackContext);
12751339
} else if (this.action.equals("getFirstReferringParams")) {
12761340
getFirstReferringParams(this.callbackContext);
12771341
} else if (this.action.equals("getLatestReferringParams")) {

examples/cordova1/platforms/ios/Cordova1/Plugins/branch-cordova-sdk/BranchSDK.m

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,52 @@ - (void)userCompletedAction:(CDVInvokedUrlCommand*)command
231231
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
232232
}
233233

234+
-(void)sendBranchEvent:(CDVInvokedUrlCommand*)command
235+
{
236+
NSString *eventName = [command.arguments objectAtIndex:0];
237+
NSDictionary *metadata;
238+
if ([command.arguments count] == 2) {
239+
metadata = [command.arguments objectAtIndex:1];
240+
}
241+
BranchEvent *event = [BranchEvent customEventWithName:eventName];
242+
for (id key in metadata) {
243+
if ([key isEqualToString:@"transactionID"]) {
244+
event.transactionID = [metadata objectForKey:key];
245+
}
246+
else if ([key isEqualToString:@"currency"]) {
247+
event.currency = [metadata objectForKey:key];
248+
}
249+
else if ([key isEqualToString:@"shipping"]) {
250+
event.shipping = [metadata objectForKey:key];
251+
}
252+
else if ([key isEqualToString:@"tax"]) {
253+
event.tax = [NSDecimalNumber decimalNumberWithString:[metadata objectForKey:key]];
254+
}
255+
else if ([key isEqualToString:@"coupon"]) {
256+
event.coupon = [metadata objectForKey:key];
257+
}
258+
else if ([key isEqualToString:@"affiliation"]) {
259+
event.affiliation = [metadata objectForKey:key];
260+
}
261+
else if ([key isEqualToString:@"eventDescription"]) {
262+
event.eventDescription = [metadata objectForKey:key];
263+
}
264+
else if ([key isEqualToString:@"revenue"]) {
265+
event.revenue = [NSDecimalNumber decimalNumberWithString:[metadata objectForKey:key]];
266+
}
267+
else if ([key isEqualToString:@"searchQuery"]) {
268+
event.searchQuery = [metadata objectForKey:key];
269+
}
270+
else if ([key isEqualToString:@"description"]) {
271+
event.eventDescription = [metadata objectForKey:key];
272+
}
273+
else if ([key isEqualToString:@"customData"] && [[metadata objectForKey:key] isKindOfClass:[NSMutableDictionary class]]) {
274+
event.customData = [metadata objectForKey:key];
275+
}
276+
}
277+
[event logEvent];
278+
}
279+
234280
- (void)sendCommerceEvent:(CDVInvokedUrlCommand*)command
235281
{
236282
NSDictionary *data = [command.arguments objectAtIndex:0];

examples/cordova1/plugins/branch-cordova-sdk/src/android/io/branch/BranchSDK.java

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
import io.branch.referral.BranchError;
2424
import io.branch.referral.BranchViewHandler;
2525
import io.branch.referral.SharingHelper;
26+
import io.branch.referral.util.BRANCH_STANDARD_EVENT;
27+
import io.branch.referral.util.BranchEvent;
2628
import io.branch.referral.util.CommerceEvent;
2729
import io.branch.referral.util.CurrencyType;
2830
import io.branch.referral.util.Product;
@@ -139,6 +141,13 @@ public boolean execute(String action, JSONArray args, CallbackContext callbackCo
139141
}
140142
cordova.getActivity().runOnUiThread(r);
141143
return true;
144+
} else if (action.equals("sendBranchEvent")) {
145+
if (args.length() < 1 && args.length() > 2) {
146+
callbackContext.error(String.format("Parameter mismatched. 1-2 is required but %d is given", args.length()));
147+
return false;
148+
}
149+
cordova.getActivity().runOnUiThread(r);
150+
return true;
142151
} else if (action.equals("getFirstReferringParams")) {
143152
cordova.getActivity().runOnUiThread(r);
144153
return true;
@@ -745,6 +754,59 @@ private void sendCommerceEvent(JSONObject action, JSONObject metaData, CallbackC
745754

746755
}
747756

757+
public void sendBranchEvent(String eventName, JSONObject metaData, CallbackContext callbackContext) throws JSONException {
758+
759+
BranchEvent event;
760+
try {
761+
BRANCH_STANDARD_EVENT standardEvent = BRANCH_STANDARD_EVENT.valueOf(eventName);
762+
event = new BranchEvent(standardEvent);
763+
} catch(IllegalArgumentException e) {
764+
event = new BranchEvent(eventName);
765+
}
766+
767+
Iterator < String > keys = metaData.keys();
768+
while (keys.hasNext()) {
769+
String key = keys.next();
770+
if (key.equals("revenue")) {
771+
event.setRevenue(Double.parseDouble(metaData.getString("revenue")));
772+
} else if (key.equals("currency")) {
773+
String currencyString = metaData.getString("currency");
774+
CurrencyType currency = CurrencyType.getValue(currencyString);
775+
if (currency != null) {
776+
event.setCurrency(currency);
777+
}
778+
else {
779+
Log.d(LCAT, "Invalid currency " + currencyString);
780+
}
781+
} else if (key.equals("transactionID")) {
782+
event.setTransactionID(metaData.getString("transactionID"));
783+
} else if (key.equals("coupon")) {
784+
event.setCoupon(metaData.getString("coupon"));
785+
} else if (key.equals("shipping")) {
786+
event.setShipping(Double.parseDouble(metaData.getString("shipping")));
787+
} else if (key.equals("tax")) {
788+
event.setTax(Double.parseDouble(metaData.getString("tax")));
789+
} else if (key.equals("affiliation")) {
790+
event.setAffiliation(metaData.getString("affiliation"));
791+
} else if (key.equals("description")) {
792+
event.setDescription(metaData.getString("description"));
793+
} else if (key.equals("searchQuery")) {
794+
event.setSearchQuery(metaData.getString("searchQuery"));
795+
} else if (key.equals("customData")) {
796+
JSONObject customData = metaData.getJSONObject("customData");
797+
keys = customData.keys();
798+
799+
while (keys.hasNext()) {
800+
String keyValue = (String) keys.next();
801+
event.addCustomDataProperty(keyValue, customData.getString(keyValue));
802+
}
803+
}
804+
805+
}
806+
event.logEvent(this.activity);
807+
//callbackContext.success();
808+
}
809+
748810
/**
749811
* <p>Gets the credit history of the specified bucket and triggers a callback to handle the
750812
* response.</p>
@@ -1272,6 +1334,8 @@ public void run() {
12721334
}
12731335
} else if (this.action.equals("sendCommerceEvent")) {
12741336
sendCommerceEvent(this.args.getJSONObject(0), this.args.getJSONObject(1), this.callbackContext);
1337+
} else if (this.action.equals("sendBranchEvent")) {
1338+
sendBranchEvent(this.args.getString(0), this.args.getJSONObject(1), this.callbackContext);
12751339
} else if (this.action.equals("getFirstReferringParams")) {
12761340
getFirstReferringParams(this.callbackContext);
12771341
} else if (this.action.equals("getLatestReferringParams")) {

examples/cordova1/plugins/branch-cordova-sdk/src/index.js

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,28 @@
11
var exec = require("cordova/exec");
2-
var deviceVendor = window.clientInformation.vendor;
2+
var deviceVendor = (typeof window.clientInformation != 'undefined' && typeof window.clientInformation.vendor != 'undefined') ? window.clientInformation.vendor : "unknownVendor";
3+
34
// SDK Class
45
var API_CLASS = "BranchSDK";
56

7+
const standardEvent = {
8+
STANDARD_EVENT_ADD_TO_CART: "ADD_TO_CART",
9+
STANDARD_EVENT_ADD_TO_WISHLIST: "ADD_TO_WISHLIST",
10+
STANDARD_EVENT_VIEW_CART: "VIEW_CART",
11+
STANDARD_EVENT_INITIATE_PURCHASE: "INITIATE_PURCHASE",
12+
STANDARD_EVENT_ADD_PAYMENT_INFO: "ADD_PAYMENT_INFO",
13+
STANDARD_EVENT_PURCHASE: "PURCHASE",
14+
STANDARD_EVENT_SPEND_CREDITS: "SPEND_CREDITS",
15+
STANDARD_EVENT_SEARCH: "SEARCH",
16+
STANDARD_EVENT_VIEW_ITEM: "VIEW_ITEM",
17+
STANDARD_EVENT_VIEW_ITEMS: "VIEW_ITEMS",
18+
STANDARD_EVENT_RATE: "RATE",
19+
STANDARD_EVENT_SHARE: "SHARE",
20+
STANDARD_EVENT_COMPLETE_REGISTRATION: "COMPLETE_REGISTRATION",
21+
STANDARD_EVENT_COMPLETE_TUTORIAL: "COMPLETE_TUTORIAL",
22+
STANDARD_EVENT_ACHIEVE_LEVEL: "ACHIEVE_LEVEL",
23+
STANDARD_EVENT_UNLOCK_ACHIEVEMENT: "UNLOCK_ACHIEVEMENT"
24+
}
25+
626
// Branch prototype
727
var Branch = function Branch() {
828
this.debugMode = false;
@@ -13,6 +33,12 @@ var Branch = function Branch() {
1333
function execute(method, params) {
1434
var output = !params ? [] : params;
1535

36+
if (method == "getStandardEvents") {
37+
return new Promise(function promise(resolve, reject) {
38+
resolve(standardEvent);
39+
});
40+
}
41+
1642
return new Promise(function promise(resolve, reject) {
1743
exec(
1844
function success(res) {
@@ -103,6 +129,7 @@ Branch.prototype.logout = function logout() {
103129
return execute("logout");
104130
};
105131

132+
//DEPRECATED
106133
Branch.prototype.userCompletedAction = function userCompletedAction(
107134
action,
108135
metaData
@@ -119,6 +146,7 @@ Branch.prototype.userCompletedAction = function userCompletedAction(
119146
return execute("userCompletedAction", args);
120147
};
121148

149+
//DEPRECATED
122150
Branch.prototype.sendCommerceEvent = function sendCommerceEvent(
123151
action,
124152
metaData
@@ -135,6 +163,28 @@ Branch.prototype.sendCommerceEvent = function sendCommerceEvent(
135163
return execute("sendCommerceEvent", args);
136164
};
137165

166+
167+
Branch.prototype.getStandardEvents = function getStandardEvents() {
168+
return execute("getStandardEvents");
169+
170+
};
171+
172+
Branch.prototype.sendBranchEvent = function sendBranchEvent(
173+
action,
174+
metaData
175+
) {
176+
var args = [action];
177+
if (!action) {
178+
return executeReject("Please set a standard event");
179+
}
180+
181+
if (metaData) {
182+
args.push(metaData);
183+
}
184+
185+
return execute("sendBranchEvent", args);
186+
};
187+
138188
Branch.prototype.createBranchUniversalObject = function createBranchUniversalObject(
139189
options
140190
) {

examples/cordova1/plugins/branch-cordova-sdk/src/ios/BranchSDK.m

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,52 @@ - (void)userCompletedAction:(CDVInvokedUrlCommand*)command
231231
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
232232
}
233233

234+
-(void)sendBranchEvent:(CDVInvokedUrlCommand*)command
235+
{
236+
NSString *eventName = [command.arguments objectAtIndex:0];
237+
NSDictionary *metadata;
238+
if ([command.arguments count] == 2) {
239+
metadata = [command.arguments objectAtIndex:1];
240+
}
241+
BranchEvent *event = [BranchEvent customEventWithName:eventName];
242+
for (id key in metadata) {
243+
if ([key isEqualToString:@"transactionID"]) {
244+
event.transactionID = [metadata objectForKey:key];
245+
}
246+
else if ([key isEqualToString:@"currency"]) {
247+
event.currency = [metadata objectForKey:key];
248+
}
249+
else if ([key isEqualToString:@"shipping"]) {
250+
event.shipping = [metadata objectForKey:key];
251+
}
252+
else if ([key isEqualToString:@"tax"]) {
253+
event.tax = [NSDecimalNumber decimalNumberWithString:[metadata objectForKey:key]];
254+
}
255+
else if ([key isEqualToString:@"coupon"]) {
256+
event.coupon = [metadata objectForKey:key];
257+
}
258+
else if ([key isEqualToString:@"affiliation"]) {
259+
event.affiliation = [metadata objectForKey:key];
260+
}
261+
else if ([key isEqualToString:@"eventDescription"]) {
262+
event.eventDescription = [metadata objectForKey:key];
263+
}
264+
else if ([key isEqualToString:@"revenue"]) {
265+
event.revenue = [NSDecimalNumber decimalNumberWithString:[metadata objectForKey:key]];
266+
}
267+
else if ([key isEqualToString:@"searchQuery"]) {
268+
event.searchQuery = [metadata objectForKey:key];
269+
}
270+
else if ([key isEqualToString:@"description"]) {
271+
event.eventDescription = [metadata objectForKey:key];
272+
}
273+
else if ([key isEqualToString:@"customData"] && [[metadata objectForKey:key] isKindOfClass:[NSMutableDictionary class]]) {
274+
event.customData = [metadata objectForKey:key];
275+
}
276+
}
277+
[event logEvent];
278+
}
279+
234280
- (void)sendCommerceEvent:(CDVInvokedUrlCommand*)command
235281
{
236282
NSDictionary *data = [command.arguments objectAtIndex:0];

examples/cordova1/www/index.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@
5050
<section>
5151
<button id="branchEvent">Create</button>
5252
<button id="branchCommerce">Commerce</button>
53+
<button id="branchStandardEvent">Standard</button>
54+
<button id="branchCustomEvent">Custom</button>
5355
</section>
5456
</fieldset>
5557
<fieldset>

0 commit comments

Comments
 (0)