c1_unity/Assets/Scripts/Common/SDK/BFNativeSDKManager.cs
2023-06-19 11:45:19 +08:00

297 lines
8.9 KiB
C#

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<string, object> 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<NativeResultMsg>(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;
}
}
}
}