我不知道我是否可以在 iOS 上的 UI 测试中使用此功能,但我尝试了一下,但遇到了问题。
在我的 UI 测试中,我可以选择允许跟踪我的应用程序,也可以拒绝跟踪,但在完成所有这些操作后,我希望通过以下方式查看状态 IDFAATTrackingManager.AuthorizationStatus
,但是这个方法总是返回notDetermined
。如果我转到“设置”>“隐私”>“跟踪”,我会看到设置已正确应用(“允许应用请求跟踪”开关已打开,并且我的应用程序处于正确状态(打开或关闭))。
我不知道为什么我收到错误的 AuthorizationStatus。
这是我的 XCTestCase 中的代码:
import AppTrackingTransparency
enum TrackingStatus {
case authorized
case denied
case notDetermined
}
func map(_ status: ATTrackingManager.AuthorizationStatus) -> TrackingStatus {
switch ATTrackingManager.trackingAuthorizationStatus {
case .notDetermined:
return .notDetermined
case .authorized:
return .authorized
default:
return .denied
}
}
func advertisingTrackingStatusCheckout(status: TrackingStatus) {
print("IDFA status: \(ATTrackingManager.trackingAuthorizationStatus)")
var currentTrackingStatus: TrackingStatus {
return map(ATTrackingManager.trackingAuthorizationStatus)
}
guard currentTrackingStatus == status else {
XCTFail("IDFA status: \(currentTrackingStatus), expected: \(status)")
return
}
}
在我的 UI 测试中设置 IDFA 状态后,我调用此方法,例如。advertisingTrackingStatusCheckout(status: TrackingStatus.denied)
但它总会回归notDetermined
.
它的行为只有一个例外:如果我手动将开关“允许应用程序请求跟踪”设置为关闭状态,则调用ATTrackingManager.trackingAuthorizationStatus
将返回denied
.
删除应用程序,并延迟调用 sceneDidBecomeActive 中的函数。因此,一旦您的应用程序激活,它就会显示。我面临着同样的问题,现在已经解决了。像这样
func sceneDidBecomeActive(_ scene: UIScene) {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
self.requestPermission()
}
}
func requestPermission() {
if #available(iOS 14, *) {
ATTrackingManager.requestTrackingAuthorization { status in
switch status {
case .authorized:
// Tracking authorization dialog was shown
// and we are authorized
print("Authorized Tracking Permission")
// Now that we are authorized we can get the IDFA
case .denied:
// Tracking authorization dialog was
// shown and permission is denied
print("Denied Tracking Permission")
case .notDetermined:
// Tracking authorization dialog has not been shown
print("Not Determined Tracking Permission")
case .restricted:
print("Restricted Tracking Permission")
@unknown default:
print("Unknown Tracking Permission")
}
}
} else {
// Fallback on earlier versions
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)