#if UNITY_IPHONE
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Touka
{
    /// 
    /// TKG Native SDK iOS platform interface call
    /// 
    public class TKGNativeInterfaceIOS : TKGNativeInterface
    {
        public override void Init(Action _initCallback = null)
        {
            base.Init(_initCallback);
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.InitSDK();
#endif
        }
        /// 
        /// Get Channel
        /// 
        /// 
        public override string GetChannel()
        {
            return TGiOSAdManager.Instance.getChannel().ToString();
        }
        /// 
        /// Set Log Enable
        /// 
        /// 
        public override void SetLogEnable(bool _enable)
        {
            TGiOSAdManager.Instance.SetLogEnable(_enable);
        }
#region Ads
        public override void PurchasedRemoveAds()
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.RemoveAllAds();
#endif
        }
        public override void SetUnitySDKVersion(string sdkVersion)
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.SetUnitySDKVersion(sdkVersion);
#endif
        }
        public override void RemoveNativeAd()
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.RemoveNative();
#endif
        }
        public override bool IsReadyNativeAd()
        {
#if !UNITY_EDITOR
            return TGiOSAdManager.Instance.IsReadyNative();
#else
            return false;
#endif
            
        }
        public override void ShowNativeAd(RectTransform pRect, Camera pCam = null, string pAdPos = "")
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.ShowNative(pRect, pCam, pAdPos);
#endif
        }
#region Ads Show
        /// 
        /// Show banner Ad
        ///  
        /// bannerAlign
        public override void showBannerAd(TKGBannerAlign _pos)
        {
#if !UNITY_EDITOR
             TGiOSAdManager.Instance.ShowBanner((int)_pos);
#endif
        }
        /// 
        /// Hide Banner Ad
        /// 
        public override void hideBannerAd()
        {
            
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.HideBanner();
#endif
        }
        /// 
        /// Show Interstitial Ad
        /// 
        public override void showInterstitialAd()
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.ShowIntersititial("",0);
#endif
        }
        /// 
        /// Show Interstitial Ad
        /// 
        /// 
        public override void showInterstitialAd(string _adPos, IVADType _IvType = IVADType.IV1)
        {
#if !UNITY_EDITOR
        TGiOSAdManager.Instance.ShowIntersititial(_adPos, (int)_IvType);
#endif
        }
        /// 
        /// Show Reward Ad
        /// 
        public override void showRewardAd(string _adPos, int _itemCount = -1)
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.ShowRewardVideo(_adPos);
#endif
        }
        /// 
        /// Show Reward Ad
        /// 
        /// 
        /// 
        /// 
        public override void showRewardAd(string _adPos, int _itemCount, Dictionary _extraEvent)
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.ShowRewardVideo(_adPos);
#endif
        }
        public override void SetShowSDKToast(bool _useSDKToast)
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.ShowSDKToast(_useSDKToast);
#endif
        }
        /// 
        /// Show FullScreen Ad(is RV without reward callback)
        /// 
        public override void showVideoAd(string _adPos, int _itemCount = -1)
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.ShowRewardVideo(_adPos);
#endif
        }
#endregion
#region Ads isready
        /// 
        /// banner isReady
        /// 
        /// 
        public override bool isBannerAdReady()
        {
#if !UNITY_EDITOR
            return TGiOSAdManager.Instance.IsReadyBanner();
#else
            return false;
#endif
        }
        /// 
        /// Interstitial isReady
        /// 
        /// 
        public override bool isInterstitialAdReady()
        {
#if !UNITY_EDITOR
            return TGiOSAdManager.Instance.IsReadyIntersititial();
#else
            return false;
#endif
        }
        /// 
        /// Reward isReady
        /// 
        /// 
        public override bool isRewardAdReady()
        {
#if !UNITY_EDITOR
            return TGiOSAdManager.Instance.IsReadyRewardVideo();
#else
            return false;
#endif
        }
        /// 
        /// FullScreen isReady
        /// 
        /// 
        public override bool isVideoAdReady()
        {
#if !UNITY_EDITOR
            return TGiOSAdManager.Instance.IsReadyRewardVideo();
#else
            return false;
#endif
        }
