Skip to content

Commit d37eaec

Browse files
authored
Merge pull request #218 from adjust/v4290
Version 4.29.0
2 parents 166e9cf + a1169f1 commit d37eaec

27 files changed

+703
-81
lines changed

Assets/Adjust/Android/AdjustAndroid.cs

+68-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace com.adjust.sdk
88
#if UNITY_ANDROID
99
public class AdjustAndroid
1010
{
11-
private const string sdkPrefix = "unity4.28.0";
11+
private const string sdkPrefix = "unity4.29.0";
1212
private static bool launchDeferredDeeplink = true;
1313
private static AndroidJavaClass ajcAdjust = new AndroidJavaClass("com.adjust.sdk.Adjust");
1414
private static AndroidJavaObject ajoCurrentActivity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");
@@ -140,6 +140,11 @@ public static void Start(AdjustConfig adjustConfig)
140140
AndroidJavaObject ajoDataResidencyEU = new AndroidJavaClass("com.adjust.sdk.AdjustConfig").GetStatic<AndroidJavaObject>("DATA_RESIDENCY_EU");
141141
ajoAdjustConfig.Call("setUrlStrategy", ajoDataResidencyEU);
142142
}
143+
else if (adjustConfig.urlStrategy == AdjustConfig.AdjustDataResidencyTR)
144+
{
145+
AndroidJavaObject ajoDataResidencyTR = new AndroidJavaClass("com.adjust.sdk.AdjustConfig").GetStatic<AndroidJavaObject>("DATA_RESIDENCY_TR");
146+
ajoAdjustConfig.Call("setUrlStrategy", ajoDataResidencyTR);
147+
}
143148
}
144149

145150
// Check if user has set app secret.
@@ -421,6 +426,68 @@ public static void TrackAdRevenue(string source, string payload)
421426
ajcAdjust.CallStatic("trackAdRevenue", source, jsonPayload);
422427
}
423428

429+
public static void TrackAdRevenue(AdjustAdRevenue adRevenue)
430+
{
431+
AndroidJavaObject ajoAdjustAdRevenue = new AndroidJavaObject("com.adjust.sdk.AdjustAdRevenue", adRevenue.source);
432+
433+
// Check if user has set revenue.
434+
if (adRevenue.revenue != null)
435+
{
436+
AndroidJavaObject ajoRevenue = new AndroidJavaObject("java.lang.Double", adRevenue.revenue);
437+
ajoAdjustAdRevenue.Call("setRevenue", ajoRevenue, adRevenue.currency);
438+
}
439+
440+
// Check if user has set ad impressions count.
441+
if (adRevenue.adImpressionsCount != null)
442+
{
443+
AndroidJavaObject ajoAdImpressionsCount = new AndroidJavaObject("java.lang.Integer", adRevenue.adImpressionsCount);
444+
ajoAdjustAdRevenue.Call("setAdImpressionsCount", ajoAdImpressionsCount);
445+
}
446+
447+
// Check if user has set ad revenue network.
448+
if (adRevenue.adRevenueNetwork != null)
449+
{
450+
ajoAdjustAdRevenue.Call("setAdRevenueNetwork", adRevenue.adRevenueNetwork);
451+
}
452+
453+
// Check if user has set ad revenue unit.
454+
if (adRevenue.adRevenueUnit != null)
455+
{
456+
ajoAdjustAdRevenue.Call("setAdRevenueUnit", adRevenue.adRevenueUnit);
457+
}
458+
459+
// Check if user has set ad revenue placement.
460+
if (adRevenue.adRevenuePlacement != null)
461+
{
462+
ajoAdjustAdRevenue.Call("setAdRevenuePlacement", adRevenue.adRevenuePlacement);
463+
}
464+
465+
// Check if user has added any callback parameters.
466+
if (adRevenue.callbackList != null)
467+
{
468+
for (int i = 0; i < adRevenue.callbackList.Count; i += 2)
469+
{
470+
string key = adRevenue.callbackList[i];
471+
string value = adRevenue.callbackList[i + 1];
472+
ajoAdjustAdRevenue.Call("addCallbackParameter", key, value);
473+
}
474+
}
475+
476+
// Check if user has added any partner parameters.
477+
if (adRevenue.partnerList != null)
478+
{
479+
for (int i = 0; i < adRevenue.partnerList.Count; i += 2)
480+
{
481+
string key = adRevenue.partnerList[i];
482+
string value = adRevenue.partnerList[i + 1];
483+
ajoAdjustAdRevenue.Call("addPartnerParameter", key, value);
484+
}
485+
}
486+
487+
// Track ad revenue.
488+
ajcAdjust.CallStatic("trackAdRevenue", ajoAdjustAdRevenue);
489+
}
490+
424491
public static void TrackPlayStoreSubscription(AdjustPlayStoreSubscription subscription)
425492
{
426493
AndroidJavaObject ajoSubscription = new AndroidJavaObject("com.adjust.sdk.AdjustPlayStoreSubscription",
6.25 KB
Binary file not shown.

Assets/Adjust/Test/CommandExecutor.cs

+63
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ public void ExecuteCommand(Command command)
7272
case "trackSubscription": TrackSubscription(); break;
7373
case "thirdPartySharing": ThirdPartySharing(); break;
7474
case "measurementConsent": MeasurementConsent(); break;
75+
case "trackAdRevenueV2": TrackAdRevenueV2(); break;
7576
default: CommandNotFound(_command.ClassName, _command.MethodName); break;
7677
}
7778
}
@@ -847,6 +848,68 @@ private void MeasurementConsent()
847848
Adjust.trackMeasurementConsent(enabled);
848849
}
849850

