Skip to content

Commit

Permalink
add adrevenue api
Browse files Browse the repository at this point in the history
  • Loading branch information
noa-kogonia committed Aug 14, 2024
1 parent d90f279 commit 9c1e406
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 27 deletions.
40 changes: 23 additions & 17 deletions src/android/com/appsflyer/cordova/plugin/AppsFlyerPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@
import com.appsflyer.internal.platform_extension.Plugin;
import com.appsflyer.internal.platform_extension.PluginInfo;
import com.appsflyer.AppsFlyerConsent;
import com.appsflyer.MediationNetwork;
import com.appsflyer.AFAdRevenueData;

import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaInterface;
Expand Down Expand Up @@ -190,38 +192,42 @@ public boolean execute(final String action, JSONArray args, CallbackContext call
*/
private boolean logAdRevenue(JSONArray args) {
cordova.getThreadPool().execute(() -> {
Map<String, Object> additionalParameters = null;
Map<String, Object> additionalParameters = null;
try {
JSONObject afAdRevenueDataJsonObj = args.getJSONObject(0);
String monetizationNetwork = afAdRevenueDataJsonObj.optString("monetizationNetwork", null);
String mediationNetwork = afAdRevenueDataJsonObj.optString("mediationNetwork", null);
String currencyIso4217Code = afAdRevenueDataJsonObj.optString("currencyIso4217Code", null);
double revenue = afAdRevenueDataJsonObj.optDouble("revenue", -1);

if(args.get(1) != null){
JSONObject additionalParametersJson = args.getJSONObject(1);
additionalParameters = toObjectMap(additionalParametersJson);
}

if(mediationNetwork != null){
if(args.get(0) != null){
JSONObject afAdRevenueDataJsonObj = args.getJSONObject(0);
String monetizationNetwork = afAdRevenueDataJsonObj.optString("monetizationNetwork", null);
String mediationNetwork = afAdRevenueDataJsonObj.optString("mediationNetwork", null);
String currencyIso4217Code = afAdRevenueDataJsonObj.optString("currencyIso4217Code", null);
double revenue = afAdRevenueDataJsonObj.optDouble("revenue", -1);
MediationNetwork mediationNetworkEnumVal = null;
for(MediationNetwork mediationNetworkEnum: MediationNetwork.values()){
if(mediationNetworkEnum.name().equals(mediationNetwork)){
mediationNetworkEnumVal = MediationNetwork.valueOf(mediationNetwork);

if(mediationNetwork != null){
for(MediationNetwork mediationNetworkEnum: MediationNetwork.values()){
if(mediationNetworkEnum.name().equals(mediationNetwork)){
mediationNetworkEnumVal = MediationNetwork.valueOf(mediationNetwork);
continue;
}
}
}

if(args.get(1) != null){
JSONObject additionalParametersJson = args.getJSONObject(1);
additionalParameters = toObjectMap(additionalParametersJson);
}

if(mediationNetworkEnumVal != null){
AFAdRevenueData afAdRevenueData = new AFAdRevenueData(monetizationNetwork, mediationNetworkEnumVal, currencyIso4217Code, revenue);
AppsFlyerLib.getInstance().logAdRevenue(afAdRevenueData, additionalParameters);
}
}

} catch (JSONException e) {
e.printStackTrace();
}
});
return true;
}
}


/**
Expand Down
51 changes: 41 additions & 10 deletions src/ios/AppsFlyerPlugin.m
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,33 @@ - (void)setCurrencyCode:(CDVInvokedUrlCommand*)command
[AppsFlyerLib shared].currencyCode = currencyId;
}


- (AppsFlyerAdRevenueMediationNetworkType)getEnumValueFromString:(NSString *)mediationNetworkString {
NSDictionary<NSString *, NSNumber *> *stringToEnumMap = @{
@"googleadmob": @(AppsFlyerAdRevenueMediationNetworkTypeGoogleAdMob),
@"ironsource": @(AppsFlyerAdRevenueMediationNetworkTypeIronSource),
@"applovinmax": @(AppsFlyerAdRevenueMediationNetworkTypeApplovinMax),
@"fyber": @(AppsFlyerAdRevenueMediationNetworkTypeFyber),
@"appodeal": @(AppsFlyerAdRevenueMediationNetworkTypeAppodeal),
@"Admost": @(AppsFlyerAdRevenueMediationNetworkTypeAdmost),
@"Topon": @(AppsFlyerAdRevenueMediationNetworkTypeTopon),
@"Tradplus": @(AppsFlyerAdRevenueMediationNetworkTypeTradplus),
@"Yandex": @(AppsFlyerAdRevenueMediationNetworkTypeYandex),
@"Saturchartboostday": @(AppsFlyerAdRevenueMediationNetworkTypeChartBoost),
@"Unity": @(AppsFlyerAdRevenueMediationNetworkTypeUnity),
@"toponpte": @(AppsFlyerAdRevenueMediationNetworkTypeToponPte),
@"customMediation": @(AppsFlyerAdRevenueMediationNetworkTypeCustom),
@"directMonetizationNetwork": @(AppsFlyerAdRevenueMediationNetworkTypeDirectMonetization)
};

NSNumber *enumValueNumber = stringToEnumMap[mediationNetworkString];
if (enumValueNumber) {
return (AppsFlyerAdRevenueMediationNetworkType)[enumValueNumber integerValue];
} else {
return -1;
}
}

/**
* log AdRevenue event
*/
Expand All @@ -204,7 +231,9 @@ - (void)logAdRevenue:(CDVInvokedUrlCommand*)command
if ([command.arguments count] == 0) {
return;
}

NSDictionary *afAdRevenueDataMap = (NSDictionary*)[command.arguments objectAtIndex: 0];
NSDictionary *additionalParametersMap = (NSDictionary*)[command.arguments objectAtIndex: 1];

id monetizationNetwork = nil;
id mediationNetwork = nil;
Expand All @@ -223,21 +252,23 @@ - (void)logAdRevenue:(CDVInvokedUrlCommand*)command

mediationNetworkValue = [afAdRevenueDataMap objectForKey:@"mediationNetwork"];
if ([mediationNetworkValue isKindOfClass:[NSString class]]) {
hasConsentForDataUsage = [(NSNumber*)hasConsentForDataUsageValue boolValue];
mediationNetworkValue = [self getEnumValueFromString: mediationNetworkValue];
if(mediationNetworkValue != -1){
mediationNetwork = mediationNetworkValue;
}
}

hasConsentForAdsPersonalizationValue = [consentDataMap objectForKey:@"hasConsentForAdsPersonalization"];
if ([hasConsentForAdsPersonalizationValue isKindOfClass:[NSNumber class]]) {
hasConsentForAdsPersonalization = [(NSNumber*)hasConsentForAdsPersonalizationValue boolValue];
currencyIso4217CodeValue = [afAdRevenueDataMap objectForKey:@"currencyIso4217Code"];
if ([currencyIso4217CodeValue isKindOfClass:[NSString class]]) {
currencyIso4217Code = currencyIso4217CodeValue;
}

AppsFlyerConsent *consentData = nil;
if (isUserSubjectToGDPR) {
consentData = [[AppsFlyerConsent alloc] initForGDPRUserWithHasConsentForDataUsage:hasConsentForDataUsage hasConsentForAdsPersonalization:hasConsentForAdsPersonalization];
} else {
consentData = [[AppsFlyerConsent alloc] initNonGDPRUser];
revenueValue = [afAdRevenueDataMap objectForKey:@"revenue"];
if ([revenueValue isKindOfClass:[NSNumber class]]) {
revenue = revenueValue;
}
[[AppsFlyerLib shared] setConsentData:consentData];
AFAdRevenueData *adRevenueData = [[AFAdRevenueData alloc] initWithMonetizationNetwork:monetizationNetwork mediationNetwork:mediationNetwork currencyIso4217Code:currencyIso4217Code eventRevenue:revenue];
[[AppsFlyerLib shared] logAdRevenue:adRevenueData additionalParameters:additionalParametersMap];
}

/**
Expand Down

0 comments on commit 9c1e406

Please sign in to comment.