1

我正在尝试使用UserMessagingPlatform来请求跟踪许可和欧盟 GDPR 同意。它要求在模拟器上运行时进行跟踪,但未显示欧盟同意对话框。怎么了?我在 AdMob 的资金选择中创建了这两个选项。

这是在 iOS 和 Swift 上。

    private func requestIDFA() {
        if #available(iOS 14, *) {
            ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in
                // Tracking authorization completed. Start loading ads here.
                self.showConsentInformation()
            })
        } else {
            // Fallback on earlier versions
        }
    }

  private func showConsentInformation() {
            let parameters = UMPRequestParameters()
            
            // false means users are not under age.
            parameters.tagForUnderAgeOfConsent = false
            let debugSettings = UMPDebugSettings()
            debugSettings.geography = UMPDebugGeography.EEA
            parameters.debugSettings = debugSettings

            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.
                        let formStatus = UMPConsentInformation.sharedInstance.formStatus
                        if formStatus == UMPFormStatus.available {
                            self.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()
                            }
                        })
                    }
                }
            })
        }
4

1 回答 1

0

我认为 AdMob 可能将模拟器视为一种特殊情况。这就是谷歌所说的:

模拟器不需要添加到设备 ID 列表中,因为它们默认启用了测试。

也许尝试使用强制地理部分下解释调试代码来调整它是有意义的

我遇到了另一个奇怪的问题:我位于欧盟以外的测试 iPhone 在全新安装的初始运行中始终显示 GDPR 表格,因为 UMP 以某种方式不断将许可状态返回为“必需”。我希望它返回“notRequired”,但它没有发生。AdMob 似乎没有在检测我的 iPhone 是否在欧盟。

于 2022-02-20T20:03:23.960 回答