Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Releases/6.x.x/6.15.x/6.15.1 rc1 #300

Merged
merged 4 commits into from
Aug 22, 2024
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
71 changes: 71 additions & 0 deletions Assets/AppsFlyer/AFAdRevenueData.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
using System;
using System.Collections.Generic;

namespace AppsFlyerSDK
{
public enum MediationNetwork : ulong
{
GoogleAdMob = 1,
IronSource = 2,
ApplovinMax = 3,
Fyber = 4,
Appodeal = 5,
Admost = 6,
Topon = 7,
Tradplus = 8,
Yandex = 9,
ChartBoost = 10,
Unity = 11,
ToponPte = 12,
Custom = 13,
DirectMonetization = 14
}

public static class AdRevenueScheme
{
/**
* code ISO 3166-1 format
*/
public const string COUNTRY = "country";

/**
* ID of the ad unit for the impression
*/
public const string AD_UNIT = "ad_unit";

/**
* Format of the ad
*/
public const string AD_TYPE = "ad_type";

/**
* ID of the ad placement for the impression
*/
public const string PLACEMENT = "placement";
}

/// <summary>
// Data class representing ad revenue information.
//
// @property monetizationNetwork The name of the network that monetized the ad.
// @property mediationNetwork An instance of MediationNetwork representing the mediation service used.
// @property currencyIso4217Code The ISO 4217 currency code describing the currency of the revenue.
// @property eventRevenue The amount of revenue generated by the ad.
/// </summary>
public class AFAdRevenueData
{
public string monetizationNetwork { get; private set; }
public MediationNetwork mediationNetwork { get; private set; }
public string currencyIso4217Code { get; private set; }
public double eventRevenue { get; private set; }

public AFAdRevenueData(string monetization, MediationNetwork mediation, string currency, double revenue)
{
monetizationNetwork = monetization;
mediationNetwork = mediation;
currencyIso4217Code = currency;
eventRevenue = revenue;
}
}

}
11 changes: 11 additions & 0 deletions Assets/AppsFlyer/AFAdRevenueData.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 14 additions & 1 deletion Assets/AppsFlyer/AppsFlyer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ namespace AppsFlyerSDK
{
public class AppsFlyer : MonoBehaviour
{
public static readonly string kAppsFlyerPluginVersion = "6.14.5";
public static readonly string kAppsFlyerPluginVersion = "6.15.1";
public static string CallBackObjectName = null;
private static EventHandler onRequestResponse;
private static EventHandler onInAppResponse;
Expand Down Expand Up @@ -332,6 +332,19 @@ public static void setConsentData(AppsFlyerConsent appsFlyerConsent)
}
}

/// <summary>
/// Logs ad revenue data along with additional parameters if provided.
/// </summary>
/// <param name = "adRevenueData" >instance of AFAdRevenueData containing ad revenue information.</param>
/// <param name = "additionalParameters" >An optional map of additional parameters to be logged with ad revenue data. This can be null if there are no additional parameters.</param>
public static void logAdRevenue(AFAdRevenueData adRevenueData, Dictionary<string, string> additionalParameters)
{
if (instance != null)
{
instance.logAdRevenue(adRevenueData, additionalParameters);
}
}

/// <summary>
/// Manually record the location of the user.
/// </summary>
Expand Down
73 changes: 70 additions & 3 deletions Assets/AppsFlyer/AppsFlyerAndroid.cs
Original file line number Diff line number Diff line change
Expand Up @@ -402,6 +402,17 @@ public void setConsentData(AppsFlyerConsent appsFlyerConsent)
#endif
}

/// <summary>
/// Logs ad revenue data along with additional parameters if provided.
/// <param name = "adRevenueData" >instance of AFAdRevenueData containing ad revenue information.</param>
/// <param name = "additionalParameters" >An optional map of additional parameters to be logged with ad revenue data. This can be null if there are no additional parameters.</param>
public void logAdRevenue(AFAdRevenueData adRevenueData, Dictionary<string, string> additionalParameters)
{
#if !UNITY_EDITOR
appsFlyerAndroid.CallStatic("logAdRevenue", adRevenueData.monetizationNetwork, getMediationNetwork(adRevenueData.mediationNetwork), adRevenueData.currencyIso4217Code, adRevenueData.eventRevenue, convertDictionaryToJavaMap(additionalParameters));
#endif
}

