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); | ||
|  |     } | ||
|  | } |