在 ViewPager 中的何处放置 AdMob 插页式广告

Where to place AdMob interstitial ad in ViewPager

我在 google play 中发布了一个应用程序,里面有广告,几天前我从 google Admob 收到了以下电子邮件。

我们提醒您,您的应用目前违反了 AdMob 计划政策。重要的是,这需要您采取行动以确保广告投放不会中断。请阅读以下内容,了解有关您需要采取的行动的更多信息:

布局会导致意外点击 - 插页式广告: 发布商不得以任何方式鼓励用户点击 AdMob 插页式广告。这包括可能鼓励意外点击的任何实施,例如以阻止查看应用核心内容的方式放置插页式广告,或以干扰导航或与应用的核心内容和功能交互的方式放置插页式广告。

请检查您是如何实施插页式广告的,并注意以下不合规实施的常见示例:

在应用程序打开之前或应用程序关闭之后出现的插页式广告。 在用户关闭另一个插页式广告后触发的插页式广告。 用户正在查看应用内容时,插页式广告意外加载。请记住仅在内容页面之间提供插页式广告。 每次用户点击后触发的插页式广告。 在玩游戏或大量用户互动期间出现的插页式广告。

下面是我的 MainActivity。我需要帮助将广告放置在合适的区域

public class MainActivity extends Activity  {
    private InterstitialAd interstitial;    
//  static int p;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ExtendedViewPager mViewPager = (ExtendedViewPager) findViewById(R.id.view_pager);
        mViewPager.setAdapter(new TouchImageAdapter());


        mViewPager.setCurrentItem(5);
     // Prepare the Interstitial Ad

        interstitial = new InterstitialAd(MainActivity.this);
        // Insert the Ad Unit ID
        interstitial.setAdUnitId("xxxxxxxxxxxxxxxxxxxxxxxx");

            //Locate the Banner Ad in activity_main.xml
            AdView adView = (AdView) this.findViewById(R.id.adView);

            // Request for Ads
            AdRequest adRequest = new AdRequest.Builder()

            // Add a test device to show Test Ads
             .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
             .addTestDevice("")
                    .build();

            // Load ads into Banner Ads
            adView.loadAd(adRequest);

            // Load ads into Interstitial Ads
            interstitial.loadAd(adRequest);

            // Prepare an Interstitial Ad Listener
            interstitial.setAdListener(new AdListener() {
                public void onAdLoaded() {
                    // Call displayInterstitial() function
                    displayInterstitial();
                }
            });
        }
        public void displayInterstitial() {
            // If Ads are loaded, show Interstitial else show nothing.
            if (interstitial.isLoaded()) {
                interstitial.show();
            }
        }

    class TouchImageAdapter extends PagerAdapter {

        private int[] images = { R.drawable.file_page05,R.drawable.file_page04,R.drawable.file_page03,R.drawable.file_page02,R.drawable.file_page01};

        @Override
        public int getCount() {
            return images.length;
        }

        @Override
        public View instantiateItem(ViewGroup container, int position) {
            TouchImageView img = new TouchImageView(container.getContext());
            img.setImageResource(images[position]);

            container.addView(img, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
            return img;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView((View) object);
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == object;
        }



    }


}

制作广告需要一些时间。您在显示 viewpager 后显示广告。这将导致用户正在浏览 viewpager 并突然加载广告的情况。这违反了广告政策。

在加载viewpager 之前,您已检查是否加载了广告。如果加载了广告,则显示广告并在关闭广告时显示 viewpager。否则直接显示viewpager。

我通常会在启动器中加载广告 activity 并在需要时显示。