You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
387 lines
9.9 KiB
C#
387 lines
9.9 KiB
C#
#if UNITY_ANDROID
|
|
using UnityEngine;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Globalization;
|
|
using System;
|
|
|
|
public class AndroidAgent : IronSourceIAgent
|
|
{
|
|
static AndroidJavaObject _androidBridge;
|
|
readonly static string AndroidBridge = "com.ironsource.unity.androidbridge.AndroidBridge";
|
|
const string REWARD_AMOUNT = "reward_amount";
|
|
const string REWARD_NAME = "reward_name";
|
|
const string PLACEMENT_NAME = "placement_name";
|
|
|
|
const string WATERFALL_CONFIG_FLOOR = "floor";
|
|
const string WATERFALL_CONFIG_CEILING = "ceiling";
|
|
const string WATERFALL_CONFIG_API = "setWaterfallConfiguration";
|
|
|
|
public AndroidAgent ()
|
|
{
|
|
initEventsDispatcher();
|
|
}
|
|
|
|
#region IronSourceIAgent implementation
|
|
public AndroidJavaObject getBridge ()
|
|
{
|
|
if (_androidBridge == null)
|
|
using (var pluginClass = new AndroidJavaClass( AndroidBridge ))
|
|
_androidBridge = pluginClass.CallStatic<AndroidJavaObject> ("getInstance");
|
|
|
|
return _androidBridge;
|
|
}
|
|
|
|
private void initEventsDispatcher()
|
|
{
|
|
IronSourceEventsDispatcher.initialize();
|
|
}
|
|
|
|
//******************* Base API *******************//
|
|
|
|
/// <summary>
|
|
/// Allows publishers to set configurations for a waterfall of a given ad type.
|
|
/// </summary>
|
|
/// <param name="waterfallConfiguration">The configuration for the given ad types waterfall. </param>
|
|
/// <param name="adFormat">The AdFormat for which to configure the waterfall.</param>
|
|
public void SetWaterfallConfiguration(WaterfallConfiguration waterfallConfiguration, AdFormat adFormat)
|
|
{
|
|
var ceiling = waterfallConfiguration.Ceiling;
|
|
var floor = waterfallConfiguration.Floor;
|
|
var dict = new Dictionary<string, string>();
|
|
|
|
if (ceiling.HasValue)
|
|
{
|
|
dict.Add(WATERFALL_CONFIG_CEILING, ceiling.Value.ToString(CultureInfo.InvariantCulture));
|
|
}
|
|
|
|
if (floor.HasValue)
|
|
{
|
|
dict.Add(WATERFALL_CONFIG_FLOOR, floor.Value.ToString(CultureInfo.InvariantCulture));
|
|
}
|
|
|
|
var json = IronSourceJSON.Json.Serialize(dict);
|
|
string stringAdFormat;
|
|
|
|
switch (adFormat)
|
|
{
|
|
case AdFormat.RewardedVideo:
|
|
stringAdFormat = "REWARDED_VIDEO";
|
|
break;
|
|
case AdFormat.Interstitial:
|
|
stringAdFormat = "INTERSTITIAL";
|
|
break;
|
|
case AdFormat.Banner:
|
|
stringAdFormat = "BANNER";
|
|
break;
|
|
default:
|
|
return;
|
|
}
|
|
|
|
getBridge().Call(WATERFALL_CONFIG_API, json, stringAdFormat);
|
|
}
|
|
|
|
public void onApplicationPause (bool pause)
|
|
{
|
|
if (pause)
|
|
{
|
|
getBridge ().Call ("onPause");
|
|
}
|
|
else
|
|
{
|
|
getBridge ().Call ("onResume");
|
|
}
|
|
}
|
|
|
|
public string getAdvertiserId ()
|
|
{
|
|
return getBridge ().Call<string> ("getAdvertiserId");
|
|
}
|
|
|
|
public void validateIntegration ()
|
|
{
|
|
getBridge ().Call ("validateIntegration");
|
|
}
|
|
|
|
public void shouldTrackNetworkState (bool track)
|
|
{
|
|
getBridge ().Call ("shouldTrackNetworkState", track);
|
|
}
|
|
|
|
public bool setDynamicUserId (string dynamicUserId)
|
|
{
|
|
return getBridge ().Call<bool> ("setDynamicUserId", dynamicUserId);
|
|
}
|
|
|
|
public void setAdaptersDebug(bool enabled)
|
|
{
|
|
getBridge ().Call ("setAdaptersDebug", enabled);
|
|
}
|
|
|
|
public void setMetaData(string key, string value)
|
|
{
|
|
getBridge().Call("setMetaData", key, value);
|
|
}
|
|
|
|
public void setMetaData(string key, params string[] values)
|
|
{
|
|
getBridge().Call("setMetaData", key, values);
|
|
}
|
|
|
|
public int? getConversionValue()
|
|
{
|
|
return null;
|
|
}
|
|
|
|
public void setManualLoadRewardedVideo(bool isOn)
|
|
{
|
|
getBridge().Call("setManualLoadRewardedVideo", isOn);
|
|
}
|
|
|
|
public void setNetworkData(string networkKey, string networkData)
|
|
{
|
|
getBridge().Call("setNetworkData", networkKey, networkData);
|
|
}
|
|
|
|
public void SetPauseGame (bool pause)
|
|
{
|
|
|
|
}
|
|
|
|
//******************* SDK Init *******************//
|
|
|
|
public void setUserId(string userId) {
|
|
getBridge ().Call ("setUserId", userId);
|
|
}
|
|
|
|
public void init(string appKey)
|
|
{
|
|
getBridge ().Call ("setPluginData", "Unity", IronSource.pluginVersion (), IronSource.unityVersion ());
|
|
Debug.Log ("IntegrationHelper pluginVersion: " + IronSource.pluginVersion ());
|
|
getBridge ().Call ("init", appKey);
|
|
}
|
|
|
|
public void init (string appKey, params string[] adUnits)
|
|
{
|
|
getBridge ().Call ("setPluginData", "Unity", IronSource.pluginVersion (), IronSource.unityVersion ());
|
|
Debug.Log ("IntegrationHelper pluginVersion: " + IronSource.pluginVersion ());
|
|
getBridge ().Call ("init", appKey, adUnits);
|
|
}
|
|
|
|
public void initISDemandOnly (string appKey, params string[] adUnits)
|
|
{
|
|
getBridge ().Call ("setPluginData", "Unity", IronSource.pluginVersion (), IronSource.unityVersion ());
|
|
Debug.Log ("IntegrationHelper pluginVersion: " + IronSource.pluginVersion ());
|
|
getBridge ().Call ("initISDemandOnly", appKey, adUnits);
|
|
}
|
|
|
|
//******************* RewardedVideo API *******************//
|
|
|
|
public void loadRewardedVideo()
|
|
{
|
|
getBridge().Call("loadRewardedVideo");
|
|
}
|
|
|
|
public void showRewardedVideo ()
|
|
{
|
|
getBridge ().Call ("showRewardedVideo");
|
|
}
|
|
|
|
public void showRewardedVideo (string placementName)
|
|
{
|
|
getBridge ().Call ("showRewardedVideo", placementName);
|
|
}
|
|
|
|
public bool isRewardedVideoAvailable ()
|
|
{
|
|
return getBridge ().Call<bool> ("isRewardedVideoAvailable");
|
|
}
|
|
|
|
public bool isRewardedVideoPlacementCapped (string placementName)
|
|
{
|
|
return getBridge ().Call<bool> ("isRewardedVideoPlacementCapped", placementName);
|
|
}
|
|
|
|
public IronSourcePlacement getPlacementInfo (string placementName)
|
|
{
|
|
string placementInfo = getBridge ().Call<string> ("getPlacementInfo", placementName);
|
|
IronSourcePlacement pInfo = null;
|
|
if (placementInfo != null) {
|
|
Dictionary<string,object> pInfoDic = IronSourceJSON.Json.Deserialize (placementInfo) as Dictionary<string,object>;
|
|
string pName = pInfoDic [PLACEMENT_NAME].ToString ();
|
|
string rName = pInfoDic [REWARD_NAME].ToString ();
|
|
int rAmount = Convert.ToInt32 (pInfoDic [REWARD_AMOUNT].ToString ());
|
|
|
|
pInfo = new IronSourcePlacement (pName, rName, rAmount);
|
|
}
|
|
return pInfo;
|
|
}
|
|
|
|
public void setRewardedVideoServerParams(Dictionary<string, string> parameters) {
|
|
string json = IronSourceJSON.Json.Serialize (parameters);
|
|
getBridge ().Call ("setRewardedVideoServerParams", json);
|
|
}
|
|
|
|
public void clearRewardedVideoServerParams() {
|
|
getBridge ().Call ("clearRewardedVideoServerParams");
|
|
}
|
|
|
|
//******************* RewardedVideo DemandOnly API *******************//
|
|
|
|
public void showISDemandOnlyRewardedVideo (string instanceId)
|
|
{
|
|
getBridge ().Call ("showISDemandOnlyRewardedVideo",instanceId);
|
|
}
|
|
|
|
public void loadISDemandOnlyRewardedVideo (string instanceId)
|
|
{
|
|
getBridge ().Call ("loadISDemandOnlyRewardedVideo", instanceId);
|
|
}
|
|
|
|
public bool isISDemandOnlyRewardedVideoAvailable (string instanceId)
|
|
{
|
|
return getBridge ().Call<bool> ("isISDemandOnlyRewardedVideoAvailable", instanceId);
|
|
}
|
|
|
|
//******************* Interstitial API *******************//
|
|
|
|
public void loadInterstitial ()
|
|
{
|
|
getBridge ().Call ("loadInterstitial");
|
|
}
|
|
|
|
public void showInterstitial ()
|
|
{
|
|
getBridge ().Call ("showInterstitial");
|
|
}
|
|
|
|
public void showInterstitial (string placementName)
|
|
{
|
|
getBridge ().Call ("showInterstitial", placementName);
|
|
}
|
|
|
|
public bool isInterstitialReady ()
|
|
{
|
|
return getBridge ().Call<bool> ("isInterstitialReady");
|
|
}
|
|
|
|
public bool isInterstitialPlacementCapped (string placementName)
|
|
{
|
|
return getBridge ().Call<bool> ("isInterstitialPlacementCapped", placementName);
|
|
}
|
|
|
|
//******************* Interstitial DemandOnly API *******************//
|
|
|
|
public void loadISDemandOnlyInterstitial (string instanceId)
|
|
{
|
|
getBridge ().Call ("loadISDemandOnlyInterstitial",instanceId);
|
|
}
|
|
|
|
public void showISDemandOnlyInterstitial (string instanceId)
|
|
{
|
|
getBridge ().Call ("showISDemandOnlyInterstitial",instanceId);
|
|
}
|
|
|
|
public bool isISDemandOnlyInterstitialReady (string instanceId)
|
|
{
|
|
return getBridge ().Call<bool> ("isISDemandOnlyInterstitialReady",instanceId);
|
|
}
|
|
|
|
//******************* Offerwall API *******************//
|
|
|
|
public void showOfferwall ()
|
|
{
|
|
getBridge ().Call ("showOfferwall");
|
|
}
|
|
|
|
public void showOfferwall (string placementName)
|
|
{
|
|
getBridge ().Call ("showOfferwall", placementName);
|
|
}
|
|
|
|
public void getOfferwallCredits ()
|
|
{
|
|
getBridge ().Call ("getOfferwallCredits");
|
|
}
|
|
|
|
public bool isOfferwallAvailable ()
|
|
{
|
|
return getBridge ().Call<bool> ("isOfferwallAvailable");
|
|
}
|
|
|
|
//******************* Banner API *******************//
|
|
|
|
public void loadBanner (IronSourceBannerSize size, IronSourceBannerPosition position)
|
|
{
|
|
loadBanner(size, position, "");
|
|
}
|
|
|
|
public void loadBanner (IronSourceBannerSize size, IronSourceBannerPosition position, string placementName)
|
|
{
|
|
getBridge().Call("loadBanner", size.Description, (int)size.Width, (int)size.Height, (int)position, placementName, (bool)size.IsAdaptiveEnabled());
|
|
}
|
|
|
|
public void destroyBanner()
|
|
{
|
|
getBridge ().Call ("destroyBanner");
|
|
}
|
|
|
|
public void displayBanner()
|
|
{
|
|
getBridge ().Call ("displayBanner");
|
|
}
|
|
|
|
public void hideBanner()
|
|
{
|
|
getBridge ().Call ("hideBanner");
|
|
}
|
|
|
|
public bool isBannerPlacementCapped(string placementName)
|
|
{
|
|
return getBridge ().Call<bool> ("isBannerPlacementCapped", placementName);
|
|
}
|
|
|
|
public void setSegment(IronSourceSegment segment)
|
|
{
|
|
Dictionary <string,string> dict = segment.getSegmentAsDict ();
|
|
string json = IronSourceJSON.Json.Serialize (dict);
|
|
getBridge ().Call ("setSegment", json);
|
|
}
|
|
|
|
public void setConsent(bool consent)
|
|
{
|
|
getBridge().Call("setConsent",consent);
|
|
}
|
|
|
|
//******************* ConsentView API *******************//
|
|
|
|
public void loadConsentViewWithType(string consentViewType)
|
|
{
|
|
}
|
|
|
|
public void showConsentViewWithType(string consentViewType)
|
|
{
|
|
}
|
|
|
|
//******************* ILRD API *******************//
|
|
|
|
public void setAdRevenueData(string dataSource, Dictionary<string, string> impressionData)
|
|
{
|
|
string json = IronSourceJSON.Json.Serialize(impressionData);
|
|
getBridge().Call("setAdRevenueData", dataSource, json);
|
|
}
|
|
|
|
//******************* TestSuite API *******************//
|
|
|
|
public void launchTestSuite()
|
|
{
|
|
Debug.Log("AndroidAgent: launching TestSuite");
|
|
getBridge().Call("launchTestSuite");
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
|
|
#endif
|
|
|