无法在原生广告中加载广告0

时间:2016-10-19 13:27:06

标签: android admob

我正在使用原生的Admob广告用于Android应用,但每次我都会收到     Failed to load ad : 0     当我使用addTestDevice(deviceId)工作正常。

我的代码:

private void refreshAd(boolean requestAppInstallAds, boolean requestContentAds, final LinearLayout mLayout) {
        AdLoader adLoader = new AdLoader.Builder(mContext, Config.ADMOB_AD_UNIT_ID)
                .forAppInstallAd(new NativeAppInstallAd.OnAppInstallAdLoadedListener() {
                    @Override
                    public void onAppInstallAdLoaded(NativeAppInstallAd appInstallAd) {
                        // Show the app install ad.
                        NativeAppInstallAdView adView = (NativeAppInstallAdView) ((AppCompatActivity) mContext).getLayoutInflater()
                                .inflate(R.layout.ad_app_install, null);
                        populateAppInstallAdView(appInstallAd, adView);
                        mLayout.removeAllViews();
                        mLayout.addView(adView);
                    }
                })
                .forContentAd(new NativeContentAd.OnContentAdLoadedListener() {
                    @Override
                    public void onContentAdLoaded(NativeContentAd contentAd) {
                        // Show the content ad.
                    }
                })
                .withAdListener(new AdListener() {
                    @Override
                    public void onAdFailedToLoad(int errorCode) {
                        // Handle the failure by logging, altering the UI, etc.
                        Log.d("Opennaukri","errorCode = "+errorCode);
                    }
                })
                .withNativeAdOptions(new NativeAdOptions.Builder()
                        // Methods in the NativeAdOptions.Builder class can be
                        // used here to specify individual options settings.
                        .build())
                .build();

        adLoader.loadAd(new AdRequest.Builder().build());

//                .addTestDevice("E9990FA9258AD0601F492495AC3F15EB").build());
//                // Check the LogCat to get your test device ID
//                .addTestDevice("B7BEE8B7CDBAC269CBB598F9DB6C4769")
//                 Check the LogCat to get your test device ID

    }

    private void populateAppInstallAdView(NativeAppInstallAd nativeAppInstallAd,
                                          NativeAppInstallAdView adView) {
        adView.setHeadlineView(adView.findViewById(R.id.appinstall_headline));
//        adView.setImageView(adView.findViewById(R.id.appinstall_image));
        adView.setBodyView(adView.findViewById(R.id.appinstall_body));
        adView.setCallToActionView(adView.findViewById(R.id.appinstall_call_to_action));
        adView.setIconView(adView.findViewById(R.id.appinstall_app_icon));
        adView.setPriceView(adView.findViewById(R.id.appinstall_price));
        adView.setStarRatingView(adView.findViewById(R.id.appinstall_stars));
        adView.setStoreView(adView.findViewById(R.id.appinstall_store));

        // Some assets are guaranteed to be in every NativeAppInstallAd.
        ((TextView) adView.getHeadlineView()).setText(nativeAppInstallAd.getHeadline());
        ((TextView) adView.getBodyView()).setText(nativeAppInstallAd.getBody());
        ((TextView) adView.getCallToActionView()).setText(nativeAppInstallAd.getCallToAction());
        ((ImageView) adView.getIconView()).setImageDrawable(nativeAppInstallAd.getIcon()
                .getDrawable());


        // Some aren't guaranteed, however, and should be checked.
        if (nativeAppInstallAd.getPrice() == null) {
            adView.getPriceView().setVisibility(View.INVISIBLE);
        } else {
            adView.getPriceView().setVisibility(View.VISIBLE);
            ((TextView) adView.getPriceView()).setText(nativeAppInstallAd.getPrice());
        }

        if (nativeAppInstallAd.getStore() == null) {
            adView.getStoreView().setVisibility(View.INVISIBLE);
        } else {
            adView.getStoreView().setVisibility(View.VISIBLE);
            ((TextView) adView.getStoreView()).setText(nativeAppInstallAd.getStore());
        }

        if (nativeAppInstallAd.getStarRating() == null) {
            adView.getStarRatingView().setVisibility(View.INVISIBLE);
        } else {
            ((RatingBar) adView.getStarRatingView())
                    .setRating(nativeAppInstallAd.getStarRating().floatValue());
            adView.getStarRatingView().setVisibility(View.VISIBLE);
        }

        // Assign native ad object to the native view.
        adView.setNativeAd(nativeAppInstallAd);
    }

2 个答案:

答案 0 :(得分:0)

在您的应用中查看广告的步骤:

1)在清单文件中添加互联网权限

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

2)在Gradle文件中,在依赖项

中插入此行
compile 'com.google.android.gms:play-services-ads:7.5.0'

3)现在我们需要显示add,所以我们在布局中添加这几行 anyLayout xmlns:android ...  xmlns:ads =“http://schemas.android.com/apk/res-auto” ...

<com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        ads:adSize="BANNER"
        ads:adUnitId="ca-app-pub-xxxxxxxxxxxxxxx/xxxxxxxxx.">
    </com.google.android.gms.ads.AdView>

4)最后我们需要在布局中加载广告,这只需要3行:

AdView mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);

如果您从模拟器运行应用程序或者检查布局编辑器(在android studio中),您将看到广告的外观。如果布局编辑器中的所有内容都正确,您将看到带有“google”广告(或类似内容)的白色横幅,如果您在模拟器中运行应用,则会显示虚拟横幅。

一旦您构建了apk(已签名或未签名)并将其安装在设备上,您将看不到任何广告,因为Google admob需要一段时间才能注册新应用以投放广告以及广告何时开始显示( &LT; 12H)

希望这有帮助!

答案 1 :(得分:0)

我使用以下代码取得了成功:

private LinearLayout mAdContainer;
private NativeExpressAdView mAdmobAdView;
private AdRequest mAdmobAdRequest;

[...]

private void loadAds() {
    // find out the width of the device in dp
    DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
    float deviceWidthInDp = displayMetrics.widthPixels / displayMetrics.density;

    int adWidth = (int)(deviceWidthInDp);

    mAdContainer.removeAllViews();
    mAdmobAdView = new NativeExpressAdView(this);
    mAdmobAdView.setAdSize(new AdSize(adWidth, 250)); // AdSize(width, height), height ranges from 80 to 1200
    mAdContainer.addView(mAdmobAdView);
    mAdmobAdView.setAdUnitId(getString(R.string.admob_id)); // set your admob id
    mAdmobAdRequest = new AdRequest.Builder()
            .build();
    mAdmobAdView.loadAd(mAdmobAdRequest);
}