Swift 请求用户授权以跟踪其跨应用或网站的活动

步骤1:导入框架

首先,需要在Swift文件中导入AppTrackingTransparency框架。

Swift 复制代码
import AppTrackingTransparency
import AdSupport

步骤2:请求跟踪许可

在适当的地方请求用户的跟踪许可。通常,这个请求会在应用启动时或者在用户执行某些操作(例如,访问应用中的广告相关功能)时发出。

Swift 复制代码
import UIKit
import AppTrackingTransparency
import AdSupport

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        requestTrackingPermission()
    }
    
    func requestTrackingPermission() {
        // 检查跟踪授权状态
        if #available(iOS 14, *) {
            ATTrackingManager.requestTrackingAuthorization { status in
                switch status {
                case .authorized:
                    print("用户授权了应用跟踪")
                    // 可以访问广告标识符 (IDFA)
                    let idfa = ASIdentifierManager.shared().advertisingIdentifier
                    print("IDFA: \(idfa)")
                case .denied:
                    print("用户拒绝了应用跟踪")
                case .restricted:
                    print("应用跟踪权限受限")
                case .notDetermined:
                    print("用户尚未决定是否允许应用跟踪")
                @unknown default:
                    print("未知的跟踪授权状态")
                }
            }
        } else {
            // iOS 14 以下版本不需要请求跟踪权限
            print("iOS 14 以下版本不需要请求跟踪权限")
        }
    }
}

步骤3:更新Info.plist文件

为了让系统在请求跟踪许可时显示自定义说明,需要在Info.plist文件中添加一个键NSUserTrackingUsageDescription,并为其提供描述性文本,说明为什么需要用户允许跟踪。

在 Info.plist 文件中添加 NSUserTrackingUsageDescription 键的步骤:

  1. 打开 Xcode 项目。

  2. 在项目导航器中找到应用的 Info.plist 文件。这通常位于项目的"Supporting Files"文件夹中。

  3. 右键点击 Info.plist 文件,然后选择"Open As" -> "Source Code"来以源代码形式打开它。

  4. 在 <dict> 标签内,添加一个新的 <key> 和 <string> 对来定义 NSUserTrackingUsageDescription。

XML 复制代码
<key>NSUserTrackingUsageDescription</key>  
<string>为了向您提供更个性化的广告和内容,我们请求您的授权以允许应用跟踪您的活动。</string>

注意:从 iOS 14 开始,如果应用尝试在没有用户授权的情况下跟踪用户,应用可能会受到苹果的审查或限制。因此,确保在请求跟踪授权之前,你已经向用户清楚地解释了为什么你的应用需要这样做。

说明

  • requestTrackingPermission方法:这个方法会检查当前的跟踪授权状态,如果运行在iOS 14及以上版本,会请求用户的跟踪许可。
  • ATTrackingManager.requestTrackingAuthorization:这是请求用户跟踪许可的核心方法。它会显示系统弹出框,向用户请求授权。
  • ASIdentifierManager.shared().advertisingIdentifier:在用户授权的情况下,可以访问广告标识符 (IDFA)。
  • Info.plist中的NSUserTrackingUsageDescription:这是在请求跟踪许可时显示给用户的说明,必须根据应用的实际用途填写。

处理不同的授权状态

在requestTrackingPermission方法中,根据用户的选择处理不同的授权状态:

  • .authorized:用户授权了应用跟踪,可以访问IDFA。
  • .denied:用户拒绝了应用跟踪。
  • .restricted:应用跟踪权限受限,通常是由于家长控制或设备配置限制。
  • .notDetermined:用户尚未决定是否允许应用跟踪。
相关推荐
老李IT笔记4 小时前
关掉设备上的 AI 扩展:两个键各管一层,配错了等于没配
人工智能·ios·智能手机
2501_915921434 小时前
iOS应用耗电测试:使用Energy Log、Keymob和Instruments进行性能监控与能源消耗分析
android·ios·小程序·https·uni-app·iphone·webview
黑化旺仔6 小时前
RunLoop 源码探索
ios·cocoa·xcode
茶底世界之下10 小时前
叶片纹理要多硬?用 Awaking 只加一点清晰度
ios
2501_9151063212 小时前
KXApp 的 VS Code 真机调试:按下 Cmd+R 之后发生了什么
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
ii_best13 小时前
安卓手机开发、iOS 手机开发都能用:按键精灵远程调试,设备在千里外也能改脚本
android·ios·智能手机·自动化·按键精灵
2601_9555181813 小时前
36. 跨语言:C/C++与Swift&Objective-C混合编程(一)
objective-c·swift·c/c++·混合编程·跨语言
开心猴爷1 天前
应对iOS审核4.3:可以使用 IpaGuard 来给属性名混淆的技术细节与平衡之道
后端·ios
iOS开发上架哦1 天前
iOS应用耗电测试:使用Energy Log、Keymob和Instruments进行性能监控与能源消耗分析
后端·ios
_瑞1 天前
APM_KSCrash 原理
ios