using System.Collections.Generic; using System; using Newtonsoft.Json; using UnityEngine; using AOT; #if UNITY_IOS using System.Runtime.InteropServices; #endif namespace BF { public static class BFNativeSDKMessage { // Google登录 public const int GOOGLE_LOGIN_SUCCESS = 1; public const int GOOGLE_LOGIN_FAILED = 2; // Google登出成功 public const int GOOGLE_LOGOUT_SUCCESS = 3; // Google支付 public const int GOOGLE_PAY_SUCCESS = 4; public const int GOOGLE_PAY_FAILED = 5; public const int GOOGLE_PAY_CANCEL = 6; public const int GOOGLE_CONNECT_SUCCESS = 7; public const int GOOGLE_CONNECT_FAILED = 8; public const int QUERY_PRODUCT_SUCCESS = 9; public const int QUERY_PRODUCT_FAILED = 10; public const int QUERY_UNCOMPLETE_ORDER_FINISH = 11; public const int GOOGLE_CONSUME_SUCCESS = 12; public const int GOOGLE_CONSUME_FAILED = 13; // Google登出失败 public const int GOOGLE_LOGOUT_FAILED = 14; // firebase token public const int FIREBASE_TOKEN = 15; // 订阅查询 public const int QUERY_SUBSCRIBE_FINISH = 16; public const int ADMOB_SHOWED_FULLSCREEN = 17; public const int ADMOB_FAILEDTO_SHOW_FULLSCREEN = 18; public const int ADMOB_DISMISSED_FULLSCREEN = 19; public const int ADMOB_LOADED = 20; public const int ADMOB_LOADED_FAILED = 21; public const int ADMOB_EARNED_REWARD = 22; public const int ADMOB_INITIALIZED = 23; } public class BFNativeSDKManager : MonoBehaviour { #if UNITY_ANDROID && !UNITY_EDITOR private static readonly AndroidJavaClass androidJavaClass = new AndroidJavaClass("com.juzu.dz.third.GooglePlugin"); #endif #if UNITY_IOS && !UNITY_EDITOR private delegate void GetFirebaseTokenCompleted(string token); [DllImport("__Internal")] private static extern void FIRLogEvent(string eventName, string properties); [DllImport("__Internal")] private static extern void FIRGetToken(IntPtr callback); #endif [Serializable] public class NativeResultMsg { public int head; public string body; } public void InitGoogleLogin() { #if UNITY_ANDROID && !UNITY_EDITOR androidJavaClass.CallStatic("initLogin"); #endif } public void InitGooglePay() { #if UNITY_ANDROID && !UNITY_EDITOR androidJavaClass.CallStatic("initBilling"); #endif } public void InitAdmobRewardedVideo() { #if UNITY_ANDROID && !UNITY_EDITOR androidJavaClass.CallStatic("initAdmobRewardedVideo"); #endif } public void GooglePay(string payType, string productId, string customMsg) { #if UNITY_ANDROID && !UNITY_EDITOR androidJavaClass.CallStatic("pay", payType, productId, customMsg); #endif } public void ConsumePurchase(string token) { #if UNITY_ANDROID && !UNITY_EDITOR androidJavaClass.CallStatic("consumeAsync", token); #endif } public void GoogleLogin() { #if UNITY_ANDROID && !UNITY_EDITOR androidJavaClass.CallStatic("login"); #endif } public void GoogleLogout() { #if UNITY_ANDROID && !UNITY_EDITOR androidJavaClass.CallStatic("logout"); #endif } public void QueryGoogleProductInfo(string payType, string productJson) { #if UNITY_ANDROID && !UNITY_EDITOR androidJavaClass.CallStatic("queryProductsInfo", payType, productJson); #endif } // 连接google商店 public void ConnectGoogleStore() { #if UNITY_ANDROID && !UNITY_EDITOR androidJavaClass.CallStatic("connectGoogleStore"); #endif } public void QueryUncompleteOrder(string payType) { #if UNITY_ANDROID && !UNITY_EDITOR androidJavaClass.CallStatic("queryUncompleteOrder", payType); #endif } public void QuerySubscribeInfo(string payType) { #if UNITY_ANDROID && !UNITY_EDITOR androidJavaClass.CallStatic("querySubscribeOrder", payType); #endif } #if UNITY_IOS && !UNITY_EDITOR [MonoPInvokeCallback(typeof(GetFirebaseTokenCompleted))] private static void GetFirebaseTokenCallback(string token) { BFMain.Instance.LoomMgr.QueueOnMainThread(() => { BFMain.Instance.SDKMgr.BFLoginSDKMgr.SetFirebaseToken(token); }); } #endif public void GetFirebaseToken() { #if UNITY_ANDROID && !UNITY_EDITOR androidJavaClass.CallStatic("getFirebaseToken"); #endif #if UNITY_IOS && !UNITY_EDITOR IntPtr cback = IntPtr.Zero; GetFirebaseTokenCompleted d = GetFirebaseTokenCallback; cback = Marshal.GetFunctionPointerForDelegate(d); FIRGetToken(cback); #endif } public void ShowFullScreenAds() { #if UNITY_ANDROID && !UNITY_EDITOR androidJavaClass.CallStatic("showFullScreenAds"); #endif } public void TryLoadRewardedAd() { #if UNITY_ANDROID && !UNITY_EDITOR androidJavaClass.CallStatic("tryLoadRewardedAd"); #endif } public void SetAdPlacement(string placement) { #if UNITY_ANDROID && !UNITY_EDITOR androidJavaClass.CallStatic("setAdPlacement", placement); #endif } // firebase log event public void LogEvent(string eventName, Dictionary eventValues) { LogEvent(eventName, JsonConvert.SerializeObject(eventValues)); } public void LogEvent(string eventName, string eventValues) { #if UNITY_ANDROID && !UNITY_EDITOR androidJavaClass.CallStatic("logEvent", eventName, eventValues); #endif #if UNITY_IOS && !UNITY_EDITOR FIRLogEvent(eventName, eventValues); #endif } // Log to Crashlytics public void LogCrashCustomKey(string key, string stack) { #if UNITY_ANDROID && !UNITY_EDITOR androidJavaClass.CallStatic("logCrash", key, stack); #endif } public void MsgFromAndroidOrIOS(string content) { var msgResult = JsonUtility.FromJson(content); BFLog.Log(msgResult.body); int head = msgResult.head; switch (head){ case BFNativeSDKMessage.GOOGLE_LOGIN_SUCCESS: BFMain.Instance.SDKMgr.BFLoginSDKMgr.GoogleLoginComplete(true, msgResult.body); break; case BFNativeSDKMessage.GOOGLE_LOGIN_FAILED: BFMain.Instance.SDKMgr.BFLoginSDKMgr.GoogleLoginComplete(false, msgResult.body); break; case BFNativeSDKMessage.GOOGLE_LOGOUT_SUCCESS: BFMain.Instance.SDKMgr.BFLoginSDKMgr.GoogleLogoutComplete(true); break; case BFNativeSDKMessage.GOOGLE_LOGOUT_FAILED: BFMain.Instance.SDKMgr.BFLoginSDKMgr.GoogleLogoutComplete(false); break; case BFNativeSDKMessage.GOOGLE_CONNECT_SUCCESS: BFMain.Instance.SDKMgr.BFPaySDKMgr.GoogleStoreConnectComplete(true); break; case BFNativeSDKMessage.GOOGLE_CONNECT_FAILED: BFMain.Instance.SDKMgr.BFPaySDKMgr.GoogleStoreConnectComplete(false); break; case BFNativeSDKMessage.QUERY_PRODUCT_SUCCESS: BFMain.Instance.SDKMgr.BFPaySDKMgr.QueryProductOver(true, msgResult.body); break; case BFNativeSDKMessage.QUERY_PRODUCT_FAILED: BFMain.Instance.SDKMgr.BFPaySDKMgr.QueryProductOver(false, msgResult.body); break; case BFNativeSDKMessage.GOOGLE_PAY_SUCCESS: BFMain.Instance.SDKMgr.BFPaySDKMgr.GooglePayComplete(0, msgResult.body); break; case BFNativeSDKMessage.GOOGLE_PAY_FAILED: BFMain.Instance.SDKMgr.BFPaySDKMgr.GooglePayComplete(2, msgResult.body); break; case BFNativeSDKMessage.GOOGLE_PAY_CANCEL: BFMain.Instance.SDKMgr.BFPaySDKMgr.GooglePayComplete(1, msgResult.body); break; case BFNativeSDKMessage.QUERY_UNCOMPLETE_ORDER_FINISH: BFMain.Instance.SDKMgr.BFPaySDKMgr.QueryUncompleteOrderFinish(msgResult.body); break; case BFNativeSDKMessage.GOOGLE_CONSUME_SUCCESS: BFMain.Instance.SDKMgr.BFPaySDKMgr.GoogleConsumeComplete(0); break; case BFNativeSDKMessage.GOOGLE_CONSUME_FAILED: BFMain.Instance.SDKMgr.BFPaySDKMgr.GoogleConsumeComplete(1); break; case BFNativeSDKMessage.FIREBASE_TOKEN: BFMain.Instance.SDKMgr.BFLoginSDKMgr.SetFirebaseToken(msgResult.body); break; case BFNativeSDKMessage.QUERY_SUBSCRIBE_FINISH: BFMain.Instance.SDKMgr.BFPaySDKMgr.QuerySubscribeInfoFinish(msgResult.body); break; case BFNativeSDKMessage.ADMOB_SHOWED_FULLSCREEN: // BFMain.Instance.SDKMgr.BFAdmobSDKMgr.ShowFullScreenAdFinish(0); break; case BFNativeSDKMessage.ADMOB_FAILEDTO_SHOW_FULLSCREEN: // BFMain.Instance.SDKMgr.BFAdmobSDKMgr.ShowFullScreenAdFinish(1); break; case BFNativeSDKMessage.ADMOB_DISMISSED_FULLSCREEN: // BFMain.Instance.SDKMgr.BFAdmobSDKMgr.ShowFullScreenAdFinish(2); break; case BFNativeSDKMessage.ADMOB_LOADED: // BFMain.Instance.SDKMgr.BFAdmobSDKMgr.AdLoadedFinish(0); break; case BFNativeSDKMessage.ADMOB_LOADED_FAILED: // BFMain.Instance.SDKMgr.BFAdmobSDKMgr.AdLoadedFinish(1); break; case BFNativeSDKMessage.ADMOB_EARNED_REWARD: // BFMain.Instance.SDKMgr.BFAdmobSDKMgr.EarnedRewardFinish(0, msgResult.body); break; case BFNativeSDKMessage.ADMOB_INITIALIZED: // BFMain.Instance.SDKMgr.BFAdmobSDKMgr.AdInitialized = true; break; default: break; } } } }