com.guru.unity.max/Amazon/Scripts/Internal/IOS/DTBAdInterstitialDispatcher.cs

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