#endregion
#region Set ads callback
        /// 
        /// Set Banner Ad Callback
        /// 
        /// 
        public override void SetBannerAdCallback(AndroidBannerADTKGAdCallback _bannerCallback)
        {
        }
        /// 
        /// Set Interstital Ad Callback
        /// 
        /// 
        public override void setInterstitalAdCallback(AndroidInterADTKGAdCallback _interCallback)
        {
        }
        /// 
        /// Set reward Ad Callback
        /// 
        /// 
        public override void SetRewardAdCallback(AndroidRewardADTKGAdCallback _rewardCallback)
        {
        }
        /// 
        /// Set video Ad Callback(full screen ad, reward ad with no reward callback)
        /// 
        /// 
        public override void setVideoAdCallback(AndroidInterADTKGAdCallback _videoCallback)
        {
        }
#endregion
#region load ads
        /// 
        /// load interstitial ad
        /// (retry 3 times, per time interval 10s)
        /// 
        public override void loadInterstitialAD()
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.LoadIntersititial();
#endif
        }
        /// 
        /// load reward ad
        /// (retry 3 times, per time interval 10s)
        /// 
        public override void loadRewardAD()
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.LoadRewardVideo();
#endif
        }
        /// 
        /// load video ad
        /// (retry 3 times, per time interval 10s)
        /// 
        public override void loadVideoAD()
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.LoadRewardVideo();
#endif
        }
#endregion
#endregion
#region Log Event
        /// 
        /// onEvent
        /// 
        /// 
        /// 
        public override void onEvent(string _eventName)
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.onEvent_UMeng(_eventName);
#endif
        }
        /// 
        /// onEvent
        /// 
        /// 
        /// 
        /// 
        /// 
        public override void onEvent(string _eventName, string _key01, string _value01)
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.onEvent_UMeng(_eventName,_key01,_value01);
#endif
        }
        /// 
        /// onEvent
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        public override void onEvent(string _eventName, string _key01, string _value01, string _key02, string _value02)
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.onEvent_UMeng(_eventName,_key01,_value01,_key02,_value02);
#endif
        }
        /// 
        /// onEvent
        /// 
        /// 
        /// 
        public override void onEvent(string _eventName, Dictionary _keyValues)
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.onEvent_UMeng(_eventName,_keyValues);
#endif
        }
#region Level Event
        /// 
        /// Level Start
        /// 
        /// 
        public override void LevelStart(string _levelId)
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.onEvent_GameStart(_levelId);
#endif
        }
        /// 
        /// Level end
        /// 
        /// 
        public override void LevelEnd(string _levelId, StageResult _stageResult)
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.onEvent_GameEnd(_levelId,(int)_stageResult);
#endif
        }
#endregion
#region Tracking Event
        /// 
        /// Log Tracking Event
        /// 
        /// 
        public override void LogTrackingEvent(TrackingEventType _eventType)
        {
#if !UNITY_EDITOR
            
            TGiOSAdManager.Instance.onEvent_Tenjin((int)_eventType);
#endif
        }
#endregion
#endregion
#region Online Config
        /// 
        /// get config - int
        /// 
        /// 
        /// 
        public override int GetConfigInt(string _key, int _default)
        {
            return TGiOSAdManager.Instance.GetConfigInt(_key, _default);
        }
        /// 
        /// get config - string
        /// 
        /// 
        /// 
        public override string GetConfigString(string _key, string _default)
        {
            return TGiOSAdManager.Instance.GetConfigString(_key, _default);
        }
        /// 
        /// get config - bool
        /// 
        /// 
        /// 
        public override bool GetConfigBool(string _key, bool _default)
        {
            return TGiOSAdManager.Instance.GetConfigBool(_key, _default);
        }
