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