99 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
| using UnityEngine;
 | |
| using BigoAds.Scripts.Api;
 | |
| using BigoAds.Scripts.Common;
 | |
| using BigoAds.Scripts.Api.Constant;
 | |
| 
 | |
| public class AdHelper
 | |
| {
 | |
|     public static void ShowBannerAd(AndroidJavaObject bannerAd)
 | |
|     {
 | |
|         ShowBannerAd(bannerAd, BigoPosition.Bottom);
 | |
|     }
 | |
| 
 | |
|     public static void ShowBannerAd(AndroidJavaObject bannerAd, BigoPosition position)
 | |
|     {
 | |
|         if (bannerAd == null) return;
 | |
|         var adView = bannerAd.Call<AndroidJavaObject>("adView");
 | |
|         SetViewPosition(adView, position);
 | |
|     }
 | |
| 
 | |
|     public static void ShowNativeAd(AndroidJavaObject nativeAd)
 | |
|     {
 | |
|         ShowNativeAd(nativeAd, BigoPosition.Bottom);
 | |
|     }
 | |
| 
 | |
|     public static void RemoveAdView()
 | |
|     {
 | |
|         var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
 | |
|         var activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
 | |
|         new AndroidJavaClass("sg.bigo.ads.AdHelper").CallStatic("removeAdView", activity);
 | |
|     }
 | |
| 
 | |
|     public static void ShowNativeAd(AndroidJavaObject nativeAd, BigoPosition position) 
 | |
|     {
 | |
|         if (nativeAd == null) return;
 | |
|         var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
 | |
|         var activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
 | |
|         var adView = new AndroidJavaClass("sg.bigo.ads.AdHelper").CallStatic<AndroidJavaObject>("renderNativeAdView", activity, nativeAd, "layout_bigo_native_ad");
 | |
|         SetViewPosition(adView, position);
 | |
|     }
 | |
| 
 | |
|     public static void SetViewPosition(AndroidJavaObject adView, BigoPosition position)
 | |
|     {
 | |
|         var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
 | |
|         var activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
 | |
|         int positionInt;
 | |
|         switch (position)
 | |
|         {
 | |
|             case BigoPosition.Top:
 | |
|                 positionInt = 48;
 | |
|                 break;
 | |
|             case BigoPosition.Middle:
 | |
|                 positionInt = 16;
 | |
|                 break;
 | |
|             case BigoPosition.Bottom:
 | |
|             default:
 | |
|                 positionInt = 80;
 | |
|                 break;
 | |
|         }
 | |
|         new AndroidJavaClass("sg.bigo.ads.AdHelper").CallStatic("addAdView", activity, adView, positionInt);
 | |
|     }
 | |
|     
 | |
| 
 | |
|     public abstract class Task : AndroidJavaProxy
 | |
|     {
 | |
|         public Task() : base("java.lang.Runnable")
 | |
|         {
 | |
|         }
 | |
| 
 | |
|         public abstract void run();
 | |
|     }
 | |
| 
 | |
|     public static void DestroyAd(AndroidJavaObject ad)
 | |
|     {
 | |
|         if (ad != null) {
 | |
|             PostToAndroidMainThread(new DestryAdTask(ad));
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private class DestryAdTask : Task
 | |
|     {
 | |
|         public AndroidJavaObject Ad;
 | |
|         
 | |
|         public DestryAdTask(AndroidJavaObject ad)
 | |
|         {
 | |
|             this.Ad = ad;
 | |
|         }
 | |
| 
 | |
|         public override void run()
 | |
|         {
 | |
|             Ad.Call("destroy");
 | |
|             AdHelper.RemoveAdView();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public static void PostToAndroidMainThread(Task task)
 | |
|     {
 | |
|         new AndroidJavaClass("sg.bigo.ads.AdHelper").CallStatic("postToAndroidMainThread", task);
 | |
|     }
 | |
| } |