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