// Copyright (C) 2015 Google, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. using System; using System.Reflection; using GoogleMobileAds.Common; namespace GoogleMobileAds.Api { public class InterstitialAd { private IInterstitialClient client; // Creates an InterstitialAd. public InterstitialAd(string adUnitId) { Type googleMobileAdsClientFactory = Type.GetType( "GoogleMobileAds.GoogleMobileAdsClientFactory,Assembly-CSharp"); MethodInfo method = googleMobileAdsClientFactory.GetMethod( "BuildInterstitialClient", BindingFlags.Static | BindingFlags.Public); this.client = (IInterstitialClient)method.Invoke(null, null); client.CreateInterstitialAd(adUnitId); this.client.OnAdLoaded += (sender, args) => { if (this.OnAdLoaded != null) { this.OnAdLoaded(this, args); } }; this.client.OnAdFailedToLoad += (sender, args) => { if (this.OnAdFailedToLoad != null) { this.OnAdFailedToLoad(this, args); } }; this.client.OnAdOpening += (sender, args) => { if (this.OnAdOpening != null) { this.OnAdOpening(this, args); } }; this.client.OnAdClosed += (sender, args) => { if (this.OnAdClosed != null) { this.OnAdClosed(this, args); } }; this.client.OnAdLeavingApplication += (sender, args) => { if (this.OnAdLeavingApplication != null) { this.OnAdLeavingApplication(this, args); } }; } // These are the ad callback events that can be hooked into. public event EventHandler OnAdLoaded; public event EventHandler OnAdFailedToLoad; public event EventHandler OnAdOpening; public event EventHandler OnAdClosed; public event EventHandler OnAdLeavingApplication; // Loads an InterstitialAd. public void LoadAd(AdRequest request) { client.LoadAd(request); } // Determines whether the InterstitialAd has loaded. public bool IsLoaded() { return client.IsLoaded(); } // Displays the InterstitialAd. public void Show() { client.ShowInterstitial(); } // Destroys the InterstitialAd. public void Destroy() { client.DestroyInterstitial(); } // Returns the mediation adapter class name. public string MediationAdapterClassName() { return this.client.MediationAdapterClassName(); } } }