74 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
| using System;
 | |
| using AOT;
 | |
| using System.Runtime.InteropServices;
 | |
| using UnityEngine;
 | |
| namespace AmazonAds.IOS {
 | |
|     public class DTBAdInterstitialDispatcher {
 | |
|         public delegate void OnAdLoadedDelegate (IntPtr callback);
 | |
|         public delegate void OnAdFailedDelegate (IntPtr callback);
 | |
|         public delegate void OnAdClickedDelegate (IntPtr callback);      
 | |
|         public delegate void OnImpressionFiredDelegate (IntPtr callback);
 | |
|         public delegate void OnAdOpenDelegate (IntPtr callback);      
 | |
|         public delegate void OnAdClosedDelegate (IntPtr callback);      
 | |
| 
 | |
|         IntPtr clientPtr;
 | |
|         IntPtr thisPtr;
 | |
|         public APSAdDelegate adDelegate;
 | |
| 
 | |
|         public DTBAdInterstitialDispatcher (APSAdDelegate delegates) {
 | |
|             thisPtr = (IntPtr)GCHandle.Alloc(this);
 | |
|             clientPtr = Externs._createInterstitialDelegate();
 | |
|             adDelegate = delegates;
 | |
|             Externs._setInterstitialDelegate(thisPtr, clientPtr, 
 | |
|                                             OnAdLoaded, OnAdFailed, 
 | |
|                                             OnAdClicked, OnImpressionFired,
 | |
|                                             OnAdOpen, OnAdClosed);
 | |
|         }
 | |
| 
 | |
|         public IntPtr GetPtr(){
 | |
|             return clientPtr;
 | |
|         }
 | |
| 
 | |
|         private static DTBAdInterstitialDispatcher IntPtrToClient(IntPtr client)
 | |
|         {
 | |
|             GCHandle handle = (GCHandle)client;
 | |
|             return handle.Target as DTBAdInterstitialDispatcher;
 | |
|         }
 | |
| 
 | |
|         [MonoPInvokeCallback (typeof (OnAdLoadedDelegate))]
 | |
|         public static void OnAdLoaded (IntPtr client) {
 | |
|             DTBAdInterstitialDispatcher interstitialDispatcher = IntPtrToClient(client);
 | |
|             interstitialDispatcher.adDelegate.onAdLoaded();
 | |
|         }
 | |
| 
 | |
|         [MonoPInvokeCallback (typeof (OnAdFailedDelegate))]
 | |
|         public static void OnAdFailed (IntPtr client) {
 | |
|             DTBAdInterstitialDispatcher interstitialDispatcher = IntPtrToClient(client);
 | |
|             interstitialDispatcher.adDelegate.onAdFailed();
 | |
|         }
 | |
| 
 | |
|         [MonoPInvokeCallback (typeof (OnAdClickedDelegate))]
 | |
|         public static void OnAdClicked (IntPtr client) {
 | |
|             DTBAdInterstitialDispatcher interstitialDispatcher = IntPtrToClient(client);
 | |
|             interstitialDispatcher.adDelegate.onAdClicked();
 | |
|         }
 | |
| 
 | |
|         [MonoPInvokeCallback (typeof (OnImpressionFiredDelegate))]
 | |
|         public static void OnImpressionFired (IntPtr client) {
 | |
|             DTBAdInterstitialDispatcher interstitialDispatcher = IntPtrToClient(client);
 | |
|             interstitialDispatcher.adDelegate.onImpressionFired();
 | |
|         }
 | |
|         
 | |
|         [MonoPInvokeCallback (typeof (OnAdOpenDelegate))]
 | |
|         public static void OnAdOpen (IntPtr client) {
 | |
|             DTBAdInterstitialDispatcher interstitialDispatcher = IntPtrToClient(client);
 | |
|             interstitialDispatcher.adDelegate.onAdOpen();
 | |
|         }
 | |
| 
 | |
|         [MonoPInvokeCallback (typeof (OnAdClosedDelegate))]
 | |
|         public static void OnAdClosed (IntPtr client) {
 | |
|             DTBAdInterstitialDispatcher interstitialDispatcher = IntPtrToClient(client);
 | |
|             interstitialDispatcher.adDelegate.onAdClosed();
 | |
|         }
 | |
|     }
 | |
| } |