Skip to content

Clever SDK Unity 数据埋点指南

本指南将详细介绍如何在 Unity 项目中利用 Clever SDK 进行数据埋点,以便收集用户行为数据并进行分析。

1. 用户属性设置

您可以设置用户的属性,例如用户 ID、等级、注册时间等,这些属性将与用户上报的事件关联。

1.1 设置用户 ID

建议在用户登录或注册成功后立即设置用户 ID,以便追踪特定用户的行为。

csharp
using UnityEngine;
using CleverSDK;

public class UserProfileManager : MonoBehaviour
{
    public void SetUserId(string userId)
    {
        CleverSDK.SetUserId(userId);
        Debug.Log($"用户 ID 已设置为: {userId}");
    }

    // 示例:在用户登录成功后调用
    public void OnUserLoginSuccess(string userId)
    {
        SetUserId(userId);
    }
}

1.2 设置用户属性

您可以设置多个用户属性,例如用户昵称、性别、等级、VIP 等级等。

csharp
using UnityEngine;
using CleverSDK;
using System.Collections.Generic;

public class UserProfileManager : MonoBehaviour
{
    public void SetUserProperties(Dictionary<string, object> properties)
    {
        CleverSDK.SetUserProperties(properties);
        Debug.Log($"用户属性已设置: {JsonUtility.ToJson(properties)}");
    }

    // 示例:设置用户等级和注册时间
    public void UpdateUserLevelAndRegisterTime(int level, string registerTime)
    {
        Dictionary<string, object> properties = new Dictionary<string, object>
        {
            { "level", level },
            { "register_time", registerTime }
        };
        SetUserProperties(properties);
    }
}

2. 事件上报

事件上报是数据埋点的核心,您可以上报各种用户行为事件,例如点击按钮、完成任务、购买商品等。

2.1 上报普通事件

上报一个不带参数的事件:

csharp
using UnityEngine;
using CleverSDK;

public class EventTracker : MonoBehaviour
{
    public void ReportSimpleEvent(string eventName)
    {
        CleverSDK.ReportEvent(eventName);
        Debug.Log($"上报事件: {eventName}");
    }

    // 示例:上报游戏开始事件
    public void OnGameStart()
    {
        ReportSimpleEvent("game_start");
    }
}

2.2 上报带参数事件

上报一个带参数的事件,参数以 Dictionary 形式传递:

csharp
using UnityEngine;
using CleverSDK;
using System.Collections.Generic;

public class EventTracker : MonoBehaviour
{
    public void ReportEventWithProperties(string eventName, Dictionary<string, object> properties)
    {
        CleverSDK.ReportEvent(eventName, properties);
        Debug.Log($"上报事件: {eventName}, 参数: {JsonUtility.ToJson(properties)}");
    }

    // 示例:上报购买商品事件
    public void OnPurchaseItem(string itemId, string itemName, int price, int quantity)
    {
        Dictionary<string, object> properties = new Dictionary<string, object>
        {
            { "item_id", itemId },
            { "item_name", itemName },
            { "price", price },
            { "quantity", quantity }
        };
        ReportEventWithProperties("purchase_item", properties);
    }

    // 示例:上报关卡完成事件
    public void OnLevelComplete(int levelNumber, int score, bool isSuccess)
    {
        Dictionary<string, object> properties = new Dictionary<string, object>
        {
            { "level_number", levelNumber },
            { "score", score },
            { "is_success", isSuccess }
        };
        ReportEventWithProperties("level_complete", properties);
    }
}

参数命名建议:

  • 使用小写字母和下划线组合 (snake_case)。
  • 避免使用特殊字符和空格。
  • 参数名应具有描述性,能够清晰表达其含义。

3. 页面事件上报

Clever SDK 通常会自动收集页面(场景)的进入和退出事件。如果您需要手动控制或上报自定义页面事件,可以使用以下方法:

3.1 上报页面进入事件

csharp
using UnityEngine;
using CleverSDK;

public class PageTracker : MonoBehaviour
{
    public void ReportPageEnter(string pageName)
    {
        CleverSDK.ReportPageEnter(pageName);
        Debug.Log($"进入页面: {pageName}");
    }

    // 示例:在场景加载完成后调用
    void Start()
    {
        ReportPageEnter(UnityEngine.SceneManagement.SceneManager.GetActiveScene().name);
    }
}

3.2 上报页面退出事件

csharp
using UnityEngine;
using CleverSDK;

public class PageTracker : MonoBehaviour
{
    public void ReportPageLeave(string pageName)
    {
        CleverSDK.ReportPageLeave(pageName);
        Debug.Log($"离开页面: {pageName}");
    }

    // 示例:在场景卸载前调用
    void OnDestroy()
    {
        ReportPageLeave(UnityEngine.SceneManagement.SceneManager.GetActiveScene().name);
    }
}

通过合理地设置用户属性和上报事件,您可以全面地了解用户行为,为产品优化和运营决策提供数据支持。