/// <summary>
/// Restrict reengagement via deep-link to once per each unique deep-link.
/// Otherwise deep re-occurring deep-links will be permitted for non-singleTask Activities and deep-linking via AppsFlyer deep-links.
Expand Down Expand Up @@ -749,6 +760,65 @@ private static AndroidJavaObject getEmailType(EmailCryptType cryptType)
return emailsCryptType;
}

/// <summary>
/// Internal Helper Method.
/// </summary>
private static AndroidJavaObject getMediationNetwork(MediationNetwork mediationNetwork)
{
AndroidJavaClass mediationNetworkEnumClass = new AndroidJavaClass("com.appsflyer.MediationNetwork");
AndroidJavaObject mediationNetworkObject;

switch (mediationNetwork)
{
case MediationNetwork.IronSource:
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("IRONSOURCE");
break;
case MediationNetwork.ApplovinMax:
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("APPLOVIN_MAX");
break;
case MediationNetwork.GoogleAdMob:
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("GOOGLE_ADMOB");
break;
case MediationNetwork.Fyber:
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("FYBER");
break;
case MediationNetwork.Appodeal:
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("APPODEAL");
break;
case MediationNetwork.Admost:
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("ADMOST");
break;
case MediationNetwork.Topon:
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("TOPON");
break;
case MediationNetwork.Tradplus:
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("TRADPLUS");
break;
case MediationNetwork.Yandex:
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("YANDEX");
break;
case MediationNetwork.ChartBoost:
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("CHARTBOOST");
break;
case MediationNetwork.Unity:
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("UNITY");
break;
case MediationNetwork.ToponPte:
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("TOPON_PTE");
break;
case MediationNetwork.Custom:
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("CUSTOM_MEDIATION");
break;
case MediationNetwork.DirectMonetization:
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("DIRECT_MONETIZATION_NETWORK");
break;
default:
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("NONE");
break;
}
return mediationNetworkObject;
}

/// <summary>
/// Internal Helper Method.
/// </summary>
Expand All @@ -771,9 +841,6 @@ private static AndroidJavaObject convertDictionaryToJavaMap(Dictionary<string, s
return map;
}
}

#endif



}
19 changes: 19 additions & 0 deletions Assets/AppsFlyer/AppsFlyeriOS.cs
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,18 @@ public void setConsentData(AppsFlyerConsent appsFlyerConsent)
#endif
}

/// <summary>
/// Logs ad revenue data along with additional parameters if provided.
/// </summary>
/// <param name = "adRevenueData" >instance of AFAdRevenueData containing ad revenue information.</param>
/// <param name = "additionalParameters" >An optional map of additional parameters to be logged with ad revenue data. This can be null if there are no additional parameters.</param>
public void logAdRevenue(AFAdRevenueData adRevenueData, Dictionary<string, string> additionalParameters)
{
#if !UNITY_EDITOR
_logAdRevenue(adRevenueData.monetizationNetwork, adRevenueData.mediationNetwork, adRevenueData.currencyIso4217Code, adRevenueData.eventRevenue, AFMiniJSON.Json.Serialize(additionalParameters));
#endif
}

