using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using AnyThinkAds.Common; using AnyThinkAds.Api; #pragma warning disable 0067 namespace AnyThinkAds.Android { public class ATBannerAdClient : AndroidJavaProxy, IATBannerAdClient { private Dictionary bannerHelperMap = new Dictionary(); private ATBannerAdListener anyThinkListener; public event EventHandler onAdLoadEvent; // triggers when a banner ad has failed to load public event EventHandler onAdLoadFailureEvent; // triggers when a banner ad generates an impression public event EventHandler onAdImpressEvent; // triggers when the user clicks a banner ad public event EventHandler onAdClickEvent; // triggers when the ad refreshes public event EventHandler onAdAutoRefreshEvent; // triggers when the ad fails to auto refresh public event EventHandler onAdAutoRefreshFailureEvent; // triggers when the banner ad is closed public event EventHandler onAdCloseEvent; // triggers when the users closes the ad via the button public event EventHandler onAdCloseButtonTappedEvent; public event EventHandler onAdSourceAttemptEvent; public event EventHandler onAdSourceFilledEvent; public event EventHandler onAdSourceLoadFailureEvent; public event EventHandler onAdSourceBiddingAttemptEvent; public event EventHandler onAdSourceBiddingFilledEvent; public event EventHandler onAdSourceBiddingFailureEvent; public ATBannerAdClient() : base("com.anythink.unitybridge.banner.BannerListener") { } public void loadBannerAd(string placementId, string mapJson) { //如果不存在则直接创建对应广告位的helper if(!bannerHelperMap.ContainsKey(placementId)) { AndroidJavaObject bannerHelper = new AndroidJavaObject( "com.anythink.unitybridge.banner.BannerHelper", this); bannerHelper.Call("initBanner", placementId); bannerHelperMap.Add(placementId, bannerHelper); Debug.Log("ATBannerAdClient : no exit helper ,create helper "); } try { Debug.Log("ATBannerAdClient : loadBannerAd "); bannerHelperMap[placementId].Call("loadBannerAd", mapJson); } catch (System.Exception e) { System.Console.WriteLine("Exception caught: {0}", e); Debug.Log ("ATBannerAdClient : error."+e.Message); } } public string checkAdStatus(string placementId) { string adStatusJsonString = ""; Debug.Log("ATBannerAdClient : checkAdStatus...."); try { if (bannerHelperMap.ContainsKey(placementId)) { adStatusJsonString = bannerHelperMap[placementId].Call("checkAdStatus"); } } catch (System.Exception e) { System.Console.WriteLine("Exception caught: {0}", e); Debug.Log("ATBannerAdClient : error." + e.Message); } return adStatusJsonString; } public string getValidAdCaches(string placementId) { string validAdCachesString = ""; Debug.Log("ATBannerAdClient : getValidAdCaches...."); try { if (bannerHelperMap.ContainsKey(placementId)) { validAdCachesString = bannerHelperMap[placementId].Call("getValidAdCaches"); } } catch (System.Exception e) { System.Console.WriteLine("Exception caught: {0}", e); Debug.Log("ATBannerAdClient : error." + e.Message); } return validAdCachesString; } public void setListener(ATBannerAdListener listener) { anyThinkListener = listener; } public void showBannerAd(string placementId, string position, string mapJson) { Debug.Log("ATBannerAdClient : showBannerAd by position" ); //todo try { if (bannerHelperMap.ContainsKey(placementId)) { this.bannerHelperMap[placementId].Call("showBannerAd", position, mapJson); } } catch (System.Exception e) { System.Console.WriteLine("Exception caught: {0}", e); Debug.Log("ATBannerAdClient : error." + e.Message); } } public void showBannerAd(string placementId, ATRect rect, string mapJson) { Debug.Log("ATBannerAdClient : showBannerAd " ); try{ if (bannerHelperMap.ContainsKey(placementId)) { this.bannerHelperMap[placementId].Call ("showBannerAd", rect.x, rect.y, rect.width, rect.height, mapJson, rect.usesPixel); } }catch(System.Exception e){ System.Console.WriteLine("Exception caught: {0}", e); Debug.Log ("ATBannerAdClient : error."+e.Message); } } public void cleanBannerAd(string placementId) { Debug.Log("ATBannerAdClient : cleanBannerAd" ); try{ if (bannerHelperMap.ContainsKey(placementId)) { this.bannerHelperMap[placementId].Call ("cleanBannerAd"); } }catch(System.Exception e){ System.Console.WriteLine("Exception caught: {0}", e); Debug.Log ("ATBannerAdClient : error."+e.Message); } } public void hideBannerAd(string placementId) { Debug.Log("ATBannerAdClient : hideBannerAd"); try { if (bannerHelperMap.ContainsKey(placementId)) { this.bannerHelperMap[placementId].Call("hideBannerAd"); } } catch (System.Exception e) { System.Console.WriteLine("Exception caught: {0}", e); Debug.Log("ATBannerAdClient : error." + e.Message); } } //针对已有的进行展示,没有就调用该方法无效 public void showBannerAd(string placementId) { Debug.Log("ATBannerAdClient : showBannerAd "); try { if (bannerHelperMap.ContainsKey(placementId)) { this.bannerHelperMap[placementId].Call("showBannerAd"); } } catch (System.Exception e) { System.Console.WriteLine("Exception caught: {0}", e); Debug.Log("ATBannerAdClient : error." + e.Message); } } public void cleanCache(string placementId) { } //广告加载成功 public void onBannerLoaded(string placementId) { Debug.Log("onBannerLoaded...unity3d."); onAdLoadEvent?.Invoke(this, new ATAdEventArgs(placementId)); } //广告加载失败 public void onBannerFailed(string placementId,string code, string error) { Debug.Log("onBannerFailed...unity3d."); onAdLoadFailureEvent?.Invoke(this, new ATAdErrorEventArgs(placementId, code, error)); } //广告点击 public void onBannerClicked(string placementId, string callbackJson) { Debug.Log("onBannerClicked...unity3d."); onAdClickEvent?.Invoke(this, new ATAdEventArgs(placementId, callbackJson)); } //广告展示 public void onBannerShow(string placementId, string callbackJson) { Debug.Log("onBannerShow...unity3d."); onAdImpressEvent?.Invoke(this, new ATAdEventArgs(placementId, callbackJson)); } //广告关闭 public void onBannerClose(string placementId, string callbackJson) { Debug.Log("onBannerClose...unity3d."); onAdCloseEvent?.Invoke(this, new ATAdEventArgs(placementId, callbackJson)); } //广告关闭 public void onBannerAutoRefreshed(string placementId, string callbackJson) { Debug.Log("onBannerAutoRefreshed...unity3d."); onAdAutoRefreshEvent?.Invoke(this, new ATAdEventArgs(placementId, callbackJson)); } //广告自动刷新失败 public void onBannerAutoRefreshFail(string placementId, string code, string msg) { Debug.Log("onBannerAutoRefreshFail...unity3d."); onAdAutoRefreshFailureEvent?.Invoke(this, new ATAdErrorEventArgs(placementId, code, msg)); } // Adsource Listener public void onAdSourceBiddingAttempt(string placementId, string callbackJson) { Debug.Log("onAdSourceBiddingAttempt...unity3d." + placementId + "," + callbackJson); onAdSourceBiddingAttemptEvent?.Invoke(this, new ATAdEventArgs(placementId, callbackJson)); } public void onAdSourceBiddingFilled(string placementId, string callbackJson) { Debug.Log("onAdSourceBiddingFilled...unity3d." + placementId + "," + callbackJson); onAdSourceBiddingFilledEvent?.Invoke(this, new ATAdEventArgs(placementId, callbackJson)); } public void onAdSourceBiddingFail(string placementId, string callbackJson, string code, string error) { Debug.Log("onAdSourceBiddingFail...unity3d." + placementId + "," + code + "," + error + "," + callbackJson); onAdSourceBiddingFailureEvent?.Invoke(this, new ATAdErrorEventArgs(placementId, callbackJson, code, error)); } public void onAdSourceAttempt(string placementId, string callbackJson) { Debug.Log("onAdSourceAttempt...unity3d." + placementId + "," + callbackJson); onAdSourceAttemptEvent?.Invoke(this, new ATAdEventArgs(placementId, callbackJson)); } public void onAdSourceLoadFilled(string placementId, string callbackJson) { Debug.Log("onAdSourceLoadFilled...unity3d." + placementId + "," + callbackJson); onAdSourceFilledEvent?.Invoke(this, new ATAdEventArgs(placementId, callbackJson)); } public void onAdSourceLoadFail(string placementId, string callbackJson, string code, string error) { Debug.Log("onAdSourceLoadFail...unity3d." + placementId + "," + code + "," + error + "," + callbackJson); onAdSourceLoadFailureEvent?.Invoke(this, new ATAdErrorEventArgs(placementId, callbackJson, code, error)); } } }