c1_unity/Assets/ThirdParty/AppsFlyer/AppsFlyerAdRevenue.cs
2023-07-26 00:05:41 +08:00

173 lines
6.4 KiB
C#

using System.Collections.Generic;
using UnityEngine;
using System.Runtime.InteropServices;
using System;
namespace AppsFlyerSDK
{
public class AppsFlyerAdRevenue : MonoBehaviour
{
public static readonly string kAppsFlyerAdRevenueVersion = "6.5.4";
#if UNITY_ANDROID && !UNITY_EDITOR
private static AndroidJavaClass appsFlyerAndroid = new AndroidJavaClass("com.appsflyer.unity.afunityadrevenuegenericplugin.AdRevenueUnityWrapper");
#endif
public static void start()
{
#if UNITY_IOS && !UNITY_EDITOR
_start();
#elif UNITY_ANDROID && !UNITY_EDITOR
using(AndroidJavaClass cls_UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) {
using(AndroidJavaObject cls_Activity = cls_UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity")) {
AndroidJavaObject cls_Application = cls_Activity.Call<AndroidJavaObject>("getApplication");
appsFlyerAndroid.CallStatic("start", cls_Application);
}
}
#else
#endif
}
public static void setIsDebug(bool isDebug)
{
#if UNITY_IOS && !UNITY_EDITOR
_setIsDebugAdrevenue(isDebug);
#elif UNITY_ANDROID && !UNITY_EDITOR
#else
#endif
}
public static void logAdRevenue(string monetizationNetwork,
AppsFlyerAdRevenueMediationNetworkType mediationNetwork,
double eventRevenue,
string revenueCurrency,
Dictionary<string, string> additionalParameters)
{
#if UNITY_IOS && !UNITY_EDITOR
_logAdRevenue(monetizationNetwork, mediationNetwork, eventRevenue, revenueCurrency, AFMiniJSON.Json.Serialize(additionalParameters));
#elif UNITY_ANDROID && !UNITY_EDITOR
int mediationNetworkAndroid = setMediationNetworkTypeAndroid(mediationNetwork);
if (mediationNetworkAndroid == -1)
{
Debug.Log("Please choose a valid mediationNetwork");
} else
{
appsFlyerAndroid.CallStatic("logAdRevenue",
monetizationNetwork,
mediationNetworkAndroid,
revenueCurrency,
eventRevenue,
convertDictionaryToJavaMap(additionalParameters));
}
#else
#endif
}
#if UNITY_IOS && !UNITY_EDITOR
[DllImport("__Internal")]
private static extern void _start();
[DllImport("__Internal")]
private static extern void _setIsDebugAdrevenue(bool isDebug);
[DllImport("__Internal")]
private static extern void _logAdRevenue(string monetizationNetwork,
AppsFlyerAdRevenueMediationNetworkType mediationNetwork,
double eventRevenue,
string revenueCurrency,
string additionalParameters);
#elif UNITY_ANDROID && !UNITY_EDITOR
#else
#endif
private static int setMediationNetworkTypeAndroid(AppsFlyerAdRevenueMediationNetworkType mediationNetwork)
{
switch (mediationNetwork)
{
case AppsFlyerAdRevenueMediationNetworkType.AppsFlyerAdRevenueMediationNetworkTypeIronSource:
return 0;
case AppsFlyerAdRevenueMediationNetworkType.AppsFlyerAdRevenueMediationNetworkTypeApplovinMax:
return 1;
case AppsFlyerAdRevenueMediationNetworkType.AppsFlyerAdRevenueMediationNetworkTypeGoogleAdMob:
return 2;
case AppsFlyerAdRevenueMediationNetworkType.AppsFlyerAdRevenueMediationNetworkTypeFyber:
return 3;
case AppsFlyerAdRevenueMediationNetworkType.AppsFlyerAdRevenueMediationNetworkTypeAppodeal:
return 4;
case AppsFlyerAdRevenueMediationNetworkType.AppsFlyerAdRevenueMediationNetworkTypeAdmost:
return 5;
case AppsFlyerAdRevenueMediationNetworkType.AppsFlyerAdRevenueMediationNetworkTypeTopon:
return 6;
case AppsFlyerAdRevenueMediationNetworkType.AppsFlyerAdRevenueMediationNetworkTypeTradplus:
return 7;
case AppsFlyerAdRevenueMediationNetworkType.AppsFlyerAdRevenueMediationNetworkTypeYandex:
return 8;
case AppsFlyerAdRevenueMediationNetworkType.AppsFlyerAdRevenueMediationNetworkTypeChartBoost:
return 9;
case AppsFlyerAdRevenueMediationNetworkType.AppsFlyerAdRevenueMediationNetworkTypeUnity:
return 10;
default:
return -1;
}
}
private static AndroidJavaObject convertDictionaryToJavaMap(Dictionary<string, string> dictionary)
{
AndroidJavaObject map = new AndroidJavaObject("java.util.HashMap");
IntPtr putMethod = AndroidJNIHelper.GetMethodID(map.GetRawClass(), "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
jvalue[] val;
if (dictionary != null)
{
foreach (var entry in dictionary)
{
val = AndroidJNIHelper.CreateJNIArgArray(new object[] { entry.Key, entry.Value });
AndroidJNI.CallObjectMethod(map.GetRawObject(), putMethod, val);
AndroidJNI.DeleteLocalRef(val[0].l);
AndroidJNI.DeleteLocalRef(val[1].l);
}
}
return map;
}
}
public enum AppsFlyerAdRevenueMediationNetworkType
{
AppsFlyerAdRevenueMediationNetworkTypeGoogleAdMob = 1,
AppsFlyerAdRevenueMediationNetworkTypeIronSource = 2,
AppsFlyerAdRevenueMediationNetworkTypeApplovinMax = 3,
AppsFlyerAdRevenueMediationNetworkTypeFyber = 4,
AppsFlyerAdRevenueMediationNetworkTypeAppodeal = 5,
AppsFlyerAdRevenueMediationNetworkTypeAdmost = 6,
AppsFlyerAdRevenueMediationNetworkTypeTopon = 7,
AppsFlyerAdRevenueMediationNetworkTypeTradplus = 8,
AppsFlyerAdRevenueMediationNetworkTypeYandex = 9,
AppsFlyerAdRevenueMediationNetworkTypeChartBoost = 10,
AppsFlyerAdRevenueMediationNetworkTypeUnity = 11
}
}