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
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ Pods
# built application files
*.apk
*.ap_
*.jar

# lint folder
lint
Expand Down
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
### Version 4.18.0 (1st July 2019)
#### Added
- Added `trackAdRevenue` method to `Adjust` interface to allow tracking of ad revenue. With this release added support for `MoPub` ad revenue tracking.
- Added reading of Facebook anonymous ID if available on iOS platform.

#### Native SDKs
- [[email protected]][ios_sdk_v4.18.0]
- [[email protected]][android_sdk_v4.18.0]

---

### Version 4.17.2 (3rd May 2019)
#### Changed
- Updated iOS SDK version number in Podspec file to 4.17.2.
Expand Down Expand Up @@ -282,6 +293,7 @@
[ios_sdk_v4.15.0]: https://github.com/adjust/ios_sdk/tree/v4.15.0
[ios_sdk_v4.17.1]: https://github.com/adjust/ios_sdk/tree/v4.17.1
[ios_sdk_v4.17.2]: https://github.com/adjust/ios_sdk/tree/v4.17.2
[ios_sdk_v4.18.0]: https://github.com/adjust/ios_sdk/tree/v4.18.0

[android_sdk_v4.10.4]: https://github.com/adjust/android_sdk/tree/v4.10.4
[android_sdk_v4.11.0]: https://github.com/adjust/android_sdk/tree/v4.11.0
Expand All @@ -297,3 +309,4 @@
[android_sdk_v4.14.0]: https://github.com/adjust/android_sdk/tree/v4.14.0
[android_sdk_v4.15.0]: https://github.com/adjust/android_sdk/tree/v4.15.0
[android_sdk_v4.17.0]: https://github.com/adjust/android_sdk/tree/v4.17.0
[android_sdk_v4.18.0]: https://github.com/adjust/android_sdk/tree/v4.18.0
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,11 +127,12 @@ You should use the following import statement on top of your `.js` file
import { Adjust, AdjustEvent, AdjustConfig } from 'react-native-adjust';
```

In your `index.android.js` or `index.ios.js` file, add the following code to initialize the Adjust SDK:
In your `App.js` file, add the following code to initialize the Adjust SDK:

```javascript
componentWillMount() {
var adjustConfig = new AdjustConfig("{YourAppToken}", AdjustConfig.EnvironmentSandbox);
constructor(props) {
super(props);
const adjustConfig = new AdjustConfig("{YourAppToken}", AdjustConfig.EnvironmentSandbox);
Adjust.create(adjustConfig);
}

Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
4.17.2
4.18.0
Binary file modified android/libs/adjust-android.jar
Binary file not shown.
12 changes: 12 additions & 0 deletions android/src/main/java/com/adjust/sdk/Adjust.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
import java.util.HashMap;
import java.util.Map.Entry;
import javax.annotation.Nullable;
import org.json.JSONObject;
import org.json.JSONException;
import com.facebook.react.bridge.*;
import com.facebook.react.modules.core.*;
import com.adjust.sdk.*;
Expand Down Expand Up @@ -382,6 +384,16 @@ public void sendFirstPackages() {
com.adjust.sdk.Adjust.sendFirstPackages();
}

@ReactMethod
public void trackAdRevenue(String source, String payload) {
try {
JSONObject jsonPayload = new JSONObject(payload);
com.adjust.sdk.Adjust.trackAdRevenue(source, jsonPayload);
}catch (JSONException err){
Log.d(TAG, "Give ad revenue payload is not a valid JSON string");
}
}

@ReactMethod
public void addSessionCallbackParameter(String key, String value) {
com.adjust.sdk.Adjust.addSessionCallbackParameter(key, value);
Expand Down
22 changes: 12 additions & 10 deletions example/App.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,9 @@

type Props = {};
export default class App extends Component<Props> {
componentDidMount() {
Linking.addEventListener('url', this.handleDeepLink);
Linking.getInitialURL().then((url) => {
if (url) {
this.handleDeepLink({ url });
}
})
}
constructor(props) {
super(props);

componentWillMount() {
this._onPress_trackSimpleEvent = this._onPress_trackSimpleEvent.bind(this);
this._onPress_trackRevenueEvent = this._onPress_trackRevenueEvent.bind(this);
this._onPress_trackCallbackEvent = this._onPress_trackCallbackEvent.bind(this);
Expand All @@ -29,7 +22,7 @@
console.log("Adjust SDK version: " + sdkVersion);
});

var adjustConfig = new AdjustConfig("2fm9gkqubvpc", AdjustConfig.EnvironmentSandbox);
const adjustConfig = new AdjustConfig("2fm9gkqubvpc", AdjustConfig.EnvironmentSandbox);
adjustConfig.setLogLevel(AdjustConfig.LogLevelVerbose);
adjustConfig.setShouldLaunchDeeplink(true);
adjustConfig.setSendInBackground(true);
Expand Down Expand Up @@ -116,6 +109,15 @@
// Adjust.sendFirstPackages();
}

componentDidMount() {
Linking.addEventListener('url', this.handleDeepLink);
Linking.getInitialURL().then((url) => {
if (url) {
this.handleDeepLink({ url });
}
})
}

componentWillUnmount() {
Adjust.componentWillUnmount();
Linking.removeEventListener('url', this.handleDeepLink);
Expand Down
2 changes: 1 addition & 1 deletion ext/android/sdk
Submodule sdk updated 40 files
+3 −3 Adjust/build.gradle
+1 −1 Adjust/example-app-java/build.gradle
+2 −2 Adjust/gradle/wrapper/gradle-wrapper.properties
+16 −87 Adjust/sdk-core/build.gradle
+3 −13 Adjust/sdk-core/src/main/AndroidManifest.xml
+27 −0 Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityHandler.java
+5 −1 Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityKind.java
+14 −1 Adjust/sdk-core/src/main/java/com/adjust/sdk/Adjust.java
+19 −0 Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustConfig.java
+2 −2 Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustEvent.java
+15 −0 Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustInstance.java
+1 −1 Adjust/sdk-core/src/main/java/com/adjust/sdk/Constants.java
+4 −0 Adjust/sdk-core/src/main/java/com/adjust/sdk/IActivityHandler.java
+63 −0 Adjust/sdk-core/src/main/java/com/adjust/sdk/PackageBuilder.java
+14 −0 Adjust/sdk-core/src/main/java/com/adjust/sdk/UtilNetworking.java
+4 −35 Adjust/sdk-plugin-criteo/build.gradle
+4 −35 Adjust/sdk-plugin-imei/build.gradle
+4 −35 Adjust/sdk-plugin-sociomantic/build.gradle
+4 −35 Adjust/sdk-plugin-trademob/build.gradle
+4 −35 Adjust/sdk-plugin-webbridge/build.gradle
+1 −1 Adjust/sdk-plugin-webbridge/src/main/assets/adjust.js
+4 −0 Adjust/test-app-core/src/main/AndroidManifest.xml
+15 −0 Adjust/test-app-core/src/main/java/com/adjust/testapp/AdjustCommandExecutor.java
+5 −3 Adjust/test-app-core/src/main/java/com/adjust/testapp/MainActivity.java
+4 −2 Adjust/test-app-webbridge/src/main/java/com/example/testappwebbridge/TestLibraryBridge.java
+32 −16 Adjust/test-library/build.gradle
+12 −12 Adjust/test-library/src/main/java/com/adjust/test/Constants.java
+0 −81 Adjust/test-library/src/main/java/com/adjust/test/ControlChannel.java
+111 −87 Adjust/test-library/src/main/java/com/adjust/test/TestLibrary.java
+50 −0 Adjust/test-library/src/main/java/com/adjust/test/ws/ControlSignal.java
+84 −0 Adjust/test-library/src/main/java/com/adjust/test/ws/ControlWebSocketClient.java
+13 −0 Adjust/test-library/src/main/java/com/adjust/test/ws/SignalType.java
+1 −1 Adjust/test-unit/src/androidTest/java/com/adjust/sdk/TestActivityPackage.java
+6 −0 CHANGELOG.md
+38 −3 README.md
+1 −1 VERSION
+1 −1 doc/chinese/README.md
+24 −0 doc/english/sdk-to-sdk/mopub.md
+1 −1 doc/japanese/README.md
+1 −1 doc/korean/README.md
2 changes: 1 addition & 1 deletion ext/ios/sdk
Submodule sdk updated 118 files
1 change: 1 addition & 0 deletions index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,7 @@ declare module "react-native-adjust" {
setPushToken: (token: string): void => { },
appWillOpenUrl: (url: string): void => { },
sendFirstPackages: (): void => { },
trackAdRevenue: (source: string, payload: string): void => { },
addSessionCallbackParameter: (key: string, value: string): void => { },
addSessionPartnerParameter: (key: string, value: string): void => { },
removeSessionCallbackParameter: (key: string): void => { },
Expand Down
8 changes: 6 additions & 2 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,10 @@ Adjust.sendFirstPackages = function() {
module_adjust.sendFirstPackages();
};

Adjust.trackAdRevenue = function(source, payload) {
module_adjust.trackAdRevenue(source, payload);
}

Adjust.addSessionCallbackParameter = function(key, value) {
if (typeof key !== 'string' || typeof value !== 'string') {
return;
Expand Down Expand Up @@ -106,7 +110,7 @@ Adjust.getAmazonAdId = function(callback) {
};

Adjust.getSdkVersion = function(callback) {
module_adjust.getSdkVersion("react-native4.17.2", callback);
module_adjust.getSdkVersion("react-native4.18.0", callback);
}

Adjust.setReferrer = function(referrer) {
Expand Down Expand Up @@ -179,7 +183,7 @@ Adjust.onPause = function(testParam) {
// AdjustConfig

var AdjustConfig = function(appToken, environment) {
this.sdkPrefix = "react-native4.17.2";
this.sdkPrefix = "react-native4.18.0";
this.appToken = appToken;
this.environment = environment;
this.logLevel = null;
Expand Down
1 change: 1 addition & 0 deletions ios/Adjust/ADJActivityHandler.h
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@
- (void)removeSessionPartnerParameter:(NSString *)key;
- (void)resetSessionCallbackParameters;
- (void)resetSessionPartnerParameters;
- (void)trackAdRevenue:(NSString *)soruce payload:(NSData *)payload;
- (NSString *)getBasePath;
- (NSString *)getGdprPath;

Expand Down
35 changes: 35 additions & 0 deletions ios/Adjust/ADJActivityHandler.m
Original file line number Diff line number Diff line change
Expand Up @@ -565,6 +565,14 @@ - (void)resetSessionPartnerParameters {
}];
}

- (void)trackAdRevenue:(NSString *)source payload:(NSData *)payload {
[ADJUtil launchInQueue:self.internalQueue
selfInject:self
block:^(ADJActivityHandler * selfI) {
[selfI adRevenueI:selfI source:source payload:payload];
}];
}

- (NSString *)getBasePath {
return _basePath;
}
Expand Down Expand Up @@ -939,6 +947,32 @@ - (void)eventI:(ADJActivityHandler *)selfI
[selfI writeActivityStateI:selfI];
}

- (void)adRevenueI:(ADJActivityHandler *)selfI
source:(NSString *)source
payload:(NSData *)payload {
if (!selfI.activityState) {
return;
}
if (![selfI isEnabledI:selfI]) {
return;
}
if (selfI.activityState.isGdprForgotten) {
return;
}

double now = [NSDate.date timeIntervalSince1970];

// Create and submit ad revenue package.
ADJPackageBuilder *adRevenueBuilder = [[ADJPackageBuilder alloc] initWithDeviceInfo:selfI.deviceInfo
activityState:selfI.activityState
config:selfI.adjustConfig
sessionParameters:selfI.sessionParameters
createdAt:now];
ADJActivityPackage *adRevenuePackage = [adRevenueBuilder buildAdRevenuePackage:source payload:payload];
[selfI.packageHandler addPackage:adRevenuePackage];
[selfI.packageHandler sendFirstPackage];
}

- (void)launchEventResponseTasksI:(ADJActivityHandler *)selfI
eventResponseData:(ADJEventResponseData *)eventResponseData {
[selfI updateAdidI:selfI adid:eventResponseData.adid];
Expand Down Expand Up @@ -1158,6 +1192,7 @@ - (void)setEnabledI:(ADJActivityHandler *)selfI enabled:(BOOL)enabled {
if ([ADJUserDefaults getGdprForgetMe]) {
[selfI setGdprForgetMe];
}
[[UIDevice currentDevice] adjSetIad:selfI triesV3Left:kTryIadV3];
}

[selfI checkStatusI:selfI
Expand Down
17 changes: 9 additions & 8 deletions ios/Adjust/ADJActivityKind.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,15 @@
#endif

typedef NS_ENUM(int, ADJActivityKind) {
ADJActivityKindUnknown = 0,
ADJActivityKindSession = 1,
ADJActivityKindEvent = 2,
// ADJActivityKindRevenue = 3,
ADJActivityKindClick = 4,
ADJActivityKindAttribution = 5,
ADJActivityKindInfo = 6,
ADJActivityKindGdpr = 7
ADJActivityKindUnknown = 0,
ADJActivityKindSession = 1,
ADJActivityKindEvent = 2,
// ADJActivityKindRevenue = 3,
ADJActivityKindClick = 4,
ADJActivityKindAttribution = 5,
ADJActivityKindInfo = 6,
ADJActivityKindGdpr = 7,
ADJActivityKindAdRevenue = 8
};

@interface ADJActivityKindUtil : NSObject
Expand Down
4 changes: 4 additions & 0 deletions ios/Adjust/ADJActivityKind.m
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ + (ADJActivityKind)activityKindFromString:(NSString *)activityKindString {
return ADJActivityKindInfo;
} else if ([@"gdpr" isEqualToString:activityKindString]) {
return ADJActivityKindGdpr;
} else if ([@"ad_revenue" isEqualToString:activityKindString]) {
return ADJActivityKindAdRevenue;
} else {
return ADJActivityKindUnknown;
}
Expand All @@ -44,6 +46,8 @@ + (NSString *)activityKindToString:(ADJActivityKind)activityKind {
return @"info";
case ADJActivityKindGdpr:
return @"gdpr";
case ADJActivityKindAdRevenue:
return @"ad_revenue";
default:
return @"unknown";
}
Expand Down
1 change: 1 addition & 0 deletions ios/Adjust/ADJAdditions/UIDevice+ADJAdditions.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

- (BOOL)adjTrackingEnabled;
- (NSString *)adjIdForAdvertisers;
- (NSString *)adjFbAnonymousId;
- (NSString *)adjFbAttributionId;
- (NSString *)adjDeviceType;
- (NSString *)adjDeviceName;
Expand Down
21 changes: 21 additions & 0 deletions ios/Adjust/ADJAdditions/UIDevice+ADJAdditions.m
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,27 @@ - (NSString *)adjFbAttributionId {
#endif
}

- (NSString *)adjFbAnonymousId {
#if TARGET_OS_TV
return @"";
#else
// return [FBSDKAppEventsUtility retrievePersistedAnonymousID];
Class class = NSClassFromString(@"FBSDKAppEventsUtility");
if (class == nil) {
return @"";
}
SEL selGetId = NSSelectorFromString(@"retrievePersistedAnonymousID");
if (![class respondsToSelector:selGetId]) {
return @"";
}
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
NSString *fbAnonymousId = (NSString *)[class performSelector:selGetId];
#pragma clang diagnostic pop
return fbAnonymousId;
#endif
}

- (NSString *)adjDeviceType {
NSString *type = [self.model stringByReplacingOccurrencesOfString:@" " withString:@""];
return type;
Expand Down
1 change: 1 addition & 0 deletions ios/Adjust/ADJDeviceInfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
@interface ADJDeviceInfo : NSObject

@property (nonatomic, copy) NSString *idForAdvertisers;
@property (nonatomic, copy) NSString *fbAnonymousId;
@property (nonatomic, copy) NSString *fbAttributionId;
@property (nonatomic, assign) BOOL trackingEnabled;
@property (nonatomic, copy) NSString *vendorId;
Expand Down
1 change: 1 addition & 0 deletions ios/Adjust/ADJDeviceInfo.m
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ - (id)initWithSdkPrefix:(NSString *)sdkPrefix {

self.trackingEnabled = UIDevice.currentDevice.adjTrackingEnabled;
self.idForAdvertisers = UIDevice.currentDevice.adjIdForAdvertisers;
self.fbAnonymousId = UIDevice.currentDevice.adjFbAnonymousId;
self.fbAttributionId = UIDevice.currentDevice.adjFbAttributionId;
self.vendorId = UIDevice.currentDevice.adjVendorId;
self.bundeIdentifier = [infoDictionary objectForKey:(NSString *)kCFBundleIdentifierKey];
Expand Down
8 changes: 3 additions & 5 deletions ios/Adjust/ADJEvent.m
Original file line number Diff line number Diff line change
Expand Up @@ -105,17 +105,15 @@ - (NSDictionary *) partnerParameters {
return (NSDictionary *) self.partnerMutableParameters;
}

- (BOOL) checkEventToken:(NSString *)eventToken {
- (BOOL)checkEventToken:(NSString *)eventToken {
if ([ADJUtil isNull:eventToken]) {
[self.logger error:@"Missing Event Token"];
return NO;
}

if (eventToken.length != 6) {
[self.logger error:@"Malformed Event Token '%@'", eventToken];
if ([eventToken length] <= 0) {
[self.logger error:@"Event Token can't be empty"];
return NO;
}

return YES;
}

Expand Down
2 changes: 2 additions & 0 deletions ios/Adjust/ADJPackageBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@

- (ADJActivityPackage *)buildInfoPackage:(NSString *)infoSource;

- (ADJActivityPackage *)buildAdRevenuePackage:(NSString *)source payload:(NSData *)payload;

- (ADJActivityPackage *)buildClickPackage:(NSString *)clickSource;

- (ADJActivityPackage *)buildAttributionPackage:(NSString *)initiatedBy;
Expand Down
Loading