851+
private void TrackAdRevenueV2()
852+
{
853+
string source = _command.GetFirstParameterValue("adRevenueSource");
854+
AdjustAdRevenue adRevenue = new AdjustAdRevenue(source);
855+
856+
if (_command.ContainsParameter("revenue"))
857+
{
858+
var revenueParams = _command.Parameters["revenue"];
859+
var currency = revenueParams[0];
860+
var revenue = double.Parse(revenueParams[1]);
861+
adRevenue.setRevenue(revenue, currency);
862+
}
863+
864+
if (_command.ContainsParameter("adImpressionsCount"))
865+
{
866+
int adImpressionsCount = int.Parse(_command.GetFirstParameterValue("adImpressionsCount"));
867+
adRevenue.setAdImpressionsCount(adImpressionsCount);
868+
}
869+
870+
if (_command.ContainsParameter("adRevenueUnit"))
871+
{
872+
string adRevenueUnit = _command.GetFirstParameterValue("adRevenueUnit");
873+
adRevenue.setAdRevenueUnit(adRevenueUnit);
874+
}
875+
876+
if (_command.ContainsParameter("adRevenuePlacement"))
877+
{
878+
string adRevenuePlacement = _command.GetFirstParameterValue("adRevenuePlacement");
879+
adRevenue.setAdRevenuePlacement(adRevenuePlacement);
880+
}
881+
882+
if (_command.ContainsParameter("adRevenueNetwork"))
883+
{
884+
string adRevenueNetwork = _command.GetFirstParameterValue("adRevenueNetwork");
885+
adRevenue.setAdRevenueNetwork(adRevenueNetwork);
886+
}
887+
888+
if (_command.ContainsParameter("callbackParams"))
889+
{
890+
var callbackParams = _command.Parameters["callbackParams"];
891+
for (var i = 0; i < callbackParams.Count; i = i + 2)
892+
{
893+
var key = callbackParams[i];
894+
var value = callbackParams[i + 1];
895+
adRevenue.addCallbackParameter(key, value);
896+
}
897+
}
898+
899+
if (_command.ContainsParameter("partnerParams"))
900+
{
901+
var partnerParams = _command.Parameters["partnerParams"];
902+
for (var i = 0; i < partnerParams.Count; i = i + 2)
903+
{
904+
var key = partnerParams[i];
905+
var value = partnerParams[i + 1];
906+
adRevenue.addPartnerParameter(key, value);
907+
}
908+
}
909+
910+
Adjust.trackAdRevenue(adRevenue);
911+
}
912+
850913
private void CommandNotFound(string className, string methodName)
851914
{
852915
TestApp.Log("Adjust Test: Method '" + methodName + "' not found for class '" + className + "'");

Assets/Adjust/Test/TestApp.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ private void StartTestSession()
4444
#endif
4545
// Set specific tests to run.
4646
// testLibrary.AddTest("current/eventBuffering/Test_EventBuffering_sensitive_packets");
47-
// testLibrary.AddTest("Test_ThirdPartySharing_after_install");
47+
// testLibrary.AddTest("Test_AdRevenue_ad_revenue_v2");
48+
// testLibrary.AddTest("Test_AdRevenue_ad_revenue_v2_invalid");
4849
// testLibrary.AddTestDirectory ("current/deeplink-deferred");
4950

5051
Log("Starting test session.");

Assets/Adjust/Unity/Adjust.cs

+43
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public class Adjust : MonoBehaviour
2929
private static Action<AdjustSessionSuccess> sessionSuccessDelegate = null;
3030
private static Action<AdjustSessionFailure> sessionFailureDelegate = null;
3131
private static Action<AdjustAttribution> attributionChangedDelegate = null;
32+
private static Action<int> conversionValueUpdatedDelegate = null;
3233
#endif
3334

3435
void Awake()
@@ -103,6 +104,7 @@ public static void start(AdjustConfig adjustConfig)
103104
Adjust.sessionFailureDelegate = adjustConfig.getSessionFailureDelegate();
104105
Adjust.deferredDeeplinkDelegate = adjustConfig.getDeferredDeeplinkDelegate();
105106
Adjust.attributionChangedDelegate = adjustConfig.getAttributionChangedDelegate();
107+
Adjust.conversionValueUpdatedDelegate = adjustConfig.getConversionValueUpdatedDelegate();
106108
AdjustiOS.Start(adjustConfig);
107109
#elif UNITY_ANDROID
108110
AdjustAndroid.Start(adjustConfig);
@@ -407,6 +409,24 @@ public static void trackAdRevenue(string source, string payload)
407409
#endif
408410
}
409411