#endregion
#region Others (Common)
        /// 
        /// review
        /// 
        public override void Review()
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.Review();
#endif
        }
        /// 
        /// open Privacy
        /// 
        public override void OpenPrivacyURL()
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.OpenPrivacyURL();
#endif
        }
        /// 
        /// open agreement
        /// 
        public override void OpenUserTermURL()
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.OpenUserTermURL();
#endif
        }
        /// 
        /// open policy pop
        /// 
        public override void OpenPolicyPop()
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.OpenPolicyPop();
#endif
        }
        /// 
        /// More Games
        /// 
        public override void OpenMoreGame()
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.OpenMoreGame();
#endif
        }
        // 
        /// share txt
        /// 
        /// 
        public override void ShareTxt(string _shareTxt)
        {
            TGiOSAdManager.Instance.share(_shareTxt);
        }
        public override void RegistAPNS()
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.registAPNS();
#endif
        }
        public override void RegistNotification(string notiId, string body, string fireDate, int badge, string title, string subTitle)
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.registNotification(notiId,body,fireDate,badge,title,subTitle);
#endif
        }
        public override void RemoveNotification(string notiId)
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.removeNotification(notiId);
#endif
        }
        public override void RemoveAllNotifications()
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.removeAllNotifications();
#endif
        }
#endregion
#region Others (Uncommon)
        /// 
        /// shake(no repeat)
        /// 
        ///  shake time 
        public override void shake(int _shakeType, float _intensity = 1)
        {
            TGiOSAdManager.Instance.shake(_shakeType,_intensity);
        }
        /// 
        /// shake(can repeat)
        /// 
        ///  repeat times : -1 
        ///  wait time,shake time(100,1000,100,111)
        //public override void shake(int _repeatTimes, params int[] _shakeTime)
        //{
        //}
        /// 
        /// cancel shake
        /// 
        public override void cancelShake()
        {
        }
        /// 
        /// Show Tips
        /// Pop-up prompt (the one with black transparent background) unified style, Chinese, Japanese, Korean and English, support multi-language, multi-language text
        ///
        /// game judges different languages by itself and passes different strings
        /// 
        ///  title 
        ///  content 
        public override void dialogTips(string _titleStr, string _contentStr)
        {
        }
        /// 
        /// Open ULR by Browser
        /// 
        /// 
        public override void openUrlBrowser(string _url)
        {
        }
        /// 
        /// Open ULR By WEB POP
        /// 
        /// 
        public override void openWebUrl(string _url)
        {
        }
        /// 
        /// show Toast
        /// 
        /// 
        public override void toast(string _content)
        {
#if !UNITY_EDITOR
            TGiOSAdManager.Instance.Toast(_content);
#endif
        }
        /// 
        /// push message
        /// 
        public override void pushMsg()
        {
        }
#endregion
#region common callback
        public override void SetSDKCommonCallback(AndroidTKGCommonCalllback _commonCallback)
        {
        }
        public override void SetUserSourceCallback(AndroidTKGUserSourceCalllback _userSourceCallback)
        {
        }
        public override void SetUserSourceCallback(AndroidTKGUserSourceCalllbackWithCampaignName _userSourceCallback)
        {
            
        }
        public override void SetFunctionSwitchCalllback(List _functionKeys, AndroidFunctionSwitchCalllback _functionSwitchCalllback)
        {
            string temp = "";
            if (_functionKeys.Count != 0)
            {
                for (int index = 0; index < _functionKeys.Count; index++)
                {
                    if (index == _functionKeys.Count - 1)
                    {
                        temp += _functionKeys[index];
                    }
                    else
                    {
                        temp = temp + _functionKeys[index] + ",";
                    }
                }
            }
            TGiOSAdManager.Instance.setFunctions(temp);
        }
        #endregion
    }
}
#endif