Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 26 additions & 39 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,31 +26,19 @@ Installing com.adjust.sdk (ios)

### 3. Integrate with your app

You can call the adjust plugin when the `'deviceready'` javascript event from
Cordova is called. You can use the binding for this event in the initial file
`www/js/index.js` or create your own. Inside this fuction you can call the
`appDidLaunch` function. This tells adjust about the launch of your
Application:
The adjust plugin automatically registers with the cordova events `deviceready`, `resume` and `pause`.
To configure the parameters of your app to adjust, follow these steps:

```javascript
document.addEventListener('deviceready', function () {
var appToken = '{YourAppToken}';
var environment = 'sandbox';
var logLevel = 'info';
var enableEventBuffering = false;

Adjust.appDidLaunch(appToken, environment, logLevel, enableEventBuffering);
});
```

Replace `{YourAppToken}` with your App Token. You can find in your [dashboard].
1. Open the file `plugins/com.adjust.sdk/config/adjust.json`.
2. Replace the `appToken` value with the App Token that you can find in your [dashboard].
3. Copy the the adjust hook folder `plugins/com.adjust.sdk/hooks` to the root of your project. It contains the script to replace the configuration values from the `adjust.json` file.

Depending on whether or not you build your app for testing or for production
you must set the var `var environment` with one of these values:
you must set the key `environment` with one of these values:

```javascript
var environment = 'sandbox';
var environment = 'production';
"environment" : "sandbox"
"environment" : "production"
```

**Important:** This value should be set to `sandbox` if and only if you or
Expand All @@ -62,31 +50,21 @@ We use this environment to distinguish between real traffic and artificial
traffic from test devices. It is very important that you keep this value
meaningful at all times! Especially if you are tracking revenue.

You can increase or decrease the amount of logs you see by setting the `var
logLevel` with one of the following values:
You can increase or decrease the amount of logs you see by setting the key
`logLevel` with one of the following values:

```javascript
var logLevel = 'verbose'; // enable all logging
var logLevel = 'debug'; // enable more logging
var logLevel = 'info'; // the default
var logLevel = 'warn'; // disable info logging
var logLevel = 'error'; // disable warnings as well
var logLevel = 'assert'; // disable errors as well
"logLevel" : "verbose" // enable all logging
"logLevel" : "debug" // enable more logging
"logLevel" : "info" // the default
"logLevel" : "warn" // disable info logging
"logLevel" : "error" // disable warnings as well
"logLevel" : "assert" // disable errors as well
```

If your app makes heavy use of event tracking, you might want to delay some
HTTP requests in order to send them in one batch every minute. You can enable
event buffering by setting the `var enableEventBuffering` to `true`.

To provide proper session tracking it is required to call certain Adjust
function every time the app resumes or pauses. Otherwise the SDK might miss a
session start or session end. In order to do so you should add these binding
for the Cordova events:

```javascript
document.addEventListener('pause', function () { Adjust.onPause(); });
document.addEventListener('resume', function() { Adjust.onResume(); });
```
event buffering by setting the key `enableEventBuffering` to `true`.

## Additional Features

