using UnityEngine;
|
|
//using UnityEngine.UI;
|
using System.Collections;
|
using System.Runtime.InteropServices;
|
using System.Collections.Generic;
|
|
public class Tracking: MonoBehaviour
|
{
|
private static Tracking _instance = null;
|
|
public static Tracking Instance {
|
get {
|
if (!_instance) {
|
_instance = GameObject.FindObjectOfType (typeof(Tracking)) as Tracking;
|
if (!_instance) {
|
GameObject am = new GameObject ("Tracking");
|
_instance = am.AddComponent (typeof(Tracking)) as Tracking;
|
}
|
}
|
return _instance;
|
}
|
}
|
|
void Awake ()
|
{
|
DontDestroyOnLoad (this);
|
}
|
#if UNITY_IOS
|
|
[DllImport ("__Internal")]
|
private static extern void _internalInitWithAppKeyAndChannel_Tracking (string appKey, string channelId);
|
|
[DllImport ("__Internal")]
|
private static extern void _internalSetRegisterWithAccountID_Tracking (string account);
|
|
[DllImport ("__Internal")]
|
private static extern void _internalSetLoginWithAccountID_Tracking (string account);
|
|
[DllImport ("__Internal")]
|
private static extern void _internalSetRyzfStart_Tracking (string transactionId, string ryzfType, string currencyType, float currencyAmount);
|
|
[DllImport ("__Internal")]
|
private static extern void _internalSetRyzf_Tracking (string transactionId, string ryzfType, string currencyType, float currencyAmount);
|
|
[DllImport ("__Internal")]
|
private static extern void _internalSetOrder_Tracking (string transactionId, string currencyType, float currencyAmount);
|
|
[DllImport ("__Internal")]
|
private static extern void _internalSetEvent_Tracking (string EventName);
|
|
[DllImport ("__Internal")]
|
private static extern string _internalGetDeviceId_Tracking ();
|
|
[DllImport ("__Internal")]
|
private static extern void _internalSetPrintLog_Tracking (bool print);
|
#endif
|
|
#if UNITY_ANDROID
|
public static AndroidJavaObject getApplicationContext ()
|
{
|
|
using (AndroidJavaClass jc = new AndroidJavaClass ("com.unity3d.player.UnityPlayer")) {
|
using (AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject> ("currentActivity")) {
|
return jo.Call<AndroidJavaObject> ("getApplicationContext");
|
}
|
}
|
|
return null;
|
}
|
#endif
|
|
/// <summary>
|
/// 初始化方法
|
/// </summary>
|
/// <param name="appId">appKey</param>
|
/// <param name="channelId">标识推广渠道的字符</param>
|
public void init (string appKey, string channelId)
|
{
|
#if UNITY_IOS
|
_internalInitWithAppKeyAndChannel_Tracking (appKey, channelId);
|
#endif
|
|
#if UNITY_ANDROID
|
using (AndroidJavaClass TrackingIO = new AndroidJavaClass ("com.reyun.tracking.sdk.Tracking")) {
|
TrackingIO.CallStatic ("initWithKeyAndChannelId", getApplicationContext (), appKey, channelId);
|
}
|
#endif
|
|
}
|
|
/// <summary>
|
/// 玩家服务器注册
|
/// </summary>
|
/// <param name="account">账号ID</param>
|
///
|
public void register (string account)
|
{
|
#if UNITY_IOS
|
_internalSetRegisterWithAccountID_Tracking (account);
|
#endif
|
|
#if UNITY_ANDROID
|
using (AndroidJavaClass TrackingIO = new AndroidJavaClass ("com.reyun.tracking.sdk.Tracking")) {
|
TrackingIO.CallStatic ("setRegisterWithAccountID", account);
|
}
|
#endif
|
|
}
|
|
/// <summary>
|
/// 玩家的账号登陆服务器
|
/// </summary>
|
/// <param name="account">账号</param>
|
|
public void login (string account)
|
{
|
#if UNITY_IOS
|
_internalSetLoginWithAccountID_Tracking (account);
|
#endif
|
|
#if UNITY_ANDROID
|
using (AndroidJavaClass TrackingIO = new AndroidJavaClass ("com.reyun.tracking.sdk.Tracking")) {
|
TrackingIO.CallStatic ("setLoginSuccessBusiness", account);
|
}
|
#endif
|
}
|
|
/// <summary>
|
/// 玩家开始充值数据
|
/// </summary>
|
/// <param name="transactionId">交易的流水号</param>
|
/// <param name="paymentType">支付类型</param>
|
/// <param name="currencyType">货币类型</param>
|
/// <param name="currencyAmount">支付的真实货币的金额</param>
|
|
public void setryzfStart (string transactionId, string ryzfType, string currencyType, float currencyAmount)
|
{
|
#if UNITY_IOS
|
_internalSetRyzfStart_Tracking (transactionId, ryzfType, currencyType, currencyAmount);
|
#endif
|
#if UNITY_ANDROID
|
|
using (AndroidJavaClass TrackingIO = new AndroidJavaClass ("com.reyun.tracking.sdk.Tracking")) {
|
TrackingIO.CallStatic ("setPaymentStart", transactionId, ryzfType, currencyType, currencyAmount);
|
}
|
#endif
|
|
}
|
|
/// <summary>
|
/// 玩家的充值数据
|
/// </summary>
|
/// <param name="transactionId">交易的流水号</param>
|
/// <param name="paymentType">支付类型</param>
|
/// <param name="currencyType">货币类型</param>
|
/// <param name="currencyAmount">支付的真实货币的金额</param>
|
|
public void setryzf (string transactionId, string ryzfType, string currencyType, float currencyAmount)
|
{
|
#if UNITY_IOS
|
_internalSetRyzf_Tracking (transactionId, ryzfType, currencyType, currencyAmount);
|
#endif
|
|
#if UNITY_ANDROID
|
|
using (AndroidJavaClass TrackingIO = new AndroidJavaClass ("com.reyun.tracking.sdk.Tracking")) {
|
TrackingIO.CallStatic ("setPayment", transactionId, ryzfType, currencyType, currencyAmount);
|
}
|
#endif
|
|
}
|
|
public void setOrder (string transactionId, string currencyType, float currencyAmount)
|
{
|
#if UNITY_IOS
|
_internalSetOrder_Tracking (transactionId,currencyType,currencyAmount);
|
#endif
|
|
#if UNITY_ANDROID
|
using (AndroidJavaClass TrackingIO = new AndroidJavaClass ("com.reyun.tracking.sdk.Tracking")) {
|
TrackingIO.CallStatic ("setOrder", transactionId, currencyType, currencyAmount);
|
}
|
#endif
|
}
|
|
/// <summary>
|
/// 统计玩家的自定义事件
|
/// </summary>
|
/// <param name="eventName">事件名</param>
|
|
public void setEvent (string eventName)
|
{
|
#if UNITY_IOS
|
_internalSetEvent_Tracking (eventName);
|
#endif
|
|
#if UNITY_ANDROID
|
using (AndroidJavaClass reyun = new AndroidJavaClass ("com.reyun.tracking.sdk.Tracking")) {
|
reyun.CallStatic ("setEvent", eventName, null);
|
}
|
#endif
|
}
|
|
|
|
/// <summary>
|
/// 获取用户的设备ID信息
|
/// </summary>
|
public string getDeviceId ()
|
{
|
#if UNITY_IOS
|
return _internalGetDeviceId_Tracking ();
|
#endif
|
|
#if UNITY_ANDROID
|
string str = "unknown";
|
|
using (AndroidJavaClass TrackingIO = new AndroidJavaClass ("com.reyun.tracking.sdk.Tracking")) {
|
str = TrackingIO.CallStatic<string> ("getDeviceId");
|
}
|
return str;
|
#endif
|
return "unknown";
|
}
|
|
/// 开启日志打印
|
public void setPrintLog (bool print)
|
{
|
#if UNITY_IOS
|
_internalSetPrintLog_Tracking (print);
|
#endif
|
#if UNITY_ANDROID
|
using (AndroidJavaClass reyunConst = new AndroidJavaClass ("com.reyun.tracking.common.ReYunConst")) {
|
reyunConst.SetStatic <bool> ("DebugMode", print);
|
}
|
#endif
|
}
|
}
|