using System.Collections.Generic;
using Chartboost.Constants;
using Chartboost.Mediation.MetaAudienceNetwork.Common;
using UnityEngine;
namespace Chartboost.Mediation.MetaAudienceNetwork.Android
{
internal sealed class MetaAudienceNetworkAdapter : IMetaAudienceNetworkAdapter
{
private const string MetaAudienceNetworkAdapterConfiguration = "com.chartboost.mediation.metaaudiencenetworkadapter.MetaAudienceNetworkAdapterConfiguration";
private const string MetaAudienceNetworkAdSettings = "com.facebook.ads.AdSettings";
private const string FunctionGetPlacementIds = "getPlacementIds";
private const string FunctionSetPlacementIds = "setPlacementIds";
private const string FunctionSetDebugBuild = "setDebugBuild";
[RuntimeInitializeOnLoadMethod]
private static void RegisterInstance()
{
if (Application.isEditor)
return;
MetaAudienceNetwork.MetaAudienceNetworkAdapter.Instance = new MetaAudienceNetworkAdapter();
}
///
public string AdapterNativeVersion
{
get
{
using var adapterConfiguration = new AndroidJavaObject(MetaAudienceNetworkAdapterConfiguration);
return adapterConfiguration.Call(SharedAndroidConstants.FunctionGetAdapterVersion);
}
}
///
public string PartnerSDKVersion
{
get
{
using var adapterConfiguration = new AndroidJavaObject(MetaAudienceNetworkAdapterConfiguration);
return adapterConfiguration.Call(SharedAndroidConstants.FunctionGetPartnerSdkVersion);
}
}
///
public string PartnerIdentifier
{
get
{
using var adapterConfiguration = new AndroidJavaObject(MetaAudienceNetworkAdapterConfiguration);
return adapterConfiguration.Call(SharedAndroidConstants.FunctionGetPartnerId);
}
}
///
public string PartnerDisplayName
{
get
{
using var adapterConfiguration = new AndroidJavaObject(MetaAudienceNetworkAdapterConfiguration);
return adapterConfiguration.Call(SharedAndroidConstants.FunctionGetPartnerDisplayName);
}
}
///
public bool TestMode
{
get
{
using var adapterConfiguration = new AndroidJavaObject(MetaAudienceNetworkAdapterConfiguration);
return adapterConfiguration.Call(SharedAndroidConstants.FunctionGetTestMode);
}
set
{
using var adapterConfiguration = new AndroidJavaObject(MetaAudienceNetworkAdapterConfiguration);
adapterConfiguration.Call(SharedAndroidConstants.FunctionSetTestMode, value);
}
}
///
public bool VerboseLogging
{
get => _verboseLogging;
set
{
using var adapterConfiguration = new AndroidJavaClass(MetaAudienceNetworkAdSettings);
adapterConfiguration.CallStatic(FunctionSetDebugBuild, value);
_verboseLogging = value;
}
}
// TODO - android does not provide getters for properties, keeping track of it on Unity for the time being. NOT IDEAL.
private bool _verboseLogging;
///
public IReadOnlyCollection PlacementIds
{
get
{
using var adapterConfiguration = new AndroidJavaObject(MetaAudienceNetworkAdapterConfiguration);
return adapterConfiguration.Call(FunctionGetPlacementIds).NativeListToList();
}
set
{
using var adapterConfiguration = new AndroidJavaObject(MetaAudienceNetworkAdapterConfiguration);
adapterConfiguration.Call(FunctionSetPlacementIds, value.EnumerableToNativeList());
}
}
}
}