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