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

App Store Connect游戏遭拒:Unity Ads权限判断与追踪禁用问询

解决App Store 5.1.1拒审:权限状态判断与Unity Ads追踪控制

一、判断用户权限选择结果

针对iOS平台的广告追踪权限(IDFA),你可以通过Unity的iOS API获取用户的选择结果:

  • 请求权限并获取回调
    使用UnityEngine.iOS.Device.RequestAuthorization()发起权限请求,通过回调函数接收用户的选择:

    using UnityEngine;
    using UnityEngine.iOS;
    
    public class PermissionHandler : MonoBehaviour
    {
        void Start()
        {
            // 仅当权限未确定时发起请求
            if (Device.authorizationTrackingStatus == AuthorizationTrackingStatus.NotDetermined)
            {
                Device.RequestAuthorization(AuthorizationTrackingStatus.NotDetermined, OnAuthResult);
            }
            else
            {
                // 直接处理已有的权限状态
                HandleAuthStatus(Device.authorizationTrackingStatus);
            }
        }
    
        void OnAuthResult(AuthorizationTrackingStatus status)
        {
            HandleAuthStatus(status);
        }
    
        void HandleAuthStatus(AuthorizationTrackingStatus status)
        {
            switch (status)
            {
                case AuthorizationTrackingStatus.Authorized:
                    // 用户允许追踪
                    break;
                case AuthorizationTrackingStatus.Denied:
                    // 用户拒绝追踪
                    break;
                case AuthorizationTrackingStatus.Restricted:
                    // 权限受限制(如家长控制)
                    break;
            }
        }
    }
    
  • 主动查询当前权限状态
    如果你需要在任意时刻获取权限状态,直接调用:

    AuthorizationTrackingStatus currentStatus = UnityEngine.iOS.Device.authorizationTrackingStatus;
    

二、用户拒绝追踪时禁用Unity Ads追踪

Unity Ads提供了SetLimitUserTracking方法,当用户拒绝广告追踪时,将该值设为true即可阻止Unity Ads收集追踪数据。

代码示例

using UnityEngine;
using UnityEngine.Advertisements;

public class AdsController : MonoBehaviour
{
    void Start()
    {
        CheckAndSetTrackingStatus();
        // 初始化Unity Ads(确保设置在初始化前完成)
        Advertisement.Initialize("你的游戏ID");
    }

    void CheckAndSetTrackingStatus()
    {
        AuthorizationTrackingStatus status = UnityEngine.iOS.Device.authorizationTrackingStatus;
        bool shouldLimitTracking = status == AuthorizationTrackingStatus.Denied || status == AuthorizationTrackingStatus.Restricted;
        
        // 设置Unity Ads追踪限制
        Advertisement.SetLimitUserTracking(shouldLimitTracking);
    }

    // 也可以在权限回调中实时更新
    void OnAuthResult(AuthorizationTrackingStatus status)
    {
        bool shouldLimitTracking = status == AuthorizationTrackingStatus.Denied || status == AuthorizationTrackingStatus.Restricted;
        Advertisement.SetLimitUserTracking(shouldLimitTracking);
    }
}

关键注意点

  • SetLimitUserTracking必须在Unity Ads初始化前调用,否则设置可能不生效。
  • 务必在Info.plist中添加NSUserTrackingUsageDescription键,填写清晰的权限请求说明(比如"我们需要此权限来提供更贴合您兴趣的广告"),这是App Store审核的硬性要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:55:16