iOS 15 无法弹出授权弹框之解决方案---Your app uses the AppTrackingTransparency framework, but we are unable to locate the App Tracking Transparency permission request when reviewed on iOS 15.0
2021年9月30日下午:我正愉快的期盼着即将到来的国庆假期,时不时刷新下appstoreconnect的网址,28号就提上去的包,今天还在审核中。。。。由于这个版本刚升级的xcode系统和新出的iOS 15系统,就怕出现什么幺蛾子导致项目被拒,在国庆节假期中被拒的话,那真的是一件闻者伤心听者落泪的事儿。。。。
所以盼望着能在我下班之前出审核结果,结果到了下午4点还没出结果,想着求人不如求己,拿着iOS 15系统的测试机重新安装了提审包,安装完起先没太注意是否允许追踪广告的弹框没弹出来,主要也是我们项目启动后弹出的东西太多了,玩了几把游戏后,发现了一个无关痛痒的小bug,就想追溯下是什么原因导致的,结果发现加了白名单日志的设备打不开日志了。。。以为是测试机被谁重新置换了idfa,结果发现隐私-追踪开启的情况下,列表中没有我们的项目,这才发现刚才下载后启动好像没有弹出是否允许追踪的弹框。立马卸载重新安装验证,发现果然没有,拿了iOS 14系统的测试机安装,发现正常出来;以为是当时开发只对iOS 14系统做了判断,没有对14以上系统做兼容;立马打开项目查看代码(由于之前做过iOS开发,所以公司项目都是我自己打包上传,也有源代码),发现代码没问题呀,确实是对14及14系统以上做的兼容。
if (@available(iOS 14, *)) {
// iOS14及以上版本需要先请求权限
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
// 获取到权限后,依然使用老方法获取idfa
switch (status) {
case ATTrackingManagerAuthorizationStatusNotDetermined:
NSLog(@"申请tracking权限,用户为做选择或未弹窗");
break;
case ATTrackingManagerAuthorizationStatusRestricted:
NSLog(@"申请tracking权限,用户为做选择或未弹窗");
break;
case ATTrackingManagerAuthorizationStatusDenied:
NSLog(@"申请tracking权限,用户拒绝");
break;
case ATTrackingManagerAuthorizationStatusAuthorized:
NSString *idfa = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];
NSLog(@"用户允许广告追踪, idfa:%@",idfa);
break;
}
}];
}
else
{
// iOS14以下版本依然使用老方法
// 判断在设置-隐私里用户是否打开了广告跟踪
if ([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) {
NSString *idfa = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];
NSLog(@"用户允许广告追踪 idfa:%@",idfa);
} else {
NSLog(@"用户限制了广告追踪");
}
}
这就奇怪了,难道是iOS 15系统的问题?脑中瞬间冒出此种想法,开始去论坛扒拉信息,结果果然发现不止我们遇到了这个问题,好多同行有同样的问题,解决方法也很容易,只要将请求权限的方法的调用从didFinishLaunchingWithOptions中移动到applicationDidBecomeActive里就可以了。重新编译后发现iOS 15系统能正常调起权限弹框了。
为了度过一个完美的假期,立马先打包,打包过程中同步策划和开发同学这个问题,协商后想着我们的提审已经等待两天了,替换包后会不会重新排队审核,先做个备用方案,先传AppStore上面;如果因为这个原因被拒后,可以立即提审改过后的版本。
终于在下班前搞定上传到App Store了,开开心心的背着电脑下班回家。
晚上8点半左右收到了审核被拒的邮件。。。。
Guideline 2.1 - Information Needed
We're looking forward to completing our review, but we need more information to continue. Your app uses the AppTrackingTransparency framework, but we are unable to locate the App Tracking Transparency permission request when reviewed on iOS 15.0.
果然因为这个原因被拒了,重新提交准备好的新版本,完美!!!
iOS 15 无法弹出授权弹框之解决方案---Your app uses the AppTrackingTransparency framework, but we are unable to locate the App Tracking Transparency permission request when reviewed on iOS 15.0的更多相关文章
- ***小程序wx.getUserInfo不能弹出授权窗口后的解决方案
微信更新api后,wx.getUserInfo在开发和体验版本都不能弹出授权窗口.微信文档说明: 注意:此接口有调整,使用该接口将不再出现授权弹窗,请使用 <button open-type=& ...
- 解决PL/SQL Dev连接Oracle弹出空白提示框
第一次安装Oracle,装在虚拟机中,用PL/SQL Dev连接远程数据库的时候老是弹出空白提示框,网上找了很久,解决方法也很多,可是就是没法解决我这种情况的. 没办法,只能自己研究,经过大概一天时间 ...
- java 弹出选择目录框(选择文件夹),获取选择的文件夹路径
java 弹出选择目录框(选择文件夹),获取选择的文件夹路径 java 弹出选择目录框(选择文件夹),获取选择的文件夹路径:int result = 0;File file = null;String ...
- PL/SQL Dev连接Oracle弹出空白提示框的解决方法分享
第一次安装Oracle,装在虚拟机中,用PL/SQL Dev连接远程数据库的时候老是弹出空白提示框,网上找了很久,解决方法也很多,可是就是没法解决我这种情况的. 出现这种问题,解决方法大概有这几种: ...
- [UWP]在应用退出时弹出确认提示框
1. 需求 在应用退出时(点击右上角的关闭按钮)弹出一个确认按钮可以说是一个最常见的操作了,例如记事本的"你是否保存": 但这个功能在UWP上居然有点小复杂.这篇文章将解释如何实现 ...
- 弹出JS提示框
弹出JS提示框Page.ClientScript.RegisterStartupScript(typeof(string), "msg", "<script> ...
- javascript的alert()的消息框不弹出或者弹出信息有误
有时不知道什么,有时javascript的alert()的消息框不弹出或者弹出信息有误,代码是这么写的: //提示信息 public static void alert(TemplateControl ...
- Asp.Net下载页面,并弹出下载提示框
Asp.Net下载页面,并弹出下载提示框.在删除按钮里调用以下方法.
- PropertyGrid—为复杂属性提供下拉式编辑框和弹出式编辑框
零.引言 PropertyGrid中我们经常看到一些下拉式的编辑方式(Color属性)和弹出式编辑框(字体),这些都是为一些复杂的属性提供的编辑方式,本文主要说明如何实现这样的编辑方式. 一.为属性提 ...
随机推荐
- Spring详解(四)------注解配置DI
第一步:在 applicationContext.xml 中引入命名空间 这里我们简单讲解一下这里引入的命名空间,简单来说就是用来约束xml文件格式的.第一个 xmlns:context ,这表示标签 ...
- Verilog实例数组
编写 Verilog 代码多年,至今才无意中发现了一种奇怪的语法,估计见过的这种的写法的人,在 FPGA 开发者中不会超过 20% 吧. 直接来看代码吧.先定义了一个简单的模块,名为 mod. mod ...
- 【C语言】第5章 循环结构程序设计
第5章 循环结构程序设计 三种基本循环控制结构 使用while语句实现循环 先判断条件表达式,后执行循环体语句 while (循环条件表达式) { 循环体 } 用do-while语句实现循环 先无条件 ...
- Java线程池工作原理
前言 当项目中有频繁创建线程的场景时,往往会用到线程池来提高效率.所以,线程池在项目开发过程中的出场率是很高的. 那线程池是怎么工作的呢?它什么时候创建线程对象,如何保证线程安全... 什么时候创建线 ...
- centos7 Tomcat 多项目配置
2021-07-30 1. Tomcat 各目录功能说明 bin :脚本文件目录,存放启动和关闭 Tomcat 的脚本文件conf:存放 Tomcat 的配置文件,server.xml 尤其重要log ...
- 新来的前端小姐姐问:Vue路由history模式刷新页面出现404问题
摘要:vue-router 默认 hash 模式 -- 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载. 本文分享自华为云社区<学习Vue Rou ...
- uboot命令简介
uboot下的命令行 1.典型嵌入式linux系统启动过程: 嵌入式系统上电后先执行uboot.然后uboot负责初始化DDR,初始化Flash,然后将OS从Flash中读取到DDR中,然后启动OS( ...
- HCNP Routing&Switching之IS-IS邻居建立、LSDB同步、拓扑计算和路由形成
前文我们了解了IS-IS的报文结构和类型相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15260670.html:今天我们来聊一聊IS-IS建立邻居. ...
- 从零开始学习SQL SERVER(2)--- 基本操作及语句
声明:仅为本人随笔及经验之谈,有错误敬请指出. # 后的文字为注释 Microsoft SQL Server Management Studio 中的SQL命令 添加数据库 1 CREATE DATA ...
- 【转】.net core开发windows服务
.net core开发windows服务 文建Blog