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();
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 |