SDK_UnityMoney/Assets/Script/Common/IAdService.cs

233 lines
5.6 KiB
C#

using System;
using GoogleMobileAds.Api;
using UnityEngine;
// using UnityEditor.Media;
namespace WZ
{
/// <summary>
/// 提供广告SDK功能的统一接口
/// </summary>
public interface IAdService
{
/// <summary>
/// 获取广告客户端名称
/// </summary>
string ClientName { get; }
PlatformType Platfrom { get; }
void RefreshAdsData();
/// <summary>
/// 初始化广告SDK
/// </summary>
void Initialize();
#region 广
/// <summary>
/// 加载横幅广告
/// </summary>
void LoadBanner();
/// <summary>
/// 检查横幅广告是否可用
/// </summary>
bool IsBannerAvailable(BannerType bannerType);
/// <summary>
/// 显示横幅广告
/// </summary>
void DisplayBanner(BannerType bannerType,BannerAlignType bannerAlignType);
/// <summary>
/// 隐藏横幅广告
/// </summary>
void HideBanner(BannerType bannerType);
/// <summary>
/// 获取横幅广告收益信息
/// </summary>
double GetBannerRevenue(BannerType bannerType);
#endregion
#region 广
/// <summary>
/// 加载插页广告
/// </summary>
void LoadInterstitial();
/// <summary>
/// 检查插页广告是否可用
/// </summary>
bool IsInterstitialAvailable();
/// <summary>
/// 显示插页广告
/// </summary>
void DisplayInterstitial(string _adPos, IvType _IvType = IvType.IV1, Action<double> _closeCallback = null);
/// <summary>
/// 获取插页广告收益信息
/// </summary>
double GetInterstitialRevenue();
#endregion
#region 广
/// <summary>
/// 加载激励广告
/// </summary>
void LoadRewarded();
/// <summary>
/// 检查激励广告是否可用
/// </summary>
bool IsRewardedAvailable();
/// <summary>
/// 显示激励广告
/// </summary>
void DisplayRewarded(string _adPos, Action<bool,double> _rewardCallback = null, Action _showFailedCallback = null);
/// <summary>
/// 获取激励广告收益信息
/// </summary>
double GetRewardedRevenue();
#endregion
#region 广
/// <summary>
/// 加载开屏广告
/// </summary>
void LoadSplash();
/// <summary>
/// 检查开屏广告是否可用
/// </summary>
bool IsSplashAvailable();
/// <summary>
/// 显示开屏广告
/// </summary>
void DisplaySplash();
/// <summary>
/// 获取开屏广告收益信息
/// </summary>
double GetSplashRevenue();
#endregion
#region 广
/// <summary>
/// 加载原生广告
/// </summary>
void LoadNative();
/// <summary>
/// 检查原生广告是否可用
/// </summary>
bool IsNativeAvailable(string adUnitId);
/// <summary>
/// 显示原生广告
/// </summary>
/// <param name="position">广告位置和尺寸信息</param>
void DisplayNative(string _adPos, string adUnitId, NativeAdPosition position);
/// <summary>
/// 移除原生广告
/// </summary>
void RemoveNative(string adUnitId);
/// <summary>
/// 获取原生广告收益信息
/// </summary>
double GetNativeRevenue(string adUnitId);
#endregion
}
/// <summary>
/// 表示处理回调的信息
/// </summary>
[Serializable]
public struct CallbackResult
{
/// <summary>
/// 回调消息
/// </summary>
public string Message;
/// <summary>
/// 指示广告是否准备就绪
/// </summary>
public bool IsReady;
}
/// <summary>
/// 表示原生广告的位置和尺寸
/// </summary>
[Serializable]
public class NativeAdPosition
{
/// <summary>
/// X坐标
/// </summary>
public int X;
/// <summary>
/// Y坐标
/// </summary>
public int Y;
/// <summary>
/// 广告宽度
/// </summary>
public int Width;
/// <summary>
/// 广告高度
/// </summary>
public int Height;
public NativeTemplateStyle NativeTemplateStyle;
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
{
X = PX2DP.PxToDp(tTopLeft.x),
Y = PX2DP.PxToDp(Screen.height - tTopLeft.y),
Width = (int)tWidth,
Height = (int)tHeight,
NativeTemplateStyle = nativeTemplateStyle
};
}
}
[System.Serializable]
public struct HandCallbackInfo
{
public string msg;
public bool isReady;
}
}