如何在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
相关产品推荐
相关产品推荐

