Как устранить эту ошибку при использовании AdMob AppOpenAds? Ошибка: Код: 1

#admob

#admob

Вопрос:

Я получаю эту ошибку при реализации Google AdMob AppOpenAds. Я использую идентификатор эмулятора Android в качестве тестового устройства, а также использую Google test ad unit для AppOpenAd. Я пробовал tetsing на физическом устройстве, а также на эмуляторе. Я использую свой собственный AdMob app-id и целевой SDK 30.

Это сообщение об ошибке в консоли отладки.

 D/AppOpenManager: {
      "Code": 1,
      "Message": "Error building request URL.",
      "Domain": "com.google.android.gms.ads",
      "Cause": "null",
      "Response Info": {
        "Response ID": "null",
        "Mediation Adapter Class Name": "",
        "Adapter Responses": []
      }
    }
 

Я следил за документацией, доступной на https://developers.google.com/ad-manager/mobile-ads-sdk/android/app-open-ads

Вот мой полный код:

     /** Request an ad */
    public void fetchAd() {
        // Have unused ad, no need to fetch another.
        if (isAdAvailable()) {
            return;
        }

        loadCallback =
                new AppOpenAd.AppOpenAdLoadCallback() {
                    /**
                     * Called when an app open ad has loaded.
                     *
                     * @param ad the loaded app open ad.
                     */
                    @Override
                    public void onAppOpenAdLoaded(AppOpenAd ad) {
                        AppOpenManager.this.appOpenAd = ad;
                        AppOpenManager.this.loadTime = (new Date()).getTime();
                    }

                    /**
                     * Called when an app open ad has failed to load.
                     *
                     * @param loadAdError the error.
                     */
                    @Override
                    public void onAppOpenAdFailedToLoad(LoadAdError loadAdError) {
                        Log.d(LOG_TAG, loadAdError.toString());
                        Log.d(LOG_TAG, "AppOpen ad failed to load");
                    }

                };
        AdRequest request = getAdRequest();
        AppOpenAd.load(
                myApplication,
                String.valueOf(R.string.app_open_ad_unit_id),
                request,
                AppOpenAd.APP_OPEN_AD_ORIENTATION_PORTRAIT,
                loadCallback);
    }

    /** Creates and returns ad request. */
    private AdRequest getAdRequest() {

        /** Add test devices here*/

        List<String> testDeviceIds = Arrays.asList(AdRequest.DEVICE_ID_EMULATOR);
        RequestConfiguration configuration =
                new RequestConfiguration.Builder().setTestDeviceIds(testDeviceIds).build();
        MobileAds.setRequestConfiguration(configuration);

        return new AdRequest.Builder().build();
    }

    /** Utility method to check if ad was loaded more than n hours ago. */
    private boolean wasLoadTimeLessThanNHoursAgo(long numHours) {
        long dateDifference = (new Date()).getTime() - this.loadTime;
        long numMilliSecondsPerHour = 3600000;
        return (dateDifference < (numMilliSecondsPerHour * numHours));
    }


    /** Utility method that checks if ad exists and can be shown. */
    public boolean isAdAvailable() {
        return appOpenAd != null amp;amp; wasLoadTimeLessThanNHoursAgo(4);

    }
    /** Shows the ad if one isn't already showing. */
    public void showAdIfAvailable() {
        // Only show ad if there is not already an app open ad currently showing
        // and an ad is available.
        if (!isShowingAd amp;amp; isAdAvailable()) {
            Log.d(LOG_TAG, "Will show ad.");

            FullScreenContentCallback fullScreenContentCallback =
                    new FullScreenContentCallback() {
                        @Override
                        public void onAdDismissedFullScreenContent() {
                            // Set the reference to null so isAdAvailable() returns false.
                            AppOpenManager.this.appOpenAd = null;
                            isShowingAd = false;
                            fetchAd();
                        }

                        @Override
                        public void onAdFailedToShowFullScreenContent(AdError adError) {
                            Log.d(LOG_TAG, "Ad Failed To Show FullScreen Content");
                        }

                        @Override
                        public void onAdShowedFullScreenContent() {
                            isShowingAd = true;
                        }
                    };

            appOpenAd.show(currentActivity, fullScreenContentCallback);

        } else {
            Log.d(LOG_TAG, "Can not show ad.");
            fetchAd();
        }
    }
 

Ответ №1:

у меня такая же ошибка, но у меня была ошибка, я добавил идентификатор приложения в ads: AdUnitId здесь

 <com.google.android.gms.ads.AdView xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:id="@ id/adView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    ads:adSize="SMART_BANNER"
    ads:adUnitId="XXX"
    ads:layout_constraintBottom_toBottomOf="parent" />
 

вместо unitid
и проблема решена

Комментарии:

1. Для меня это не было неправильным размещением AdUnitId.