在AdMob中启用“ debugGeography”时出现“找不到发布者标识符”错误

时间:2019-11-10 03:11:26

标签: ios swift admob

我正在尝试测试GDPR合规性代码并尝试显示AdMob的同意书,但出现此错误:

  

同意信息更新失败。错误:错误域=同意代码= 1   “响应错误。找不到发布者标识符:ca-app-pub-0123456789012345”

我已三重检查,我的PublisherID是正确的,类似于“ pub-0123456789012345”。

当我查看AdMob帐户状态时,会看到

  

“您的帐户有效且信誉良好。”

我已经遵循Google的directions来接受用户对个性化广告的同意。我在美国,所以请使用此行:

PACConsentInformation.sharedInstance.debugGeography = .EEA

当我禁用此行时,不再显示上面的错误,而是下面的错误:

  

错误加载表单:错误:请求不在EEA中或未知。

我尝试改用此行,但未更改:

PACConsentInformation.sharedInstance.debugGeography = PACDebugGeography.EEA

我唯一的猜测是 ,原因是我的AdMob帐户位于美国,因此启用“ .EEA”时出现“找不到发布者ID”错误。但是,如果我的猜测是正确的,我该如何进行测试?

我正在模拟器和手机上进行测试。我无法在任何地方显示同意书。

我正在使用的代码如下:

    // advertiseIDOfPhone and publisherID are constants defined elsewhere

    PACConsentInformation.sharedInstance.debugIdentifiers = [advertiseIDOfPhone]
    PACConsentInformation.sharedInstance.debugGeography = .EEA

    PACConsentInformation.sharedInstance.requestConsentInfoUpdate(forPublisherIdentifiers: [publisherID])
    {(_ error: Error?) -> Void in
      if let error = error {
        // Consent info update failed.
        print("☢️ Consent info update failed. Error: \(error)")
      } else {
        print("☢️ Consent info updated.")
        // Consent info update succeeded. The shared PACConsentInformation
        // instance has been updated.
        switch PACConsentInformation.sharedInstance.consentStatus {
        case .nonPersonalized:
            print("☢️ Personalized ads consent NOT given.")
        case .personalized:
            print("☢️ Personalized ads consent given.")
        case .unknown:
            print("☢️ Unknown consent.")
            guard let privacyUrl = URL(string: "yourWebsiteURL"),
                let form = PACConsentForm(applicationPrivacyPolicyURL: privacyUrl) else {
                    print("incorrect privacy URL.")
                    return
            }
            form.shouldOfferPersonalizedAds = true
            form.shouldOfferNonPersonalizedAds = true
            form.shouldOfferAdFree = true
            form.load {(_ error: Error?) -> Void in
                print("⚛️ Load complete.")
                if let error = error {
                    // Handle error.
                    print("⚛️ Error loading form: \(error.localizedDescription)")
                } else {

                    form.present(from: self) { (error, userPrefersAdFree) in

                        if error != nil {
                            // Handle error.
                        } else if userPrefersAdFree {
                            // User prefers to use a paid version of the app.


                            //buy the pro Version
                        }
                    }
                }
            }
        default:
            break
        }
        print("☢️ isRequestLocationInEEAOrUnknown: \(PACConsentInformation.sharedInstance.isRequestLocationInEEAOrUnknown)")
        }
      }

我的错误在哪里?我使用的代码好吗?

3 个答案:

答案 0 :(得分:1)

在解决某个问题时,您可以使用Google Test Publisher ID:

pub-3940256099942544

我的帐户给我错误,但是我可以使用测试ID来实施和测试Consent SDK。只需在分发应用之前确保切换回ID即可。

答案 1 :(得分:0)

这似乎是一个known错误:

  

请注意,我们已经知道此问题,我们的工程团队   已经在制定解决方案。放心,我们一直在   注意这一点,我们将为您更新有关以下方面的任何新闻   这个问题。

     

关于Ziv Yves Sanchez移动广告SDK团队

我没想到Google会在大型产品的这种基本方面产生错误,但是不幸的是,我花了数小时研究这个问题,试图在某个地方找到我的错误...

答案 2 :(得分:0)

我也有同样的问题。
直到我在 https://fundingchoices.google.com 更新了我的设置。
进入网页,在左侧选择APP,进入并激活您正在使用的应用。