miduo_client/Assets/Plugins/TapDBScripts/TapDB.cs

399 lines
12 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using TapDBMiniJSON;
using System;
// version 2.1.4
// 帐户类型
public enum TGTUserType{
TGTTypeAnonymous = 0, // 匿名用户
TGTTypeRegistered = 1,// 注册用户
}
// 用户性别
public enum TGTUserSex{
TGTSexMale = 0, // 男性
TGTSexFemale = 1, // 女性
TGTSexUnknown = 2, // 性别未知
}
public class TapDB
{
#if UNITY_IOS
[DllImport ("__Internal")]
public static extern void TapDB_nativeSetHost(string host);
[DllImport ("__Internal")]
public static extern void TapDB_nativeSetCustomEventHost(string host);
[DllImport ("__Internal")]
public static extern void TapDB_nativeOnStart(string appId, string channel, string gameVersion);
[DllImport ("__Internal")]
public static extern void TapDB_nativeSetUser(string userId);
[DllImport ("__Internal")]
public static extern void TapDB_nativeSetLevel(int level);
[DllImport ("__Internal")]
public static extern void TapDB_nativeSetName(string name);
[DllImport ("__Internal")]
public static extern void TapDB_nativeSetServer(string server);
[DllImport ("__Internal")]
public static extern void TapDB_nativeOnChargeRequest(string orderId, string product, Int32 amount, string currencyType, string payment);
[DllImport ("__Internal")]
public static extern void TapDB_nativeOnChargeSuccess(string orderId, string product, Int32 amount, string currencyType, string payment);
[DllImport ("__Internal")]
public static extern void TapDB_nativeDeprecatedOnChargeSuccess(string orderId);
[DllImport ("__Internal")]
public static extern void TapDB_nativeOnChargeFail(string orderId, string reason);
[DllImport ("__Internal")]
public static extern void TapDB_nativeOnChargeOnlySuccess(string orderId, string product, Int32 amount, string currencyType, Int32 virtualCurrencyAmount, string payment);
[DllImport ("__Internal")]
public static extern void TapDB_nativeOnEvent(string eventCode, string properties);
#elif UNITY_ANDROID
public static string JAVA_CLASS = "com.tapdb.sdk.TapDB";
private static string UNTIFY_CLASS = "com.unity3d.player.UnityPlayer";
private static AndroidJavaClass agent = null;
private static AndroidJavaClass unityClass = null;
private static AndroidJavaClass getAgent() {
if (agent == null) {
agent = new AndroidJavaClass(JAVA_CLASS);
}
return agent;
}
private static AndroidJavaClass getUnityClass(){
if (unityClass == null) {
unityClass = new AndroidJavaClass(UNTIFY_CLASS);
}
return unityClass;
}
private static void TapDB_nativeInit(string appId, string channel, string gameVersion){
AndroidJavaObject activity = getUnityClass().GetStatic<AndroidJavaObject>("currentActivity");
getAgent().CallStatic("init", activity, appId, channel, gameVersion);
}
private static void TapDB_nativeOnResume(){
AndroidJavaObject activity = getUnityClass().GetStatic<AndroidJavaObject>("currentActivity");
getAgent().CallStatic("onResume", activity);
}
private static void TapDB_nativeOnStop(){
AndroidJavaObject activity = getUnityClass().GetStatic<AndroidJavaObject>("currentActivity");
getAgent().CallStatic("onStop", activity);
}
#elif UNITY_STANDALONE_WIN
[DllImport ("TapDB")]
public static extern void UnitySetHost(string host);
[DllImport ("TapDB")]
public static extern void UnityOnStart(string appId, string channel, string version);
[DllImport ("TapDB")]
public static extern void UnitySetUser(string userId, string userName);
[DllImport ("TapDB")]
public static extern void UnitySetLevel(int level);
[DllImport ("TapDB")]
public static extern void UnitySetServer(string server);
[DllImport ("TapDB")]
public static extern void UnityOnCharge(string orderId, string product, int amount, string currencyType, int virtualCurrencyAmount, string payment);
#endif
/**
* 调用该接口修改数据发送的域名,有特殊需要时调用,调用必须位于初始化之前
* 域名必须是https://abc.example.com/的格式,不能为空
*/
public static void setHost(string host){
if (host == null) {
host = "";
}
#if UNITY_IOS
TapDB_nativeSetHost(host);
#elif UNITY_ANDROID
getAgent().CallStatic("setHost", host);
#elif UNITY_STANDALONE_WIN
UnitySetHost(host);
#endif
}
/**
* 调用该接口修改数据发送的域名,有特殊需要时调用,调用必须位于初始化之前
* 域名必须是https://abc.example.com/的格式,不能为空
*/
public static void setCustomEventHost(string host){
if (host == null) {
host = "";
}
#if UNITY_IOS
TapDB_nativeSetCustomEventHost(host);
#elif UNITY_ANDROID
getAgent().CallStatic("setCustomEventHost", host);
#endif
}
/**
* 初始化,尽早调用
* appId: TapDB注册得到的appId
* channel: 分包渠道名称,可为空
* gameVersion: 游戏版本,可为空,为空时,自动获取游戏安装包的版本
*/
public static void onStart(string appId, string channel, string gameVersion){
if (appId == null) {
appId = "";
}
if (channel == null) {
channel = "";
}
if (gameVersion == null) {
gameVersion = "";
}
#if UNITY_IOS
TapDB_nativeOnStart(appId, channel, gameVersion);
#elif UNITY_ANDROID
TapDB_nativeInit(appId, channel, gameVersion);
// TapDB_nativeOnResume();
#elif UNITY_STANDALONE_WIN
UnityOnStart(appId, channel, gameVersion);
#endif
}
public static void onResume(){
#if UNITY_ANDROID
TapDB_nativeOnResume();
#endif
}
public static void onStop(){
#if UNITY_ANDROID
TapDB_nativeOnStop();
#endif
}
/**
* 记录一个用户(注意是平台用户,不是游戏角色!!!!),需要保证唯一性
* userId: 用户的ID注意是平台用户ID不是游戏角色ID如果是匿名用户由游戏生成需要保证不同平台用户的唯一性
* userType: 用户类型
* userSex: 用户性别
* userAge: 用户年龄年龄未知传递0
*/
[Obsolete("接口已弃用,调用setUser(string userId)")]
public static void setUser(string userId, TGTUserType userType, TGTUserSex userSex, int userAge, string userName){
if (userId == null) {
userId = "";
}
if (userName == null) {
userName = "";
}
#if UNITY_IOS
TapDB_nativeSetUser(userId);
TapDB_nativeSetName(userName);
#elif UNITY_ANDROID
getAgent().CallStatic("setUser", userId);
getAgent().CallStatic("setName", userName);
#elif UNITY_STANDALONE_WIN
UnitySetUser(userId, userName);
#endif
}
/**
* 记录一个用户(注意是平台用户,不是游戏角色!!!!),需要保证唯一性
* userId: 用户的ID注意是平台用户ID不是游戏角色ID如果是匿名用户由游戏生成需要保证不同平台用户的唯一性
*/
public static void setUser(string userId){
if (userId == null) {
userId = "";
}
#if UNITY_IOS
TapDB_nativeSetUser(userId);
#elif UNITY_ANDROID
getAgent().CallStatic("setUser", userId);
#elif UNITY_STANDALONE_WIN
UnitySetUser(userId, "");
#endif
}
/**
* 设置用户等级,初次设置时或升级时调用
* level: 等级
*/
public static void setLevel(int level){
#if UNITY_IOS
TapDB_nativeSetLevel(level);
#elif UNITY_ANDROID
getAgent().CallStatic("setLevel", level);
#elif UNITY_STANDALONE_WIN
UnitySetLevel(level);
#endif
}
/**
* 设置用户名
* name: 用户名
*/
public static void setName(string name){
#if UNITY_IOS
TapDB_nativeSetName(name);
#elif UNITY_ANDROID
getAgent().CallStatic("setName", name);
#elif UNITY_STANDALONE_WIN
#endif
}
/**
* 设置用户服务器,初次设置或更改服务器的时候调用
* server: 服务器
*/
public static void setServer(string server){
if (server == null) {
server = "";
}
#if UNITY_IOS
TapDB_nativeSetServer(server);
#elif UNITY_ANDROID
getAgent().CallStatic("setServer", server);
#elif UNITY_STANDALONE_WIN
UnitySetServer(server);
#endif
}
/**
* 发起充值请求时调用
* orderId: 订单ID不能为空
* product: 产品名称,可为空
* amount: 充值金额(分)
* currencyType: 货币类型,可为空,参考:人民币 CNY美元 USD欧元 EUR
* virtualCurrencyAmount: 充值获得的虚拟币
* payment: 支付方式,可为空,如:支付宝
*/
[Obsolete("接口已弃用")]
public static void onChargeRequest(string orderId, string product, Int32 amount, string currencyType, Int32 virtualCurrencyAmount, string payment){
#if UNITY_IOS
TapDB_nativeOnChargeRequest(orderId, product, amount, currencyType, payment);
#elif UNITY_ANDROID
getAgent().CallStatic("onChargeRequest", orderId, product, (long)amount, currencyType, (long)virtualCurrencyAmount, payment);
#endif
}
/**
* 充值成功时调用
* orderId: 订单ID不能为空与上一个接口的orderId对应
*/
[Obsolete("已弃用,请调用onChargeSuccess(string orderId, string product, Int32 amount, string currencyType, string payment)")]
public static void onChargeSuccess(string orderId){
#if UNITY_IOS
TapDB_nativeDeprecatedOnChargeSuccess(orderId);
#elif UNITY_ANDROID
getAgent().CallStatic("onChargeSuccess", orderId);
#endif
}
/**
* 充值成功时调用
* orderId: 订单ID不能为空与上一个接口的orderId对应
* product: 产品名称,可为空
* amount: 充值金额单位分即无论什么币种都需要乘以100
* currencyType: 货币类型,可为空,参考:人民币 CNY美元 USD欧元 EUR
* payment: 支付方式,可为空,如:支付宝
*/
public static void onChargeSuccess(string orderId, string product, Int32 amount, string currencyType, string payment){
#if UNITY_IOS
TapDB_nativeOnChargeSuccess(orderId,product,amount,currencyType,payment);
#elif UNITY_ANDROID
getAgent().CallStatic("onCharge", orderId,product,(long)amount,currencyType,payment);
#endif
}
/**
* 充值失败时调用
* orderId: 订单ID不能为空与上一个接口的orderId对应
* reason: 失败原因,可为空
*/
[Obsolete("接口已弃用")]
public static void onChargeFail(string orderId, string reason){
#if UNITY_IOS
TapDB_nativeOnChargeFail(orderId, reason);
#elif UNITY_ANDROID
getAgent().CallStatic("onChargeFail", orderId, reason);
#endif
}
/**
* 当客户端无法跟踪充值请求发起,只能跟踪到充值成功的事件时,调用该接口记录充值信息
* orderId: 订单ID可为空
* product: 产品名称,可为空
* amount: 充值金额单位分即无论什么币种都需要乘以100
* currencyType: 货币类型,可为空,参考:人民币 CNY美元 USD欧元 EUR
* virtualCurrencyAmount: 充值获得的虚拟币
* payment: 支付方式,可为空,如:支付宝
*/
[Obsolete("已弃用,请调用onChargeSuccess:product:amount:currencyType:payment")]
public static void onChargeOnlySuccess(string orderId, string product, Int32 amount, string currencyType, Int32 virtualCurrencyAmount, string payment){
if (orderId == null) {
orderId = "";
}
if (product == null) {
product = "";
}
if (currencyType == null) {
currencyType = "";
}
if (payment == null) {
payment = "";
}
#if UNITY_IOS
TapDB_nativeOnChargeOnlySuccess(orderId, product, amount, currencyType, virtualCurrencyAmount, payment);
#elif UNITY_ANDROID
getAgent().CallStatic("onChargeOnlySuccess", orderId, product, (long)amount, currencyType, (long)virtualCurrencyAmount, payment);
#elif UNITY_STANDALONE_WIN
UnityOnCharge(orderId, product, amount, currencyType, virtualCurrencyAmount, payment);
#endif
}
/**
* 自定义事件
* eventCode: 事件代码,需要在控制后台预先进行配置
* properties: 事件属性,需要在控制后台预先进行配置
*/
public static void onEvent(string eventCode, Dictionary<string, object> properties) {
if (eventCode == null) {
eventCode = "";
}
if (properties == null) {
properties = new Dictionary<string, object>();
}
string stringProperties = Json.Serialize(properties);
#if UNITY_IOS
TapDB_nativeOnEvent(eventCode, stringProperties);
#elif UNITY_ANDROID
getAgent().CallStatic("onEventDeprecated", eventCode, stringProperties);
#endif
}
}