iOS上架审核之IDFA以及审核被拒问题
We’re looking forward to completing our review, but we need more information to continue. Your app uses the AppTrackingTransparency framework, but we are still unable to locate the App Tracking Transparency permission request when reviewed on iOS 15.0.
我们期待着完成我们的审查,但我们需要更多信息来继续。您的应用程序使用AppTrackingTransparency框架,但在iOS 15.0上查看时,我们仍然无法找到app Tracking Transparency权限请求。
原因:离你使用了AppTrackingTransparency框架,需要弹出权限框
修改info.plist文件
添加以下key和value
<key>NSUserTrackingUsageDescription</key>
<string>此标识符将用于向您推荐个性化广告。</string>
重要!!!内容尽量完善,例如,我们使用第三方的框架需要追踪使用情况,例如:崩溃统计分析,推送统计分析,我们不追踪用户活动。
新建一个WMPermissionRequest.swift文件
import UIKit
import AppTrackingTransparency
class WMPermissionRequest: NSObject {
static func requestIDFAPermission() {
if #available(iOS 14, *) {
#if DEBUG
print("IDFA status = \(ATTrackingManager.trackingAuthorizationStatus)")
#endif
let status = ATTrackingManager.trackingAuthorizationStatus
switch status {
case .notDetermined:
ATTrackingManager.requestTrackingAuthorization { status in
switch status {
case .authorized:
print("Authorized")
print(ASIdentifierManager.shared().advertisingIdentifier)
case .denied:
print("Denied")
case .notDetermined:
print("Not Determined")
case .restricted:
print("Restricted")
@unknown default:
print("Unknown")
}
}
default:
print("default")
}
}
}
private static let locationAuthManager = CLLocationManager()
static func authLocation(clouser: @escaping ((Bool,Bool)->())) {
let authStatus = CLLocationManager.authorizationStatus()
switch authStatus {
case .notDetermined:
WMPermissionRequest.locationAuthManager.requestAlwaysAuthorization()
WMPermissionRequest.locationAuthManager.requestWhenInUseAuthorization()
let status = CLLocationManager.authorizationStatus()
if status == .authorizedAlways || status == .authorizedWhenInUse {
DispatchQueue.main.async {
clouser(true && CLLocationManager.locationServicesEnabled(), true)
}
}else{
DispatchQueue.main.async {
clouser(false, true)
}
}
case .restricted:
clouser(false, false)
case .denied:
clouser(false, false)
case .authorizedAlways:
clouser(true && CLLocationManager.locationServicesEnabled(), false)
case .authorizedWhenInUse:
clouser(true && CLLocationManager.locationServicesEnabled(), false)
@unknown default:
clouser(false, false)
}
}
}
在AppDelegate使用
func applicationDidBecomeActive(_ application: UIApplication) {
WMPermissionRequest.requestIDFAPermission()
}
上述代码写在didFinishLaunchingWithOptions中。
但是从iOS15开始,需要转移到applicationDidBecomeActive中。
在主界面或者第一个展示页面的viewDidAppear调用。
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
WMPermissionRequest.requestIDFAPermission()
}
在 App Store Connect 中设置好App隐私的标识符用于追踪目的即可
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)