/// <summary>
/// Anonymize user Data.
/// Use this API during the SDK Initialization to explicitly anonymize a user's installs, events and sessions.
Expand Down Expand Up @@ -750,6 +762,13 @@ public static void getCallback(string gameObjectName, string callbackName, strin
#endif
private static extern void _setConsentData(bool isUserSubjectToGDPR, bool hasConsentForDataUsage, bool hasConsentForAdsPersonalization);

#if UNITY_IOS
[DllImport("__Internal")]
#elif UNITY_STANDALONE_OSX
[DllImport("AppsFlyerBundle")]
#endif
private static extern void _logAdRevenue(string monetizationNetwork, MediationNetwork mediationNetwork, string currencyIso4217Code, double eventRevenue, string additionalParameters);

#if UNITY_IOS
[DllImport("__Internal")]
#elif UNITY_STANDALONE_OSX
Expand Down
6 changes: 3 additions & 3 deletions Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@
<dependencies>

<androidPackages>
<androidPackage spec="com.appsflyer:af-android-sdk:6.14.2">
<androidPackage spec="com.appsflyer:af-android-sdk:6.15.0">
</androidPackage>
<androidPackage spec="com.appsflyer:unity-wrapper:6.14.5">
<androidPackage spec="com.appsflyer:unity-wrapper:6.15.1">
</androidPackage>
<androidPackage spec="com.android.installreferrer:installreferrer:2.1">
</androidPackage>
</androidPackages>

<iosPods>
<iosPod name="AppsFlyerFramework" version="6.14.5" minTargetSdk="12.0">
<iosPod name="AppsFlyerFramework" version="6.15.1" minTargetSdk="12.0">
</iosPod>
</iosPods>

Expand Down
2 changes: 2 additions & 0 deletions Assets/AppsFlyer/IAppsFlyerNativeBridge.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ public interface IAppsFlyerNativeBridge

void setConsentData(AppsFlyerConsent appsFlyerConsent);

void logAdRevenue(AFAdRevenueData adRevenueData, Dictionary<string, string> additionalParameters);

void setMinTimeBetweenSessions(int seconds);

void setHost(string hostPrefixName, string hostName);
Expand Down
1 change: 1 addition & 0 deletions Assets/AppsFlyer/Plugins/iOS/AFUnityUtils.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ static NSArray<NSString*> *NSArrayFromCArray(int length, const char **arr);
static char* getCString(const char* string);
static AppsFlyerLinkGenerator* generatorFromDictionary(NSDictionary* dictionary, AppsFlyerLinkGenerator* generator);
static EmailCryptType emailCryptTypeFromInt(int emailCryptTypeInt);
static AppsFlyerAdRevenueMediationNetworkType mediationNetworkTypeFromInt(int mediationNetwork);
static NSString* stringFromDeepLinkResultStatus(AFSDKDeepLinkResultStatus deepLinkResult);
static NSString* stringFromDeepLinkResultError(AppsFlyerDeepLinkResult *result);

54 changes: 54 additions & 0 deletions Assets/AppsFlyer/Plugins/iOS/AFUnityUtils.mm
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,60 @@ static EmailCryptType emailCryptTypeFromInt(int emailCryptTypeInt){
return emailCryptType;
}

static AppsFlyerAdRevenueMediationNetworkType mediationNetworkTypeFromInt(int mediationNetworkInt){

AppsFlyerAdRevenueMediationNetworkType mediationNetworkType;
switch (mediationNetworkInt){
case 1:
mediationNetworkType = AppsFlyerAdRevenueMediationNetworkTypeGoogleAdMob;
break;
case 2:
mediationNetworkType = AppsFlyerAdRevenueMediationNetworkTypeIronSource;
break;
case 3:
mediationNetworkType = AppsFlyerAdRevenueMediationNetworkTypeApplovinMax;
break;
case 4:
mediationNetworkType = AppsFlyerAdRevenueMediationNetworkTypeFyber;
break;
case 5:
mediationNetworkType = AppsFlyerAdRevenueMediationNetworkTypeAppodeal;
break;
case 6:
mediationNetworkType = AppsFlyerAdRevenueMediationNetworkTypeAdmost;
break;
case 7:
mediationNetworkType = AppsFlyerAdRevenueMediationNetworkTypeTopon;
break;
case 8:
mediationNetworkType = AppsFlyerAdRevenueMediationNetworkTypeTradplus;
break;
case 9:
mediationNetworkType = AppsFlyerAdRevenueMediationNetworkTypeYandex;
break;
case 10:
mediationNetworkType = AppsFlyerAdRevenueMediationNetworkTypeChartBoost;
break;
case 11:
mediationNetworkType = AppsFlyerAdRevenueMediationNetworkTypeUnity;
break;
case 12:
mediationNetworkType = AppsFlyerAdRevenueMediationNetworkTypeToponPte;
break;
case 13:
mediationNetworkType = AppsFlyerAdRevenueMediationNetworkTypeCustom;
break;
case 14:
mediationNetworkType = AppsFlyerAdRevenueMediationNetworkTypeDirectMonetization;
break;
default:
mediationNetworkType = AppsFlyerAdRevenueMediationNetworkTypeCustom;
break;
}

return mediationNetworkType;
}

static NSString* stringFromDeepLinkResultStatus(AFSDKDeepLinkResultStatus deepLinkResult){
NSString* result;
switch (deepLinkResult){
Expand Down
10 changes: 9 additions & 1 deletion Assets/AppsFlyer/Plugins/iOS/AppsFlyeriOSWrapper.mm
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ static void unityCallBack(NSString* objectName, const char* method, const char*

const void _startSDK(bool shouldCallback, const char* objectName) {
[[AppsFlyerLib shared] setPluginInfoWith: AFSDKPluginUnity
pluginVersion:@"6.14.5"
pluginVersion:@"6.15.1"
additionalParams:nil];
startRequestObjectName = stringFromChar(objectName);
AppsFlyeriOSWarpper.didCallStart = YES;
Expand Down Expand Up @@ -97,6 +97,14 @@ const void _setConsentData(bool isUserSubjectToGDPR, bool hasConsentForDataUsage
[[AppsFlyerLib shared] setConsentData:consentData];
}

const void _logAdRevenue(const char* monetizationNetwork, int mediationNetworkInt, const char* currencyIso4217Code, double eventRevenue, const char* additionalParameters) {
AppsFlyerAdRevenueMediationNetworkType mediationNetwork = mediationNetworkTypeFromInt(mediationNetworkInt);
NSString *formattedString = [NSString localizedStringWithFormat:@"%.2f", eventRevenue];
NSNumber *revenue = [NSDecimalNumber decimalNumberWithString:formattedString];
AFAdRevenueData *adRevenue = [[AFAdRevenueData alloc] initWithMonetizationNetwork:stringFromChar(monetizationNetwork) mediationNetwork:mediationNetwork currencyIso4217Code:stringFromChar(currencyIso4217Code) eventRevenue:revenue];
[[AppsFlyerLib shared] logAdRevenue: adRevenue additionalParameters:dictionaryFromJson(additionalParameters)];
}

const void _setDisableCollectIAd (bool disableCollectASA) {
[AppsFlyerLib shared].disableCollectASA = disableCollectASA;
}
Expand Down
2 changes: 1 addition & 1 deletion Assets/AppsFlyer/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "appsflyer-unity-plugin",
"displayName": "AppsFlyer",
"description": "AppsFlyer Unity plugin",
"version": "6.14.5",
"version": "6.15.1",
"unity": "2019.4",
"license": "MIT"
}
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@

### <a id="plugin-build-for"> This plugin is built for

- Android AppsFlyer SDK v6.14.2
- iOS AppsFlyer SDK v6.14.5
- Android AppsFlyer SDK v6.15.0
- iOS AppsFlyer SDK v6.15.1

---
### <a id="init-sdk-deeplink"> AD_ID permission for Android
Expand Down
4 changes: 2 additions & 2 deletions android-unity-wrapper/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ android.enableJetifier=true

GROUP=com.appsflyer

VERSION_CODE=41
VERSION_NAME=6.14.5
VERSION_CODE=43
VERSION_NAME=6.15.1

POM_ARTIFACT_ID=unity-wrapper
POM_PACKAGING=aar
Expand Down
Loading
Loading