84 lines
3.6 KiB
C#
84 lines
3.6 KiB
C#
|
|
using System;
|
||
|
|
using AOT;
|
||
|
|
using System.Runtime.InteropServices;
|
||
|
|
using UnityEngine;
|
||
|
|
namespace AmazonAds.IOS {
|
||
|
|
public class DTBCallback {
|
||
|
|
public delegate void OnFailureWithErrorDelegate (IntPtr callback, int errorMsg, IntPtr adError);
|
||
|
|
public delegate void OnFailureDelegate (IntPtr callback, int errorMsg);
|
||
|
|
public delegate void OnSuccessDelegate (IntPtr callback, IntPtr response);
|
||
|
|
public enum ErrorCode { NO_ERROR, NETWORK_ERROR, NETWORK_TIMEOUT, NO_FILL, INTERNAL_ERROR, REQUEST_ERROR }
|
||
|
|
IntPtr clientPtr;
|
||
|
|
IntPtr thisPtr;
|
||
|
|
|
||
|
|
public struct DTBAdResponceData{
|
||
|
|
public string amznSlots;
|
||
|
|
public string mediationHints;
|
||
|
|
public string keywords;
|
||
|
|
}
|
||
|
|
|
||
|
|
public DTBCallback (Amazon.OnFailureDelegate failureDelegate, Amazon.OnSuccessDelegate successDelegate) {
|
||
|
|
thisPtr = (IntPtr)GCHandle.Alloc(this);
|
||
|
|
clientPtr = Externs._createCallback();
|
||
|
|
onSuccessCallback = successDelegate;
|
||
|
|
onFailureCallback = failureDelegate;
|
||
|
|
Externs._amazonSetListeners(thisPtr, clientPtr, OnSuccess, OnFailure);
|
||
|
|
}
|
||
|
|
|
||
|
|
public DTBCallback (Amazon.OnFailureWithErrorDelegate failureWithErrorDelegate, Amazon.OnSuccessDelegate successDelegate) {
|
||
|
|
thisPtr = (IntPtr)GCHandle.Alloc(this);
|
||
|
|
clientPtr = Externs._createCallback();
|
||
|
|
onSuccessCallback = successDelegate;
|
||
|
|
onFailureWithErrorCallback = failureWithErrorDelegate;
|
||
|
|
Externs._amazonSetListenersWithInfo(thisPtr, clientPtr, OnSuccess, OnFailureWithInfo);
|
||
|
|
}
|
||
|
|
|
||
|
|
public Amazon.OnSuccessDelegate onSuccessCallback;
|
||
|
|
public Amazon.OnFailureDelegate onFailureCallback;
|
||
|
|
public Amazon.OnFailureWithErrorDelegate onFailureWithErrorCallback;
|
||
|
|
|
||
|
|
private AdRequest refreshAdLoader = null;
|
||
|
|
|
||
|
|
public IntPtr GetPtr(){
|
||
|
|
return clientPtr;
|
||
|
|
}
|
||
|
|
|
||
|
|
private static DTBCallback IntPtrToClient(IntPtr callbackClient)
|
||
|
|
{
|
||
|
|
GCHandle handle = (GCHandle)callbackClient;
|
||
|
|
return handle.Target as DTBCallback;
|
||
|
|
}
|
||
|
|
|
||
|
|
[MonoPInvokeCallback (typeof (OnSuccessDelegate))]
|
||
|
|
public static void OnSuccess (IntPtr callbackClient, IntPtr response) {
|
||
|
|
DTBCallback client = IntPtrToClient(callbackClient);
|
||
|
|
IOSAdResponse resp = new IOSAdResponse (response);
|
||
|
|
IOS.DTBAdRequest dtbAdRequest = new IOS.DTBAdRequest(Externs._getAdLoaderFromResponse(response));
|
||
|
|
resp.SetAdLoader(new AdRequest(dtbAdRequest));
|
||
|
|
client.onSuccessCallback(resp);
|
||
|
|
}
|
||
|
|
|
||
|
|
[MonoPInvokeCallback (typeof (OnFailureDelegate))]
|
||
|
|
public static void OnFailure (IntPtr callbackClient, int errorMsg) {
|
||
|
|
DTBCallback client = IntPtrToClient(callbackClient);
|
||
|
|
|
||
|
|
if (client.onFailureCallback != null) {
|
||
|
|
client.onFailureCallback ("Code:" + errorMsg);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
[MonoPInvokeCallback (typeof (OnFailureWithErrorDelegate))]
|
||
|
|
public static void OnFailureWithInfo (IntPtr callbackClient, int errorMsg, IntPtr errorInfo) {
|
||
|
|
DTBCallback client = IntPtrToClient(callbackClient);
|
||
|
|
|
||
|
|
if (client.onFailureWithErrorCallback != null) {
|
||
|
|
AdError adError = new AdError(errorMsg, "");
|
||
|
|
IOS.DTBAdRequest dtbAdRequest = new IOS.DTBAdRequest(Externs._getAdLoaderFromAdError(errorInfo));
|
||
|
|
adError.SetAdLoader(new AdRequest(dtbAdRequest));
|
||
|
|
adError.SetInstance(errorInfo);
|
||
|
|
client.onFailureWithErrorCallback(adError);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|