using System; using System.Reflection; using GoogleMobileAds.Common; namespace GoogleMobileAds.Api { public class RewardBasedVideoAd { public static RewardBasedVideoAd Instance { get { return RewardBasedVideoAd.instance; } } public event EventHandler OnAdLoaded; public event EventHandler OnAdFailedToLoad; public event EventHandler OnAdOpening; public event EventHandler OnAdStarted; public event EventHandler OnAdClosed; public event EventHandler OnAdRewarded; public event EventHandler OnAdLeavingApplication; public event EventHandler OnAdCompleted; private IRewardBasedVideoAdClient client; private static readonly RewardBasedVideoAd instance = new RewardBasedVideoAd(); private RewardBasedVideoAd() { MethodInfo method = Type.GetType("GoogleMobileAds.GoogleMobileAdsClientFactory,Assembly-CSharp").GetMethod("BuildRewardBasedVideoAdClient", BindingFlags.Static | BindingFlags.Public); this.client = (IRewardBasedVideoAdClient)method.Invoke(null, null); this.client.CreateRewardBasedVideoAd(); this.client.OnAdLoaded += delegate(object sender, EventArgs args) { if (this.OnAdLoaded != null) { this.OnAdLoaded(this, args); } }; this.client.OnAdFailedToLoad += delegate(object sender, AdFailedToLoadEventArgs args) { if (this.OnAdFailedToLoad != null) { this.OnAdFailedToLoad(this, args); } }; this.client.OnAdOpening += delegate(object sender, EventArgs args) { if (this.OnAdOpening != null) { this.OnAdOpening(this, args); } }; this.client.OnAdStarted += delegate(object sender, EventArgs args) { if (this.OnAdStarted != null) { this.OnAdStarted(this, args); } }; this.client.OnAdClosed += delegate(object sender, EventArgs args) { if (this.OnAdClosed != null) { this.OnAdClosed(this, args); } }; this.client.OnAdLeavingApplication += delegate(object sender, EventArgs args) { if (this.OnAdLeavingApplication != null) { this.OnAdLeavingApplication(this, args); } }; this.client.OnAdRewarded += delegate(object sender, Reward args) { if (this.OnAdRewarded != null) { this.OnAdRewarded(this, args); } }; this.client.OnAdCompleted += delegate(object sender, EventArgs args) { if (this.OnAdCompleted != null) { this.OnAdCompleted(this, args); } }; } public void LoadAd(AdRequest request, string adUnitId) { this.client.LoadAd(request, adUnitId); } public bool IsLoaded() { return this.client.IsLoaded(); } public void Show() { this.client.ShowRewardBasedVideoAd(); } public void SetUserId(string userId) { this.client.SetUserId(userId); } public string MediationAdapterClassName() { return this.client.MediationAdapterClassName(); } } }