当前位置: 首页 > news >正文

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

步骤1:导入框架

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

import AppTrackingTransparency
import AdSupport

步骤2:请求跟踪许可

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

import UIKit
import AppTrackingTransparency
import AdSupportclass ViewController: UIViewController {override func viewDidLoad() {super.viewDidLoad()requestTrackingPermission()}func requestTrackingPermission() {// 检查跟踪授权状态if #available(iOS 14, *) {ATTrackingManager.requestTrackingAuthorization { status inswitch status {case .authorized:print("用户授权了应用跟踪")// 可以访问广告标识符 (IDFA)let idfa = ASIdentifierManager.shared().advertisingIdentifierprint("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

<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:用户尚未决定是否允许应用跟踪。
http://www.lryc.cn/news/353166.html

相关文章:

  • 最新版npm详解
  • 超值分享50个DFM模型格式的素人直播资源,适用于DeepFaceLive的DFM合集
  • Python——一维二维字典数据转化为DataFrame的方法
  • unity中如何插入网页
  • 【负载均衡在线OJ项目日记】引入网络库和客户端用户路由功能
  • 【Vue3】env环境变量的配置和使用(区分cli和vite)
  • ACW石子合并-XMUOJ元素共鸣:唤醒神之眼 -区间DP
  • 大语言模型实战——搭建纯本地迷你版RAG
  • 内存分配算法
  • Hive运行错误
  • vue3之使用图片实现类似于 el-radio 的单选框功能,并且可实现选中和取消选中
  • Vue 安装vue
  • 5月30日在线研讨会 | 面向智能网联汽车的产教融合解决方案
  • 嵩山为什么称为三水之源
  • 最新文章合集
  • Jmeter预习第1天
  • Volatile的内存语义
  • Debezium+Kafka:Oracle 11g 数据实时同步至 DolphinDB 解决方案
  • 前端如何在 WebSocket 的请求头中使用标准 HTTP 头携带 Authorization 信息,添加请求头
  • Java---图书管理系统(练习版)
  • ICML2024 定义新隐私保护升级:DP-BITFIT新型微调技术让AI模型学习更安全
  • 网络空间安全数学基础·整除与同余
  • 同旺科技 FLUKE ADPT 隔离版发布 ---- 说明书
  • 云计算-角色、特性和模型 (Roles, Characteristics, and Models)
  • 介绍一下Hugging Face,这个公司的背景是什么
  • 【C++高阶(一)】继承
  • AI原生嵌入式矢量模型数据库ChromaDB-部署与使用指南
  • c# 画一个正弦函数
  • Docker学习(3):镜像使用
  • 【Git】版本控制工具——Git介绍及使用