iOS15中ATT授权弹窗不显示问题原因分析及解决方案

如题所述

第1个回答  2024-09-05
背景

刚开发完一个迭代,千辛万苦实现了产品需求和设计的交互。然而再最后审核的时候被拒了。按理说审核被拒的理由再千奇百怪,Google一圈下来应该有答案,然而并没有。怎么办呢?

拒绝理由

Guideline2.1-InformationNeeded

We'relookingforwardtocompletingourreview,butweneedmoreinformationtocontinue.YourappusestheAppTrackingTransparencyframework,butweareunabletolocatetheAppTrackingTransparencypermissionrequestwhenreviewedoniOS15.0.

看到这个oniOS15.0就知道苹果又要整什么幺蛾子了,明明iOS14都没问题的。

Google中...

找着找着找到了官方文档...

官方解释

大致意思:调用这个APIrequestTrackingAuthorization必须是在App在前台活跃的前提下。

解决办法

分析:

对于这种权限请求,通常情况下是写在了AppDelegate的didFinishLaunchingWithOptions中,但明显已经不符合官方的要求了,App还没有到Active的状态。

解决方式:

AppDelegate:

funcapplicationDidBecomeActive(_application:UIApplication){if#available(iOS14.0,*){ATTrackingManager.requestTrackingAuthorization{(status:ATTrackingManager.AuthorizationStatus)in//...}}}

补充一点,因为的项目里面还用到了SceneDelegate,那么iOS13之后AppDelegate是不执行了的,所以改成在SceneDelegate的sceneDidBecomeActive方法中做权限请求。同时增加了1秒的延迟,避免和其他的权限弹窗冲突不显示的问题。

funcsceneDidBecomeActive(_scene:UIScene){DispatchQueue.global().asyncAfter(deadline:.now()+1){ATTrackingManager.requestTrackingAuthorization{(status:ATTrackingManager.AuthorizationStatus)in//...}}}

结语:

由于iOS15刚出没多久,Google资料特别少,StackOverflow上一哥们也只发现了问题,底下没人回复,所以解决这个问题的确花费了一些时间。特地记录下自己踩过的坑。希望也能给他人避避坑。

如果有更好的解决办法,欢迎提出,共同进步!

logo设计

创造品牌价值

¥500元起

APP开发

量身定制,源码交付

¥2000元起

商标注册

一个好品牌从商标开始

¥1480元起

公司注册

注册公司全程代办

¥0元起

    官方电话官方服务
      官方网站八戒财税知识产权八戒服务商企业需求数字市场

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网