61 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
| using System;
 | |
| using AOT;
 | |
| using System.Runtime.InteropServices;
 | |
| using UnityEngine;
 | |
| namespace AmazonAds.IOS {
 | |
|     public class DTBAdBannerDispatcher {
 | |
|         public delegate void OnAdLoadedDelegate (IntPtr callback);
 | |
|         public delegate void OnAdFailedDelegate (IntPtr callback);
 | |
|         public delegate void OnAdClickedDelegate (IntPtr callback);      
 | |
|         public delegate void OnImpressionFiredDelegate (IntPtr callback);
 | |
| 
 | |
|         IntPtr clientPtr;
 | |
|         IntPtr thisPtr;
 | |
|         public APSAdDelegate adDelegate;
 | |
| 
 | |
|         public DTBAdBannerDispatcher (APSAdDelegate delegates) {
 | |
|             thisPtr = (IntPtr)GCHandle.Alloc(this);
 | |
|             clientPtr = Externs._createBannerDelegate();
 | |
|             adDelegate = delegates;
 | |
|             Externs._setBannerDelegate(thisPtr, clientPtr, 
 | |
|                                     OnAdLoaded, OnAdFailed, 
 | |
|                                     OnAdClicked, OnImpressionFired);
 | |
|         }
 | |
| 
 | |
|         public IntPtr GetPtr()
 | |
|         {
 | |
|             return clientPtr;
 | |
|         }
 | |
| 
 | |
|         private static DTBAdBannerDispatcher IntPtrToClient(IntPtr client)
 | |
|         {
 | |
|             GCHandle handle = (GCHandle)client;
 | |
|             return handle.Target as DTBAdBannerDispatcher;
 | |
|         }
 | |
| 
 | |
|         [MonoPInvokeCallback (typeof (OnAdLoadedDelegate))]
 | |
|         public static void OnAdLoaded (IntPtr client) {
 | |
|             DTBAdBannerDispatcher bannerDispatcher = IntPtrToClient(client);
 | |
|             bannerDispatcher.adDelegate.onAdLoaded();
 | |
|         }
 | |
| 
 | |
|         [MonoPInvokeCallback (typeof (OnAdFailedDelegate))]
 | |
|         public static void OnAdFailed (IntPtr client) {
 | |
|             DTBAdBannerDispatcher bannerDispatcher = IntPtrToClient(client);
 | |
|             bannerDispatcher.adDelegate.onAdFailed();
 | |
|         }
 | |
| 
 | |
|         [MonoPInvokeCallback (typeof (OnAdClickedDelegate))]
 | |
|         public static void OnAdClicked (IntPtr client) {
 | |
|             DTBAdBannerDispatcher bannerDispatcher = IntPtrToClient(client);
 | |
|             bannerDispatcher.adDelegate.onAdClicked();
 | |
|         }
 | |
| 
 | |
|         [MonoPInvokeCallback (typeof (OnImpressionFiredDelegate))]
 | |
|         public static void OnImpressionFired (IntPtr client) {
 | |
|             DTBAdBannerDispatcher bannerDispatcher = IntPtrToClient(client);
 | |
|             bannerDispatcher.adDelegate.onImpressionFired();
 | |
|         }
 | |
|     }
 | |
| 
 | |
| } |