412+
public static void trackAdRevenue(AdjustAdRevenue adRevenue)
413+
{
414+
if (IsEditor())
415+
{
416+
return;
417+
}
418+
419+
#if UNITY_IOS
420+
AdjustiOS.TrackAdRevenue(adRevenue);
421+
#elif UNITY_ANDROID
422+
AdjustAndroid.TrackAdRevenue(adRevenue);
423+
#elif (UNITY_WSA || UNITY_WP8)
424+
Debug.Log("[Adjust]: Ad revenue tracking is only supported for Android and iOS platforms.");
425+
#else
426+
Debug.Log(errorMsgPlatform);
427+
#endif
428+
}
429+
410430
public static void trackAppStoreSubscription(AdjustAppStoreSubscription subscription)
411431
{
412432
if (IsEditor())
@@ -802,6 +822,29 @@ public void GetNativeDeferredDeeplink(string deeplinkURL)
802822
Adjust.deferredDeeplinkDelegate(deeplinkURL);
803823
}
804824

825+
public void GetNativeConversionValueUpdated(string conversionValue)
826+
{
827+
if (IsEditor())
828+
{
829+
return;
830+
}
831+
832+
if (Adjust.conversionValueUpdatedDelegate == null)
833+
{
834+
Debug.Log("[Adjust]: Conversion value updated delegate was not set.");
835+
return;
836+
}
837+
838+
int cv = -1;
839+
if (Int32.TryParse(conversionValue, out cv))
840+
{
841+
if (cv != -1)
842+
{
843+
Adjust.conversionValueUpdatedDelegate(cv);
844+
}
845+
}
846+
}
847+
805848
public void GetAuthorizationStatus(string authorizationStatus)
806849
{
807850
if (IsEditor())
+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
using System;
2+
using System.Collections.Generic;
3+
4+
namespace com.adjust.sdk
5+
{
6+
public class AdjustAdRevenue
7+
{
8+
internal string source;
9+
internal double? revenue;
10+
internal string currency;
11+
internal int? adImpressionsCount;
12+
internal string adRevenueNetwork;
13+
internal string adRevenueUnit;
14+
internal string adRevenuePlacement;
15+
internal List<string> partnerList;
16+
internal List<string> callbackList;
17+
18+
public AdjustAdRevenue(string source)
19+
{
20+
this.source = source;
21+
}
22+
23+
public void setRevenue(double amount, string currency)
24+
{
25+
this.revenue = amount;
26+
this.currency = currency;
27+
}
28+
29+
public void setAdImpressionsCount(int adImpressionsCount)
30+
{
31+
this.adImpressionsCount = adImpressionsCount;
32+
}
33+
34+
public void setAdRevenueNetwork(string adRevenueNetwork)
35+
{
36+
this.adRevenueNetwork = adRevenueNetwork;
37+
}
38+
39+
public void setAdRevenueUnit(string adRevenueUnit)
40+
{
41+
this.adRevenueUnit = adRevenueUnit;
42+
}
43+
44+
public void setAdRevenuePlacement(string adRevenuePlacement)
45+
{
46+
this.adRevenuePlacement = adRevenuePlacement;
47+
}
48+
49+
public void addCallbackParameter(string key, string value)
50+
{
51+
if (callbackList == null)
52+
{
53+
callbackList = new List<string>();
54+
}
55+
callbackList.Add(key);
56+
callbackList.Add(value);
57+
}
58+
59+
public void addPartnerParameter(string key, string value)
60+
{
61+
if (partnerList == null)
62+
{
63+
partnerList = new List<string>();
64+
}
65+
partnerList.Add(key);
66+
partnerList.Add(value);
67+
}
68+
}
69+
}

Assets/Adjust/Unity/AdjustAdRevenue.cs.meta

+11
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Adjust/Unity/AdjustConfig.cs

+16-18
Original file line numberDiff line numberDiff line change
@@ -8,26 +8,12 @@ public class AdjustConfig
88
public const string AdjustUrlStrategyIndia = "india";
99

1010
public const string AdjustDataResidencyEU = "data-residency-eu";
11+
public const string AdjustDataResidencyTR = "data-residency-tr";
1112

13+
public const string AdjustAdRevenueSourceAppLovinMAX = "applovin_max_sdk";
1214
public const string AdjustAdRevenueSourceMopub = "mopub";
13-
public const string AdjustAdRevenueSourceAdmob = "admob";
14-
public const string AdjustAdRevenueSourceFbNativeAd = "facebook_native_ad";
15-
public const string AdjustAdRevenueSourceFbAudienceNetwork = "facebook_audience_network";
16-
public const string AdjustAdRevenueSourceIronsource = "ironsource";
17-
public const string AdjustAdRevenueSourceFyber = "fyber";
18-
public const string AdjustAdRevenueSourceAerserv = "aerserv";
19-
public const string AdjustAdRevenueSourceAppodeal = "appodeal";
20-
public const string AdjustAdRevenueSourceAdincube = "adincube";
21-
public const string AdjustAdRevenueSourceFusePowered = "fusepowered";
22-
public const string AdjustAdRevenueSourceAddaptr = "addapptr";
23-
public const string AdjustAdRevenueSourceMillenialMediation = "millennial_mediation";
24-
public const string AdjustAdRevenueSourceFlurry = "flurry";
25-
public const string AdjustAdRevenueSourceAdmost = "admost";
26-
public const string AdjustAdRevenueSourceDeltadna = "deltadna";
27-
public const string AdjustAdRevenueSourceUpsight = "upsight";
28-
public const string AdjustAdRevenueSourceUnityads = "unityads";
29-
public const string AdjustAdRevenueSourceAdtoapp = "adtoapp";
30-
public const string AdjustAdRevenueSourceTapdaq = "tapdaq";
15+
public const string AdjustAdRevenueSourceAdMob = "admob_sdk";
16+
public const string AdjustAdRevenueSourceIronSource = "ironsource_sdk";
3117

3218
internal string appToken;
3319
internal string sceneName;
@@ -55,6 +41,7 @@ public class AdjustConfig
5541
internal Action<AdjustSessionSuccess> sessionSuccessDelegate;
5642
internal Action<AdjustSessionFailure> sessionFailureDelegate;
5743
internal Action<AdjustAttribution> attributionChangedDelegate;
44+
internal Action<int> conversionValueUpdatedDelegate;
5845

5946
// Android specific members
6047
internal bool? readImei;
@@ -211,6 +198,17 @@ public Action<AdjustSessionFailure> getSessionFailureDelegate()
211198
return this.sessionFailureDelegate;
212199
}
213200

201+
public void setConversionValueUpdatedDelegate(Action<int> conversionValueUpdatedDelegate, string sceneName = "Adjust")
202+
{
203+
this.conversionValueUpdatedDelegate = conversionValueUpdatedDelegate;
204+
this.sceneName = sceneName;
205+
}
206+
207+
public Action<int> getConversionValueUpdatedDelegate()
208+
{
209+
return this.conversionValueUpdatedDelegate;
210+
}
211+
214212
public void setAppSecret(long secretId, long info1, long info2, long info3, long info4)
215213
{
216214
this.secretId = secretId;

0 commit comments

Comments
 (0)