297 lines
8.9 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
} |