| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  | using System; | 
					
						
							| 
									
										
										
										
											2025-09-01 15:57:10 +00:00
										 |  |  | using GoogleMobileAds.Api; | 
					
						
							| 
									
										
										
										
											2025-09-02 02:07:10 +00:00
										 |  |  | using UnityEngine; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // using UnityEditor.Media; | 
					
						
							| 
									
										
										
										
											2025-08-31 13:19:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-01 10:32:50 +00:00
										 |  |  | namespace WZ | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  | { | 
					
						
							|  |  |  |     /// <summary> | 
					
						
							|  |  |  |     /// 提供广告SDK功能的统一接口 | 
					
						
							|  |  |  |     /// </summary> | 
					
						
							|  |  |  |     public interface IAdService | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 获取广告客户端名称 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							|  |  |  |         string ClientName { get; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-01 07:14:26 +00:00
										 |  |  |         PlatformType Platfrom { get; } | 
					
						
							| 
									
										
										
										
											2025-09-01 12:53:08 +00:00
										 |  |  |         void RefreshAdsData(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 初始化广告SDK | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							|  |  |  |         void Initialize(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #region 横幅广告功能 | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 加载横幅广告 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							|  |  |  |         void LoadBanner(); | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 检查横幅广告是否可用 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							|  |  |  |         bool IsBannerAvailable(); | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 显示横幅广告 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							|  |  |  |         void DisplayBanner(); | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 隐藏横幅广告 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							|  |  |  |         void HideBanner(); | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 获取横幅广告收益信息 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							|  |  |  |         double GetBannerRevenue(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #endregion | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #region 插页广告功能 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 加载插页广告 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							|  |  |  |         void LoadInterstitial(); | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 检查插页广告是否可用 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							|  |  |  |         bool IsInterstitialAvailable(); | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 显示插页广告 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							| 
									
										
										
										
											2025-09-01 14:14:33 +00:00
										 |  |  |         void DisplayInterstitial(string _adPos, IvType _IvType = IvType.IV1, Action<double> _closeCallback = null); | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 获取插页广告收益信息 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							|  |  |  |         double GetInterstitialRevenue(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #endregion | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #region 激励广告功能 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 加载激励广告 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							|  |  |  |         void LoadRewarded(); | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 检查激励广告是否可用 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							|  |  |  |         bool IsRewardedAvailable(); | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 显示激励广告 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							| 
									
										
										
										
											2025-09-01 14:14:33 +00:00
										 |  |  |         void DisplayRewarded(string _adPos, Action<bool,double> _rewardCallback = null, Action _showFailedCallback = null); | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 获取激励广告收益信息 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							|  |  |  |         double GetRewardedRevenue(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #endregion | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #region 开屏广告功能 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 加载开屏广告 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							|  |  |  |         void LoadSplash(); | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 检查开屏广告是否可用 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							|  |  |  |         bool IsSplashAvailable(); | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 显示开屏广告 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							|  |  |  |         void DisplaySplash(); | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 获取开屏广告收益信息 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							|  |  |  |         double GetSplashRevenue(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #endregion | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #region 原生广告功能 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 加载原生广告 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							|  |  |  |         void LoadNative(); | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 检查原生广告是否可用 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							| 
									
										
										
										
											2025-09-02 02:07:10 +00:00
										 |  |  |         bool IsNativeAvailable(string adUnitId); | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 显示原生广告 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							|  |  |  |         /// <param name="position">广告位置和尺寸信息</param> | 
					
						
							| 
									
										
										
										
											2025-09-02 02:07:10 +00:00
										 |  |  |         void DisplayNative(string _adPos, string adUnitId, NativeAdPosition position); | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 移除原生广告 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							| 
									
										
										
										
											2025-09-02 02:07:10 +00:00
										 |  |  |         void RemoveNative(string adUnitId); | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 获取原生广告收益信息 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							| 
									
										
										
										
											2025-09-02 02:07:10 +00:00
										 |  |  |         double GetNativeRevenue(string adUnitId); | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         #endregion | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /// <summary> | 
					
						
							|  |  |  |     /// 表示处理回调的信息 | 
					
						
							|  |  |  |     /// </summary> | 
					
						
							|  |  |  |     [Serializable] | 
					
						
							|  |  |  |     public struct CallbackResult | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 回调消息 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							|  |  |  |         public string Message; | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 指示广告是否准备就绪 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							|  |  |  |         public bool IsReady; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /// <summary> | 
					
						
							|  |  |  |     /// 表示原生广告的位置和尺寸 | 
					
						
							|  |  |  |     /// </summary> | 
					
						
							|  |  |  |     [Serializable] | 
					
						
							|  |  |  |     public class NativeAdPosition | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// X坐标 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							|  |  |  |         public int X; | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// Y坐标 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							|  |  |  |         public int Y; | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 广告宽度 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							|  |  |  |         public int Width; | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  |         /// <summary> | 
					
						
							|  |  |  |         /// 广告高度 | 
					
						
							|  |  |  |         /// </summary> | 
					
						
							|  |  |  |         public int Height; | 
					
						
							| 
									
										
										
										
											2025-09-01 15:57:10 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         public NativeTemplateStyle NativeTemplateStyle; | 
					
						
							| 
									
										
										
										
											2025-09-02 02:07:10 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static NativeAdPosition Create(NativeTemplateStyle nativeTemplateStyle,RectTransform pRect, Camera pCam = null) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             var tWorldCorners = new Vector3[4]; | 
					
						
							|  |  |  |             pRect.GetWorldCorners(tWorldCorners); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             var tTopLeft = RectTransformUtility.WorldToScreenPoint(pCam, tWorldCorners[1]); | 
					
						
							|  |  |  |             var tBottomRight = RectTransformUtility.WorldToScreenPoint(pCam, tWorldCorners[3]); | 
					
						
							|  |  |  |             var tWidth = Mathf.Abs(tBottomRight.x - tTopLeft.x); | 
					
						
							|  |  |  |             var tHeight = Mathf.Abs(tBottomRight.y - tTopLeft.y); | 
					
						
							|  |  |  |             return new NativeAdPosition | 
					
						
							|  |  |  |             { | 
					
						
							| 
									
										
										
										
											2025-09-02 02:56:23 +00:00
										 |  |  |                 X = PX2DP.PxToDp(tTopLeft.x), | 
					
						
							|  |  |  |                 Y = PX2DP.PxToDp(Screen.height - tTopLeft.y), | 
					
						
							| 
									
										
										
										
											2025-09-02 02:07:10 +00:00
										 |  |  |                 Width = (int)tWidth, | 
					
						
							|  |  |  |                 Height = (int)tHeight, | 
					
						
							|  |  |  |                 NativeTemplateStyle = nativeTemplateStyle | 
					
						
							|  |  |  |             }; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  |      | 
					
						
							|  |  |  |         [System.Serializable] | 
					
						
							|  |  |  |         public struct HandCallbackInfo | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             public string msg; | 
					
						
							|  |  |  |             public bool isReady; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2025-08-30 09:24:58 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | } |