当前位置: 首页 > 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:用户尚未决定是否允许应用跟踪。

相关文章:

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

步骤1&#xff1a;导入框架 首先&#xff0c;需要在Swift文件中导入AppTrackingTransparency框架。 import AppTrackingTransparency import AdSupport步骤2&#xff1a;请求跟踪许可 在适当的地方请求用户的跟踪许可。通常&#xff0c;这个请求会在应用启动时或者在用户执行…...

最新版npm详解

如&#xff1a;npm中搜索 jQuery image.png image.png 接地气的描述&#xff1a;npm 类似于如下各大手机应用市场 image.png image.png 查看本地 node 和 npm 是否安装成功 image.png image.png 或 npm install -g npm image.png image.png image.png image.png image.…...

超值分享50个DFM模型格式的素人直播资源,适用于DeepFaceLive的DFM合集

50直播模型&#xff1a;点击下载 作为直播达人&#xff0c;我在网上购买了大量直播用的模型资源&#xff0c;包含男模女模、明星脸、大众脸、网红脸及各种稀缺的路人素人模型。现在&#xff0c;我将这些宝贵的资源整理成合集分享给大家&#xff0c;需要的朋友们可以直接点击下…...

Python——一维二维字典数据转化为DataFrame的方法

import pands as pddf pd.DataFrame(dict)...

unity中如何插入网页

在Unity中插入自己的网页通常是通过使用Unity的WebGL构建目标和HTML页面来实现的。以下是一些步骤&#xff1a; 构建你的Unity项目为WebGL&#xff1a;在Unity中&#xff0c;选择Build Settings&#xff08;构建设置&#xff09;&#xff0c;将Platform&#xff08;平台&#x…...

【负载均衡在线OJ项目日记】引入网络库和客户端用户路由功能

目录 引入cpp-httplib库 将编译与运行服务打包 代码 客户端用户路由功能 采用MVC结构进行设计 用户路由功能 路由功能代码 引入cpp-httplib库 对于后端编译与运行模块基本已经设计完成&#xff0c;最后用户是通过网络传递代码等信息&#xff1b;我们就要将这个模块引入…...

【Vue3】env环境变量的配置和使用(区分cli和vite)

原文作者&#xff1a;我辈李想 版权声明&#xff1a;文章原创&#xff0c;转载时请务必加上原文超链接、作者信息和本声明。 文章目录 前言一、env文件二、vue3cli加载env1..env配置2..dev配置&#xff08;其他环境参考&#xff09;3.package.json文件4.使用 三、vue3vite加载e…...

ACW石子合并-XMUOJ元素共鸣:唤醒神之眼 -区间DP

题目 思路 话不多说&#xff0c;直接上代码 代码 /* ACW石子合并-XMUOJ元素共鸣&#xff1a;唤醒神之眼 JinlongW-2024/05/25 区间DP 当i<j时&#xff0c;f[i][j]min(f[i][k]f[k][j]s[j]-s[i-1]) 当ij时&#xff0c;f[i][j]0 最终答案&#xff1a;f[1][n] *//* 区间DP…...

大语言模型实战——搭建纯本地迷你版RAG

1. 概念 RAG&#xff08;Retrieval Augmented Generation&#xff09;检索增强生成&#xff0c;它结合了搜索技术和大语言模型的提示词功能&#xff0c;以搜索算法找到的信息作为背景上下文&#xff0c;来辅助大语言模型&#xff08;Large Language Model, LLM&#xff09;生成…...

内存分配算法

一、实验目的&#xff1a; 实验目的&#xff1a; 通过编写一个内存分配模拟程序&#xff0c;实现首次适应算法&#xff08;First Fit&#xff09;、循环首次适应算法&#xff08;Next Fit&#xff09;、最佳适应算法&#xff08;Best Fit&#xff09;和最差适应算法&#xff08…...

Hive运行错误

Hive 文章目录 Hive错误日志错误SessionHiveMetaStoreClientql.Driver: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTaskerror: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster Please check …...

vue3之使用图片实现类似于 el-radio 的单选框功能,并且可实现选中和取消选中

背景 我们在工作中常用的一般都是使用类似于 element-plus 中的 el-radio 或者是 el-checkbox 来实现单选或者多选 若有一天我们遇到了一个新的业务需求,需要使用 图片 来实现类似于 el-radio 的功能,并且要求实现第一次点击时处于选中状态,当我们再次点击时处于非选中状态…...

Vue 安装vue

1、官网安装下载安装nodejs 2、安装完成后&#xff0c;通过命令查看版本,可以查看到版本 node -v npm -v 3、安装Vue CLi npm install -g vue/cli 4、创建项目,vue create test 如果遇到报错&#xff1a; ERROR Error: spawn yarn ENOENT Error: spawn yarn ENOENT at ChildP…...

5月30日在线研讨会 | 面向智能网联汽车的产教融合解决方案

随着智能网联汽车技术的快速发展&#xff0c;产业对高素质技术技能人才的需求日益增长。为了促进智能网联汽车行业的健康发展&#xff0c;推动教育链、人才链与产业链、创新链的深度融合&#xff0c;经纬恒润推出产教融合相关方案&#xff0c;旨在通过促进教育链与产业链的深度…...

嵩山为什么称为三水之源

三水指黄河、淮河、济河&#xff0c;这三条河流环绕在嵩山周边。 黄河横亘在嵩山北部&#xff0c;其支流伊洛河从西南方环绕嵩山&#xff0c;然后汇入黄河。济河&#xff0c;古称济水&#xff0c;源自济源王屋山&#xff0c;自身河道在东晋时代被黄河夺占&#xff0c;从此消失。…...

最新文章合集

GitHub宝藏项目&#xff1a;每天一个&#xff0c;让你的技术库增值不停&#xff01; STORM、SuperMemory、Awesome Chinese LLM、AI写作助手、资料搜集、文章生成、视角问题引导、模拟对话策略、内容导入、浏览器插件、资源库、开源微调模型 开发者必看&#xff1a;Linux终端…...

Jmeter预习第1天

Jmeter参数化&#xff08;重点&#xff09; 本质&#xff1a;使用参数的方式来替代脚本中的固定为测试数据 实现方式&#xff1a; 定义变量&#xff08;最基础&#xff09; 文件定义的方式&#xff08;所有测试数据都是固定的情况下[死数据]&#xff0c;eg:注册登录&#xff0…...

Volatile的内存语义

1、volatile的特性 可见性&#xff1a;对一个volatile变量的读&#xff0c;总能够看到任意一个线程对这个volatile变量的写入。 原子性&#xff1a;对任意单个volatile变量的读/写具有原子性&#xff0c;但类似于volatile这种复合操作不具有原子性。 接下来我们用程序验证。…...

Debezium+Kafka:Oracle 11g 数据实时同步至 DolphinDB 解决方案

随着越来越多用户使用 DolphinDB&#xff0c;各式各样的应用场景对 DolphinDB 的数据接入提出了不同的要求。部分用户需要将 Oracle 11g 的数据实时同步到 DolphinDB 中来&#xff0c;以满足在 DolphinDB 中实时使用数据的需求。本篇教程将介绍使用 Debezium 来实时捕获和发布 …...

前端如何在 WebSocket 的请求头中使用标准 HTTP 头携带 Authorization 信息,添加请求头

WebSocket 的请求头(header)中如何携带 authorization...

轴向柱塞泵体加工生产线专机及主要辅助设备多头钻床及攻丝机床液压系统设计

轴向柱塞泵体作为液压系统的核心部件&#xff0c;其加工精度直接影响设备性能与寿命。在泵体加工过程中&#xff0c;多头钻床与攻丝机床的液压系统设计是关键环节。多头钻床的液压系统通过同步控制多个钻头的进给与回退&#xff0c;实现高效钻孔作业。其核心作用在于利用液压传…...

5分钟彻底解锁Mac百度网盘限速:开源加速插件完整实战指南

5分钟彻底解锁Mac百度网盘限速&#xff1a;开源加速插件完整实战指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 你是否曾在Mac上使用百度网盘下载…...

2026开发者App质量监控工具盘点与选型

2026开发者App质量监控工具盘点与选型 质量导航君 头像&#xff1a; 粉丝数&#xff1a;9.6万&#xff5c;获赞数&#xff1a;42.7万 专注开发者工具选型科普&#xff0c;长期输出真实测评与场景解法&#xff0c;帮你在繁杂方案中快速锁定匹配工具。本期聚焦App质量监控领域&a…...

Gemini api网络超时问题求助

用codex连接的gemini api&#xff0c;没想到一用就超时&#xff0c;是梯子问题吗&#xff1f;以及上面这些models哪个更能全面解决coding问题&#xff0c;也很少出错...

轻量级跨平台C++ GUI框架EUI在Ubuntu24上初试

EUI详见以下页面&#xff1a; https://github.com/sudoevolve/EUI 1 在Ubuntu24.04上部署需要做的准备工作 1.1 从Github拉源码 git clone https://github.com/sudoevolve/EUI.git1.2 为EUI准备所需的库 以为我的Ubuntu24.04装的是毛坯系统&#xff0c;一开始用cmake构建的…...

智能车浅谈——控制规律篇

文章目录前言计算机控制系统常用控制规律PID控制比例&#xff08;P&#xff09;控制器比例积分&#xff08;PI&#xff09;控制器比例积分微分(PID)控制位置式PID增量式PID数字PID控制算法的改进PID参数整定小结串级控制模糊控制智能车系列文章汇总前言 之前已经记录了一些有关…...

BthPS3驱动:突破Windows壁垒,让PS3控制器焕发新生

BthPS3驱动&#xff1a;突破Windows壁垒&#xff0c;让PS3控制器焕发新生 【免费下载链接】BthPS3 Windows kernel-mode Bluetooth Profile & Filter Drivers for PS3 peripherals 项目地址: https://gitcode.com/gh_mirrors/bt/BthPS3 当PS3控制器遇上Windows&…...

不做产品,只做 Token 中转——卖 Token 到底怎么赚钱

&#x1f4a1; 本文是「小龙虾搞钱指南」系列第 4 篇。前两篇拆了 Polymarket 交易 Bot 和 Skill 经济变现 以及用 ai 实现股票快速跟踪&#xff0c;这篇聊一个更底层的生意——帮别人调 AI 的"中间商"&#xff0c;是怎么赚到钱的。有个平台叫 OpenRouter。它不需要花…...

Snap.Hutao:5分钟掌握原神玩家必备的终极桌面工具箱

Snap.Hutao&#xff1a;5分钟掌握原神玩家必备的终极桌面工具箱 【免费下载链接】Snap.Hutao 实用的开源多功能原神工具箱 &#x1f9f0; / Multifunctional Open-Source Genshin Impact Toolkit &#x1f9f0; 项目地址: https://gitcode.com/GitHub_Trending/sn/Snap.Hutao…...

多语言提示词设计:中文语境下的提示工程终极指南

多语言提示词设计&#xff1a;中文语境下的提示工程终极指南 【免费下载链接】courses Anthropics educational courses 项目地址: https://gitcode.com/GitHub_Trending/cours/courses 在全球化AI应用时代&#xff0c;多语言提示词设计已成为开发者必备技能。GitHub推荐…...