You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Unity中借助Google UMP将用户同意存储至在线数据库?

借助UMP将用户同意存储至在线数据库的实现步骤

1. 获取UMP的同意数据

在Unity中通过UMP SDK获取用户的完整同意信息,包括TCF字符串、个性化广告授权状态、各厂商同意状态等,核心代码示例:

using Google.UserMessagingPlatform;
using System.Collections.Generic;

public class ConsentUploadManager : MonoBehaviour
{
    private ConsentInformation _consentInfo;

    void Start()
    {
        _consentInfo = ConsentInformation.Instance;
        _consentInfo.ConsentInfoUpdated += OnConsentInfoUpdated;
        _consentInfo.RequestConsentInfoUpdate(
            new ConsentRequestParameters(),
            OnConsentUpdateSuccess,
            OnConsentUpdateFailure
        );
    }

    private void OnConsentInfoUpdated(object sender, System.EventArgs e)
    {
        // 提取关键同意数据
        string tcfString = _consentInfo.GetTCFString();
        bool allowPersonalizedAds = _consentInfo.CanRequestAds();
        Dictionary<string, bool> vendorConsents = _consentInfo.GetVendorConsents();

        // 触发上传逻辑
        StartCoroutine(UploadConsentToServer(tcfString, allowPersonalizedAds, vendorConsents));
    }

    private void OnConsentUpdateSuccess() { /* 可选:添加成功回调逻辑 */ }
    private void OnConsentUpdateFailure(FormError error) { /* 错误日志记录 */ }
}

2. 实现在线上传逻辑

编写网络请求代码,将获取到的同意数据发送至你的后端API,由后端完成数据库存储。示例代码:

using UnityEngine.Networking;
using System.Collections;
using System.Text;

private IEnumerator UploadConsentToServer(string tcfString, bool allowPersonalized, Dictionary<string, bool> vendorConsents)
{
    // 构造结构化数据模型
    ConsentRecord record = new ConsentRecord
    {
        UserUniqueId = GetUserUniqueId(),
        TcfConsentString = tcfString,
        AllowPersonalizedAds = allowPersonalized,
        VendorConsentStatus = vendorConsents,
        RecordTimestamp = System.DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ")
    };

    string jsonPayload = JsonUtility.ToJson(record);
    byte[] rawPayload = Encoding.UTF8.GetBytes(jsonPayload);

    using (UnityWebRequest request = new UnityWebRequest("你的后端API地址", "POST"))
    {
        request.uploadHandler = new UploadHandlerRaw(rawPayload);
        request.downloadHandler = new DownloadHandlerBuffer();
        request.SetRequestHeader("Content-Type", "application/json");

        yield return request.SendWebRequest();

        if (request.result != UnityWebRequest.Result.Success)
        {
            Debug.LogError($"同意数据上传失败: {request.error}");
            // 可选:添加重试逻辑
        }
        else
        {
            Debug.Log("同意数据已成功上传至服务器");
        }
    }
}

// 数据模型类
[System.Serializable]
public class ConsentRecord
{
    public string UserUniqueId;
    public string TcfConsentString;
    public bool AllowPersonalizedAds;
    public Dictionary<string, bool> VendorConsentStatus;
    public string RecordTimestamp;
}

// 获取用户唯一标识(优先用登录ID,无登录则用设备ID)
private string GetUserUniqueId()
{
    // 若有用户登录系统,替换为用户的登录ID
    return SystemInfo.deviceUniqueIdentifier;
}

3. 后端存储规范

后端接收到数据后,需遵循以下规则存储:

  • 以用户唯一标识为索引,确保同意记录可追溯
  • 完整存储TCF字符串与时间戳,满足GDPR的证明要求
  • 使用加密数据库存储,传输全程采用HTTPS
  • 保留数据修改日志,便于合规审计

4. 核心注意事项

  • 用户标识:优先使用用户登录ID而非设备ID,避免设备更换导致记录断裂
  • 合规性:在隐私政策中明确告知用户同意信息的上传与存储行为
  • 重试机制:为上传逻辑添加失败重试(限次数),避免网络波动导致数据丢失
  • 数据清理:提供用户删除同意记录的入口,符合GDPR的数据可删除权要求

内容的提问来源于stack exchange,提问作者NoobMaster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 11:25:04