我正在尝试在 Swift 中使用“跟踪透明度”和“欧盟同意”来实施 Admob。
我的应用适用于 iOS 14.0+ 设备,因此我按照https://developers.google.com/admob/ios/ios14上的说明进行操作。为了遵守欧盟对 GDPR 的同意,我实施了https://developers.google.com/admob/ump/ios/quick-start中的说明(这是欧盟同意的当前实施,而不是旧实施。)。
之后,第一次启动应用程序后会显示“跨设备跟踪用户”对话框。之后,将显示欧盟同意对话框。一切正常。
我的问题是,我的实施是否有效,以便在 Google 初始化 Admob 时,它会通过跟踪透明度和欧盟同意设置尊重用户的偏好?
这是我的代码:
import SwiftUI
import GoogleMobileAds
import AppTrackingTransparency
import UserMessagingPlatform
@main
struct SampleAdmobWithEuConsent: App {
init() {
requestIDFA()
}
var body: some Scene {
WindowGroup {
ContentView()
}
}
private func initGoogleMobileAds() {
GADMobileAds.sharedInstance()
.start(completionHandler: nil)
}
private func requestIDFA() {
ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in
// Tracking authorization completed. Start loading ads here.
showConsentInformation()
})
}
private func showConsentInformation() {
let parameters = UMPRequestParameters()
// false means users are not under age.
parameters.tagForUnderAgeOfConsent = false
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(
with: parameters,
completionHandler: { error in
if error != nil {
// Handle the error.
} else {
// The consent information state was updated.
// You are now ready to check if a form is
// available.
loadForm()
}
})
}
func loadForm() {
UMPConsentForm.load(
completionHandler: { form, loadError in
if loadError != nil {
// Handle the error
} else {
// Present the form
if UMPConsentInformation.sharedInstance.consentStatus == UMPConsentStatus.required {
form?.present(from: UIApplication.shared.windows.first!.rootViewController! as UIViewController, completionHandler: { dimissError in
if UMPConsentInformation.sharedInstance.consentStatus == UMPConsentStatus.obtained {
// App can start requesting ads.
initGoogleMobileAds()
}
})
}
}
})
}
}
我在 GADMobileAds.sharedInstance() 中找不到根据对话框中用户的偏好设置指定设置的方法。(例如:跨应用跟踪我或向我展示个性化广告)。
提前致谢!