chicken_dy/Assets/TKGSDK/Common/internal/iOS/TGiOSAdmanager.cs

571 lines
15 KiB
C#

#if UNITY_IOS
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.InteropServices;
using System;
using Touka;
using System.Text;
public class TGiOSAdManager : MonoBehaviour
{
private static TGiOSAdManager s_instance;
public Action onAntiSuccessHander;
private System.Action<bool, string> m_userSourceCallback;
public static TGiOSAdManager Instance
{
get
{
if (s_instance == null)
{
GameObject TGGameObject = new GameObject
{
name = "AdObject"
};
s_instance = TGGameObject.AddComponent<TGiOSAdManager>();
DontDestroyOnLoad(TGGameObject);
}
return s_instance;
}
}
public void InitSDK()
{
// 暂停恢复声音
pauseGameDelegate handler = new pauseGameDelegate(pauseGameHandle);
IntPtr pauseGame = Marshal.GetFunctionPointerForDelegate(handler);
pauseGameCallback(pauseGame);
// 初始化设置
initSDKDelegate inithandler = new initSDKDelegate(initSDKHandle);
IntPtr initSdk = Marshal.GetFunctionPointerForDelegate(inithandler);
initSDKCallback(initSdk);
// 用户来源设置
TKG_UsersourceDelegate usHandler = new TKG_UsersourceDelegate(userSourceHandle);
IntPtr us = Marshal.GetFunctionPointerForDelegate(usHandler);
userSourceCallback(us);
// rv close
rewardCloseDelegate rvCloseHandler = new rewardCloseDelegate(rewardAdCloseHandle);
IntPtr rewardClose = Marshal.GetFunctionPointerForDelegate(rvCloseHandler);
rewardAdCloseCallback(rewardClose);
// show fail
rewardShowFailDelegate rvfailHandler = new rewardShowFailDelegate(rewardAdShowFailHandle);
IntPtr rewardShowFail = Marshal.GetFunctionPointerForDelegate(rvfailHandler);
rewardAdShowFailCallback(rewardShowFail);
// iv close
interCloseDelegate ivCloseHandler = new interCloseDelegate(interAdCloseHandle);
IntPtr interClose = Marshal.GetFunctionPointerForDelegate(ivCloseHandler);
interAdCloseCallback(interClose);
// rv click
rewardClickDelegate rvClickHandler = new rewardClickDelegate(rewardAdClickHandle);
IntPtr rvClick = Marshal.GetFunctionPointerForDelegate(rvClickHandler);
rewardAdClickCallback(rvClick);
TKG_InitSDK();
}
// 通知
public void registAPNS()
{
TKG_RegistAPNS();
}
public void registNotification(string notiId, string body, string fireDate, int badge, string title, string subTitle)
{
TKG_RegistNotification(notiId,body,fireDate,badge,title,subTitle);
}
public void removeNotification(string notiId)
{
TKG_RemoveNotification(notiId);
}
public void removeAllNotifications()
{
TKG_RemoveAllNotification();
}
// 震动
public void shake(int mType, float mIntensity = 1)
{
TKG_Shake(mType,mIntensity);
}
// ads
public void RemoveAllAds()
{
TKG_RemoveAds();
}
//banner
public void LoadBanner()
{
TKG_LoadBanner();
}
public bool IsReadyBanner()
{
return TKG_IsReadyBanner();
}
public void ShowBanner(int align)
{
TKG_ShowBanner(align);
}
public void HideBanner()
{
TKG_HideBanner();
}
// iv
public void LoadIntersititial()
{
TKG_LoadIntersititial();
}
public bool IsReadyIntersititial()
{
return TKG_IsReadyIntersititial();
}
public void ShowIntersititial(string _adPos, int ivType)
{
TKG_ShowIntersititial(_adPos,ivType);
}
// rv
public void LoadRewardVideo()
{
TKG_LoadRewardVideo();
}
public bool IsReadyRewardVideo()
{
return TKG_IsReadyRewardVideo();
}
public void ShowRewardVideo(string adPos)
{
TKG_ShowRewardVideo(adPos);
}
// native
public void LoadNative(float width, float height)
{
TKG_LoadNative(width, height);
}
public bool IsReadyNative()
{
return TKG_IsReadyNative();
}
public void ShowNative(RectTransform pRect, Camera pCam = null, string pAdPos = "")
{
TKG_TurnNativePosition(pRect, pCam, pAdPos);
}
public void RemoveNative()
{
TKG_RemoveNative();
}
// other
public void Review()
{
TKG_Review();
}
public void OpenPrivacyURL()
{
TKG_OpenPrivacyURL();
}
public void OpenUserTermURL()
{
TKG_OpenUserTermURL();
}
public void OpenPolicyPop()
{
TKG_OpenPolicyPop();
}
public void OpenMoreGame()
{
TKG_OpenMoreGame();
}
// 在线参数
public int GetConfigInt(string key, int defaultValue)
{
return TKG_GetConfigInt(key, defaultValue);
}
public string GetConfigString(string key, string defaultValue)
{
return TKG_GetConfigString(key, defaultValue);
}
public bool GetConfigBool(string key, bool defaultValue)
{
return TKG_GetConfigBool(key, defaultValue);
}
// 游戏事件上报
public void onEvent_GameStart(string levelId)
{
TKG_OnEvent_GameStart(levelId);
}
public void onEvent_GameEnd(string levelId, int result)
{
TKG_OnEvent_GameEnd(levelId,result);
}
// umeng 事件上报
public void onEvent_UMeng(string eventSort)
{
TKG_OnEvent_UMeng1(eventSort);
}
public void onEvent_UMeng(string eventSort, Dictionary<string, string> _keyValues)
{
TKG_OnEvent_UMeng2(eventSort, TKG_DictionaryToJson(_keyValues));
}
public void onEvent_UMeng(string eventSort,string key,string value)
{
TKG_OnEvent_UMeng3(eventSort,key,value);
}
public void onEvent_UMeng(string eventSort, string key1, string value1,string key2,string value2)
{
TKG_OnEvent_UMeng4(eventSort, key1, value1,key2,value2);
}
// tenjin事件上报
public void onEvent_Tenjin(int eventType)
{
TKG_OnEvent_Tenjin(eventType);
}
// unity 字典转 json string
static string TKG_DictionaryToJson(Dictionary<string, string> dict)
{
var builder = new StringBuilder("{");
foreach (KeyValuePair<string, string> kv in dict)
{
builder.AppendFormat("\"{0}\":\"{1}\",", kv.Key, kv.Value);
}
builder[builder.Length - 1] = '}';
return builder.ToString();
}
// 坐标转换
public void TKG_TurnNativePosition(RectTransform pRect, Camera pCam = null, string pAdPos = "")
{
Vector3[] tWorldCorners = new Vector3[4];
pRect.GetWorldCorners(tWorldCorners);
Vector2 tTopLeft = RectTransformUtility.WorldToScreenPoint(pCam, tWorldCorners[1]);
Vector2 tBottomRight = RectTransformUtility.WorldToScreenPoint(pCam, tWorldCorners[3]);
float tWidth = Mathf.Abs(tBottomRight.x - tTopLeft.x);
float tHeight = Mathf.Abs(tBottomRight.y - tTopLeft.y);
//Debug.Log("x:" + tTopLeft.x + "y:" + (Screen.height - tTopLeft.y) + "width" + tWidth + "hei:" + tHeight);
TKG_ShowNative(tTopLeft.x, Screen.height - tTopLeft.y, tWidth, tHeight, pAdPos);
}
// callback
// iv callback
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void interCloseDelegate();
[AOT.MonoPInvokeCallback(typeof(interCloseDelegate))]
static void interAdCloseHandle()
{
if (TKGSDKCallback.mInterAdCallback != null)
{
TKGSDKCallback.mInterAdCallback.Invoke();
TKGSDKCallback.mInterAdCallback = null;
}
}
// rv close-reward callback
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void rewardCloseDelegate(bool isReward);
[AOT.MonoPInvokeCallback(typeof(rewardCloseDelegate))]
static void rewardAdCloseHandle(bool isReward)
{
if (isReward)
{
if (TKGSDKCallback.mRewardCallback != null)
{
TKGSDKCallback.mRewardCallback.Invoke(true);
TKGSDKCallback.mRewardCallback = null;
}
}
else
{
if (TKGSDKCallback.mRewardCallback != null)
{
TKGSDKCallback.mRewardCallback.Invoke(false);
TKGSDKCallback.mRewardCallback = null;
}
}
}
// rv show fail callback
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void rewardShowFailDelegate();
[AOT.MonoPInvokeCallback(typeof(rewardShowFailDelegate))]
static void rewardAdShowFailHandle()
{
if (TKGSDKCallback.mRewardShowFailedCallback != null)
{
TKGSDKCallback.mRewardShowFailedCallback();
TKGSDKCallback.mRewardShowFailedCallback = null;
}
}
// rv click callback
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void rewardClickDelegate();
[AOT.MonoPInvokeCallback(typeof(rewardClickDelegate))]
static void rewardAdClickHandle()
{
if (TKGSDKCallback.mRewardClickCallback != null)
{
TKGSDKCallback.mRewardClickCallback();
}
}
// pause game
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void pauseGameDelegate(bool m_pause);
[AOT.MonoPInvokeCallback(typeof(pauseGameDelegate))]
static void pauseGameHandle(bool m_pause)
{
TKGSDKCallback.mGameFocusCallback?.Invoke(!m_pause);
}
// init sdk
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void initSDKDelegate();
[AOT.MonoPInvokeCallback(typeof(initSDKDelegate))]
static void initSDKHandle()
{
if (TKGSDKCallback.mInitCallback != null)
{
TKGSDKCallback.mInitCallback();
TKGSDKCallback.mInitCallback = null;
}
}
// user source
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void TKG_UsersourceDelegate(bool isOrganic,string source);
[AOT.MonoPInvokeCallback(typeof(TKG_UsersourceDelegate))]
static void userSourceHandle(bool isOrganic, string source)
{
if (TKGSDKCallback.mTKGUserSourceCallback != null)
{
TKGSDKCallback.mTKGUserSourceCallback(isOrganic,source);
TKGSDKCallback.mTKGUserSourceCallback = null;
}
}
// dll
[DllImport("__Internal")]
private static extern void TKG_Shake(int mType, float mIntensity);
[DllImport("__Internal")]
private static extern void TKG_InitSDK();
// event umeng
[DllImport("__Internal")]
private static extern void TKG_OnEvent_UMeng1(string s1);
[DllImport("__Internal")]
private static extern void TKG_OnEvent_UMeng2(string s1, string s2);
[DllImport("__Internal")]
private static extern void TKG_OnEvent_UMeng3(string s1, string key, string value);
[DllImport("__Internal")]
private static extern void TKG_OnEvent_UMeng4(string s1, string key1, string value1, string key2, string value2);
// event tenjin
[DllImport("__Internal")]
private static extern void TKG_OnEvent_Tenjin(int eventType);
// event game
[DllImport("__Internal")]
private static extern void TKG_OnEvent_GameStart(string levelId);
[DllImport("__Internal")]
private static extern void TKG_OnEvent_GameEnd(string levelId, int result);
// other
[DllImport("__Internal")]
private static extern void TKG_Review();
[DllImport("__Internal")]
private static extern void TKG_OpenPrivacyURL();
[DllImport("__Internal")]
private static extern void TKG_OpenUserTermURL();
[DllImport("__Internal")]
private static extern void TKG_OpenPolicyPop();
[DllImport("__Internal")]
private static extern void TKG_OpenMoreGame();
// ads
[DllImport("__Internal")]
private static extern void TKG_LoadBanner();
[DllImport("__Internal")]
private static extern bool TKG_IsReadyBanner();
[DllImport("__Internal")]
private static extern void TKG_ShowBanner(int align);
[DllImport("__Internal")]
private static extern void TKG_HideBanner();
[DllImport("__Internal")]
private static extern void TKG_LoadIntersititial();
[DllImport("__Internal")]
private static extern bool TKG_IsReadyIntersititial();
[DllImport("__Internal")]
private static extern void TKG_ShowIntersititial(string adPos,int ivType);
[DllImport("__Internal")]
private static extern void TKG_LoadRewardVideo();
[DllImport("__Internal")]
private static extern bool TKG_IsReadyRewardVideo();
[DllImport("__Internal")]
private static extern void TKG_ShowRewardVideo(string adPos);
[DllImport("__Internal")]
private static extern void TKG_LoadNative(float width, float height);
[DllImport("__Internal")]
private static extern bool TKG_IsReadyNative();
[DllImport("__Internal")]
private static extern void TKG_ShowNative(float x, float y, float w, float h, string adPos);
[DllImport("__Internal")]
private static extern void TKG_RemoveNative();
// remote config
[DllImport("__Internal")]
private static extern int TKG_GetConfigInt(string key, int defaultValue);
[DllImport("__Internal")]
private static extern string TKG_GetConfigString(string key, string defaultValue);
[DllImport("__Internal")]
private static extern bool TKG_GetConfigBool(string key, bool defaultValue);
[DllImport("__Internal")]
private static extern bool TKG_SetLogged(bool enable);
[DllImport("__Internal")]
private static extern bool TKG_RemoveAds();
// callback
// iv close
[DllImport("__Internal")]
public static extern void interAdCloseCallback(
IntPtr interClose
);
// rv close
[DllImport("__Internal")]
public static extern void rewardAdCloseCallback(
IntPtr rewardClose
);
// rv click
[DllImport("__Internal")]
public static extern void rewardAdClickCallback(
IntPtr rewardClick
);
// rv show fail
[DllImport("__Internal")]
public static extern void rewardAdShowFailCallback(
IntPtr rewardShowFail
);
// pause game
[DllImport("__Internal")]
public static extern void pauseGameCallback(
IntPtr pauseGame
);
// init sdk
[DllImport("__Internal")]
public static extern void initSDKCallback(
IntPtr initSdk
);
// user source
[DllImport("__Internal")]
public static extern void userSourceCallback(
IntPtr userSource
);
// 设置unity版本
[DllImport("__Internal")]
private static extern void TKG_SetUnityVersion(string version);
// 通知
[DllImport("__Internal")]
private static extern void TKG_RegistAPNS();
[DllImport("__Internal")]
private static extern void TKG_RemoveAllNotification();
[DllImport("__Internal")]
private static extern void TKG_RemoveNotification(string notiId);
[DllImport("__Internal")]
private static extern void TKG_RegistNotification(string notiId, string body, string fireDate, int badge, string title, string subTitle);
// ============================ old sdk todo ========================
//设置log开关
public void SetLogEnable(bool enable)
{
TKG_SetLogged(enable);
}
public void SetUnitySDKVersion(string version)
{
TKG_SetUnityVersion(version);
}
}
#endif