Expand Down Expand Up @@ -184,6 +162,7 @@ failed to track. Within the callback function you have access to the
session
event
revenue
reattribution
```

- `success` indicates whether or not the tracking attempt was successful.
Expand All @@ -196,6 +175,14 @@ failed to track. Within the callback function you have access to the
request failed or response could not be parsed.
- `trackerName` the tracker name of the current install. Is `undefined` if
request failed or response could not be parsed.
- `network` the first grouping level of the tracker name. Is `undefined` if
request failed or response could not be parsed.
- `campaign` the second grouping level of the tracker name. Is `undefined` if
request failed or response could not be parsed.
- `adgroup` the third grouping level of the tracker name. Is `undefined` if
request failed or response could not be parsed.
- `creative` the fourth grouping level of the tracker name. Is `undefined` if
request failed or response could not be parsed.

Please make sure to consider [applicable attribution data policies.][attribution-data]

Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.0.0
3.4.0
6 changes: 6 additions & 0 deletions config/adjust.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"appToken" : "{yourAppToken}",
"environment" : "sandbox",
"logLevel" : "info",
"enableEventBuffering" : "false"
}
68 changes: 68 additions & 0 deletions hooks/after_prepare/replace_adjust.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
#!/usr/bin/env node

var fs = require('fs');
var path = require('path');

function replaceStringInFile(filename, to_replace, replace_with) {
var data = fs.readFileSync(filename, 'utf8');

var result = data.replace(new RegExp(to_replace, "g"), replace_with);
fs.writeFileSync(filename, result, 'utf8');
}

function getRootDir() {
var rootDir = process.argv[2];
if (!rootDir){
console.log("replace_adjust missing root folder: " + rootDir);
}
return rootDir;
}

function getConfigJson(rootDir) {
var configFilename = path.join(rootDir, "plugins/com.adjust.sdk/config", "adjust.json");
var configJson = null;

if (!fs.existsSync(configFilename)) {
console.log("replace_adjust missing config file: " + configFilename);
return null;
}

try {
var configFile = fs.readFileSync(configFilename, 'utf8');
var configJson = JSON.parse(configFile);
} catch(err) {
console.log("replace_adjust err:", err.message);
return null;
}

return configJson;
}

function main() {
var rootDir = getRootDir();
if (!rootDir) { return; }

var configJson = getConfigJson(rootDir);
if (!configJson) { return; }

var filePaths= [
// android
"platforms/android/assets/www/plugins/com.adjust.sdk/www/adjust.js",
// ios
"platforms/ios/www/plugins/com.adjust.sdk/www/adjust.js"
];

filePaths.forEach(function(val, index, array) {
var fullFilename = path.join(rootDir, val);
if (fs.existsSync(fullFilename)) {
for(key in configJson) {
var adjust_key = "{adjust_" + key + "}";
replaceStringInFile(fullFilename, adjust_key, configJson[key]);
}
} else {
console.log("replace_adjust missing target file: " + fullFilename);
}
});
}

main();
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"version": "3.0.0",
"version": "3.4.0",
"name": "com.adjust.cordova",
"cordova_name": "Adjust SDK Cordova Plugin",
"description": "Cordova plugin for the Adjust SDK 3.0.0",
"description": "Cordova plugin for the Adjust SDK 3.4.0",
"license": "MIT License",
"platforms": [
"ios",
Expand All @@ -18,4 +18,4 @@
"version": ">=3.1.0"
}
]
}
}
2 changes: 1 addition & 1 deletion plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
xmlns:android="http://schemas.android.com/apk/res/android"
id="com.adjust.sdk"
version="3.0.0">
version="3.4.0">

<name>Adjust</name>
<description>Adjust plugin for Cordova</description>
Expand Down
2 changes: 1 addition & 1 deletion src/android/Adjust
Submodule Adjust updated 38 files
+2 −0 .gitignore
+1 −0 Adjust/AndroidManifest.xml
+9 −9 Adjust/build.gradle
+4 −0 Adjust/gradle.properties
+23 −1 Adjust/pom.xml
+208 −70 Adjust/src/com/adjust/sdk/ActivityHandler.java
+9 −5 Adjust/src/com/adjust/sdk/ActivityKind.java
+1 −1 Adjust/src/com/adjust/sdk/ActivityPackage.java
+18 −2 Adjust/src/com/adjust/sdk/ActivityState.java
+44 −5 Adjust/src/com/adjust/sdk/Adjust.java
+2 −2 Adjust/src/com/adjust/sdk/Constants.java
+3 −1 Adjust/src/com/adjust/sdk/IPackageHandler.java
+17 −15 Adjust/src/com/adjust/sdk/LogCatLogger.java
+6 −6 Adjust/src/com/adjust/sdk/Logger.java
+57 −19 Adjust/src/com/adjust/sdk/PackageBuilder.java
+17 −9 Adjust/src/com/adjust/sdk/PackageHandler.java
+129 −0 Adjust/src/com/adjust/sdk/Reflection.java
+16 −11 Adjust/src/com/adjust/sdk/RequestHandler.java
+63 −13 Adjust/src/com/adjust/sdk/ResponseData.java
+96 −95 Adjust/src/com/adjust/sdk/Util.java
+10 −0 Adjust/src/com/adjust/sdk/deviceIds/AndroidIdUtil.java
+82 −0 Adjust/src/com/adjust/sdk/deviceIds/MacAddressUtil.java
+28 −1 Adjust/test/src/com/adjust/sdk/test/MockHttpClient.java
+0 −58 Adjust/test/src/com/adjust/sdk/test/MockHttpEntity.java
+0 −154 Adjust/test/src/com/adjust/sdk/test/MockHttpResponse.java
+13 −17 Adjust/test/src/com/adjust/sdk/test/MockLogger.java
+5 −2 Adjust/test/src/com/adjust/sdk/test/MockPackageHandler.java
+0 −27 Adjust/test/src/com/adjust/sdk/test/MockStatusLine.java
+213 −10 Adjust/test/src/com/adjust/sdk/test/TestActivityHandler.java
+18 −18 Adjust/test/src/com/adjust/sdk/test/TestPackageHandler.java
+45 −1 Adjust/test/src/com/adjust/sdk/test/TestRequestHandler.java
+2 −2 MIT-LICENSE
+55 −8 README.md
+1 −1 VERSION
+16 −0 doc/google_play_services.md
+4 −4 doc/migrate.md
+42 −0 doc/mixpanel.md
+1 −1 doc/preinstalled.md
19 changes: 16 additions & 3 deletions src/android/com/adjust/sdk/AdjustCordova.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ public class AdjustCordova extends CordovaPlugin implements OnFinishedListener {
public boolean execute(String action, JSONArray args,
CallbackContext callbackContext) throws JSONException {
if (action.equals("appDidLaunch")) {

String appToken = args.getString(0);
String environment = args.getString(1);
String logLevel = args.getString(2);
Expand All @@ -31,7 +30,9 @@ public boolean execute(String action, JSONArray args,
Adjust.appDidLaunch(this.cordova.getActivity(), appToken,
environment, logLevel, eventBuffering);

Adjust.setSdkPrefix("cordova3.0.0");
Adjust.setSdkPrefix("cordova3.4.0");
Adjust.onResume(this.cordova.getActivity());

return true;
} else if (action.equals("trackEvent")) {
String eventToken = args.getString(0);
Expand Down Expand Up @@ -72,8 +73,21 @@ public boolean execute(String action, JSONArray args,
} else if (action.equals("onResume")) {
Adjust.onResume(this.cordova.getActivity());

return true;
} else if (action.equals("setEnabled")) {
Boolean enabled = args.getBoolean(0);
Adjust.setEnabled(enabled);

return true;
} else if (action.equals("isEnabled")) {
Boolean isEnabled = Adjust.isEnabled();
PluginResult pluginResult = new PluginResult(Status.OK,
isEnabled);
callbackContext.sendPluginResult(pluginResult);

return true;
}

String errorMessage = String.format("Invalid call (%s)", action);

Logger logger = AdjustFactory.getLogger();
Expand Down Expand Up @@ -108,5 +122,4 @@ private Map<String, String> jsonObjectToMap(JSONObject jsonObject)
}
return map;
}

}
2 changes: 1 addition & 1 deletion src/ios/Adjust
Submodule Adjust updated 63 files
+12 −11 Adjust.podspec
+53 −5 Adjust.xcodeproj/project.pbxproj
+7 −2 Adjust/AIActivityHandler.h
+148 −14 Adjust/AIActivityHandler.m
+6 −5 Adjust/AIActivityKind.h
+8 −5 Adjust/AIActivityKind.m
+1 −1 Adjust/AIActivityPackage.h
+1 −1 Adjust/AIActivityPackage.m
+2 −1 Adjust/AIActivityState.h
+8 −1 Adjust/AIActivityState.m
+1 −1 Adjust/AIAdditions/NSData+AIAdditions.h
+1 −1 Adjust/AIAdditions/NSData+AIAdditions.m
+1 −1 Adjust/AIAdditions/NSString+AIAdditions.h
+1 −1 Adjust/AIAdditions/NSString+AIAdditions.m
+4 −2 Adjust/AIAdditions/UIDevice+AIAdditions.h
+33 −1 Adjust/AIAdditions/UIDevice+AIAdditions.m
+1 −1 Adjust/AIAdjustFactory.h
+1 −1 Adjust/AIAdjustFactory.m
+4 −1 Adjust/AILogger.h
+24 −1 Adjust/AILogger.m
+9 −1 Adjust/AIPackageBuilder.h
+36 −16 Adjust/AIPackageBuilder.m
+2 −2 Adjust/AIPackageHandler.h
+11 −3 Adjust/AIPackageHandler.m
+1 −1 Adjust/AIRequestHandler.h
+11 −5 Adjust/AIRequestHandler.m
+16 −3 Adjust/AIResponseData.h
+33 −10 Adjust/AIResponseData.m
+1 −1 Adjust/AITimer.h
+1 −1 Adjust/AITimer.m
+3 −1 Adjust/AIUtil.h
+29 −2 Adjust/AIUtil.m
+28 −6 Adjust/Adjust.h
+17 −1 Adjust/Adjust.m
+20 −0 AdjustBridge/AdjustBridge.h
+55 −0 AdjustBridge/AdjustBridge.js.txt
+104 −0 AdjustBridge/AdjustBridge.m
+44 −0 AdjustBridge/WebViewJavascriptBridge/WebViewJavascriptBridge.h
+116 −0 AdjustBridge/WebViewJavascriptBridge/WebViewJavascriptBridge.js.txt
+407 −0 AdjustBridge/WebViewJavascriptBridge/WebViewJavascriptBridge.m
+1 −1 AdjustTests/AIActivityHandlerMock.h
+18 −2 AdjustTests/AIActivityHandlerMock.m
+227 −21 AdjustTests/AIActivityHandlerTests.m
+1 −1 AdjustTests/AILoggerMock.h
+1 −1 AdjustTests/AILoggerMock.m
+1 −1 AdjustTests/AIPackageHandlerMock.h
+3 −3 AdjustTests/AIPackageHandlerMock.m
+1 −1 AdjustTests/AIPackageHandlerTests.m
+1 −1 AdjustTests/AIRequestHandlerMock.h
+6 −4 AdjustTests/AIRequestHandlerMock.m
+9 −8 AdjustTests/AIRequestHandlerTests.m
+1 −1 AdjustTests/AITestsUtil.h
+1 −1 AdjustTests/AITestsUtil.m
+1 −1 AdjustTests/AdjustTests-Info.plist
+1 −1 AdjustTests/NSURLConnection+NSURLConnectionSynchronousLoadingMocking.h
+5 −9 AdjustTests/NSURLConnection+NSURLConnectionSynchronousLoadingMocking.m
+2 −2 MIT-LICENSE
+78 −18 README.md
+1 −1 VERSION
+1 −1 doc/idfa.md
+5 −5 doc/migrate.md
+27 −0 doc/mixpanel.md
+234 −0 doc/webApp.md
4 changes: 2 additions & 2 deletions src/ios/AdjustCordova.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
- (void)trackRevenue:(CDVInvokedUrlCommand *)command;
- (void)setFinishedTrackingCallback:(CDVInvokedUrlCommand *)command;
- (void)adjustFinishedTrackingWithResponse:(AIResponseData *)responseData;

- (void)onPause:(CDVInvokedUrlCommand *)command;
- (void)onResume:(CDVInvokedUrlCommand *)command;

- (void)setEnabled:(CDVInvokedUrlCommand *)command;
- (void)isEnabled:(CDVInvokedUrlCommand *)command;

@end
22 changes: 21 additions & 1 deletion src/ios/AdjustCordova.m
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ - (void)appDidLaunch:(CDVInvokedUrlCommand *)command {
NSString *appToken = [command.arguments objectAtIndex:0];
[Adjust appDidLaunch:appToken];

[Adjust setSdkPrefix:@"cordova3.0.0"];
[Adjust setSdkPrefix:@"cordova3.4.0"];

NSString *environment = [command.arguments objectAtIndex:1];
[Adjust setEnvironment:environment];
Expand Down Expand Up @@ -100,4 +100,24 @@ - (void)onResume:(CDVInvokedUrlCommand *)command {
[Adjust trackSubsessionStart];
}

- (void)setEnabled:(CDVInvokedUrlCommand *)command {
NSNumber * isEnabledNumber = [command argumentAtIndex:0 withDefault:nil];

if (isEnabledNumber == nil) return;

BOOL isEnabled = [isEnabledNumber boolValue];

[Adjust setEnabled:isEnabled];
}

- (void)isEnabled:(CDVInvokedUrlCommand *)command {
BOOL isEnabled = [Adjust isEnabled];

CDVPluginResult *pluginResult = [ CDVPluginResult
resultWithStatus: CDVCommandStatus_OK
messageAsBool: isEnabled
];

[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}
@end
71 changes: 46 additions & 25 deletions www/adjust.js
Original file line number Diff line number Diff line change
@@ -1,37 +1,58 @@
function callCordova (action) {
var args = Array.prototype.slice.call(arguments, 1);
cordova.exec(function callback(data) { },
function errorHandler(err) { },
'Adjust',
action,
args
);
}

function callCordovaCallback (action, callback) {
var args = Array.prototype.slice.call(arguments, 2);
cordova.exec(callback,
function errorHandler(err) { },
'Adjust',
action,
args
);
}

var Adjust= {
callCordova: function (action) {
var args = Array.prototype.slice.call(arguments, 1);
cordova.exec(function callback(data) { },
function errorHandler(err) { },
'Adjust',
action,
args
);
},
appDidLaunch: function (appToken, environment, logLevel, eventBuffering) {
this.callCordova('appDidLaunch', appToken, environment,
logLevel, eventBuffering);
},
trackEvent: function (eventToken, parameters) {
this.callCordova('trackEvent', eventToken, parameters);
callCordova('trackEvent', eventToken, parameters);
},
trackRevenue: function (amountInCents, eventToken, parameters) {
this.callCordova('trackRevenue', amountInCents, eventToken, parameters);
callCordova('trackRevenue', amountInCents, eventToken, parameters);
},
setFinishedTrackingCallback: function (callback) {
cordova.exec(callback,
function errorHandler(err) { },
'Adjust',
'setFinishedTrackingCallback',
[]
);
callCordovaCallback('setFinishedTrackingCallback',callback);
},
onPause: function() {
this.callCordova('onPause');
setEnabled: function (enabled) {
callCordova('setEnabled', enabled);
},
onResume: function() {
this.callCordova('onResume');
isEnabled: function (callback) {
callCordovaCallback('isEnabled', callback);
}
};

function startAdjust() {
var appToken = '{adjust_appToken}';
var environment = '{adjust_environment}';
var logLevel = '{adjust_logLevel}';
var enableEventBuffering = '{adjust_enableEventBuffering}';
callCordova('appDidLaunch', appToken, environment,
logLevel, enableEventBuffering);
}
function onPause () {
callCordova('onPause');
}
function onResume () {
callCordova('onResume');
}

document.addEventListener('deviceready', startAdjust ,false);
document.addEventListener('resume', onResume, false);
document.addEventListener('pause', onPause, false);

module.exports = Adjust;