using System; using System.Collections.Generic; using UnityEngine; namespace EFSDK { /// /// TKG Native SDK Android platform interface call /// public class EFSdk { private static EFSdk _mEfSdk; private static string mappingInfo = @"{""items"":[{""key"":""_sdk_float_balloon.png"",""value"":""aoa38ay.png""}]}"; public static EFSdk get() { if (_mEfSdk == null) { _mEfSdk = new EFSdk(); } return _mEfSdk; } private AndroidJavaObject jo; public EFSdk() { // java interface class using (AndroidJavaClass jc = new AndroidJavaClass("com.earn.push._SDK")) { jo = jc.GetStatic("INSTANCE"); } } private T SDKCall(string _method, params object[] _param) { try { return jo.Call(_method, _param); } catch (Exception e) { Debug.LogError(e); } return default(T); } private void SDKCall(string _method, params object[] _param) { try { jo.Call(_method, _param); } catch (Exception e) { Debug.LogError(e); } } public enum ActionType { COIN_CLICK, //点击金币 BALLOON_CLICK, //点击气球 COIN_SHOW, //金币展示出来了 BOX_SHOW, //气球/宝箱展示出来了 GAM_LOAD_SUCC, //GAM页面加载成功 ON_RESUME, //游戏可见时回调, // CAN_GOBACK, //游戏可见时回调, } public Action ActionCallback; public Action> ActionSDKEventCallback; public Action HdH5ImpressionAction; public Action mCanGobackAction; public Action mReqNotifyPermissionAction; /// /// 在Init方法之后调用这个方法,设置SDK上报事件回调, 将SDK传过来的事件上报到Firebase,数数等 /// /// /// 事件ID,事件属性 /// public void SetSDKEventCallback(Action> eventKeyDict) { ActionSDKEventCallback = eventKeyDict; } /// /// 互动广告展示回调,此时可以计算上报互动广告展示次数和收益 /// /// string 是互动广告的url public void SetHdH5ImpressionCallback(Action callback) { HdH5ImpressionAction = callback; } /// /// 初始化 /// /// ActionType 回调类型 ; string msg public void Init(Action actionCallbvack) { ActionCallback = actionCallbvack; SDKInit(); } private void SDKInit() { // SDKCall("init"); ActionCallback?.Invoke(ActionType.GAM_LOAD_SUCC, string.Empty); } /// /// 展示WebView /// /// 标签id /// 网址 /// /// public void ShowWebView(int id, string url, RectTransform pRect, Camera pCam = null) { Vector3[] tWorldCorners = new Vector3[4]; pRect.GetWorldCorners(tWorldCorners); Vector2 tTopLeft = RectTransformUtility.WorldToScreenPoint(pCam, tWorldCorners[1]); Vector2 tBottomRight = RectTransformUtility.WorldToScreenPoint(pCam, tWorldCorners[3]); int tWidth = (int)Mathf.Abs(tBottomRight.x - tTopLeft.x); int tHeight = (int)Mathf.Abs(tBottomRight.y - tTopLeft.y); SDKCall("showWebViewToActivity", id, url, (int)tTopLeft.x, (int)(Screen.height - tTopLeft.y), tWidth, tHeight); } /// /// 移除所有原生View, 回到游戏时调用 /// /// public void RemoveAll() { SDKCall("removeAll"); } /// /// 刷新当前页面 /// /// public void Refresh() { SDKCall("refresh"); } /// /// 回上一页 /// /// public void GoBack() { SDKCall("goBack"); } /// /// 回首页 /// /// public void GoHome() { SDKCall("goHome"); } /// /// 是否手动控制漂浮道具显示/隐藏 /// SDK内默认当H5页面加载完成后自动显示漂浮道具 /// /// true: 自动显示/隐藏道具 false: 游戏主动控制道具显示/隐藏 /// public void AutoShowFloat(bool autoShow) { SDKCall("autoShowFloat", autoShow); } /// /// 飘金币 /// /// /// public void ShowFloatCoin(int id) { SDKCall("showFloatCoin", id); } /// /// 飘金币 /// /// /// 悬浮金币按钮的图片资源,传字符串 0 或 1 0:金币图 1:红点宝箱图 /// public void ShowFloatCoin(int id, String res) { SDKCall("showFloatCoin", id, res); } /// /// 设置悬浮金币按钮的图片资源 /// /// 传字符串 0 或 1 0:金币图 1:红点宝箱图 public void SetFloatCoinRes(String res) { SDKCall("setFloatCoinRes", res); } /// /// 隐藏金币 /// /// public void HideFloatCoin() { SDKCall("hideFloatCoin"); } /// /// 飘气球 /// /// /// /// /// /// public void ShowBalloon(int startId, int endId, int fly_first_time, int fly_gap_time) { SDKCall("showBalloon", startId, endId, fly_first_time, fly_gap_time); } /// /// 隐藏气球 /// /// public void HideBalloon() { SDKCall("hideBalloon"); } /// /// /// /// public void ShowToast(string message) { SDKCall("showToast", message); } /// /// 判断当前网页是否还能返回上一页, true:可以返回,此时页面不在首页 false: 不能返回了,当前页面就在首页 /// public void CanGoback(Action canGobackAction) { mCanGobackAction = canGobackAction; SDKCall("canGoback"); } #region 推送通知 /// /// 满足条件:未领取 R$0.1 的 买量用户, 调用这个方法 /// public void SubscribeUnclaimed01() { SDKCall("subscribeUnclaimed01"); } /// /// 不满足条件:未领取 R$0.1 的 买量用户, 调用这个方法 /// public void UnSubscribeUnclaimed01() { SDKCall("unSubscribeUnclaimed01"); } /// // 满足条件: 在排队中 且 当日R$1 未领取 的买量用户, 调用这个方法 /// public void SubscribePending1() { SDKCall("subscribePending1"); } /// /// 不满足条件: 在排队中 且 当日R$1 未领取 的买量用户, 调用这个方法 /// public void UnSubscribePending1() { SDKCall("unSubscribePending1"); } /// /// 订阅Firebase推送主题 /// /// 主题名称 public void SubscribeToTopic(string topic) { SDKCall("subscribeToTopic", topic); } /// /// 取消订阅Firebase推送主题 /// /// 主题名称 public void UnSubscribeToTopic(string topic) { SDKCall("UnSubscribeToTopic", topic); } /// /// 向SDK上报当前金币总数,每次金币变化都要调用一次 /// /// public void SendTotalGold2SDK(int totalGold) { SDKCall("setGoldNum", totalGold.ToString()); } /// /// 向SDK上报当前要提现的现金额,每次变化都要调用一次 /// /// public void SendCashNum2SDK(double cashNum) { SDKCall("setCashNum", cashNum.ToString("0.00")); } /// /// 向SDK上报 游戏名字(当前语言的),每次语言变化都上报 /// /// public void SetGameName(string gameName) { SDKCall("setGameName", gameName); } // /// // /// 设置推送 消息通知 的文案 // /// // /// // public void SetCommPushMessage(string message) // { // SDKCall("setCommPushMessage", message); // } /// /// 设置当前游戏语言是否是 西班牙语 /// /// /// 西班牙语传 true, 其他的都传 false public void SetCurrLang(bool isEs) { SDKCall("setCurrLang", isEs); } /// /// 获取当前是否有通知权限 /// public bool HasNotifyPermission() { return SDKCall("hasNotifyPermission"); } /// /// 请求获取通知权限 /// public void ReqNotifyPermission() { SDKCall("reqNotifyPermission"); } /// /// 请求获取通知权限 /// 授权弹窗关闭回调 bool:表示用户是否允许了权限 true:有权限 false:无权限 /// public void ReqNotifyPermission(Action action) { mReqNotifyPermissionAction = action; SDKCall("reqNotifyPermission"); } /// /// 设置推送开关, SDK默认关闭通知 /// /// public void SetPushSwitch(bool isOpen) { SDKCall("pushSwitch", isOpen); } /// /// 消息类通知弹出间隔设置为60秒(在线参数控制)-Key: messagenotif Value:60 /// /// public void SetPushMessagenotif(int timeSeconds) { SDKCall("setPushMessagenotif", timeSeconds); } /// /// 持续性通知在进入游戏时弹出的时间间隔设置为300秒(在线参数控制 )-Key:persistentnotif Value:300 /// /// public void SetPushPersistentnotif(int timeSeconds) { SDKCall("setPushPersistentnotif", timeSeconds); } /// /// 每次回调游戏的onResume的时候都调用一次,获取游戏要跳转的页面 /// /// /// 0 不需要进行任何跳转 /// 1 进行游戏主页 /// 2 进入游戏的金币提现界面 /// 3 进入对应小游戏1界面 /// 4 进入对应小游戏2界面 /// public int GetJumpPage() { return SDKCall("getJumpPage"); } #endregion } }