Search code examples
androidfacebookadsinterstitial

Interstitial Ads not getting displayed after every 7 swipe


I am new to android, I have added facebook interstitial ads code to display ads after every 7 swipe but my code only displays Interstitial ads once. Could you please help me out how to fix this issues? Banner ads are working fine. But I am not able to troubleshoot the Interstitial ads any suggestion or help is highly appreciated.

 import android.content.Intent;
 import android.os.Bundle;
 import android.support.v4.view.MenuItemCompat;
 import android.support.v4.view.PagerAdapter;
 import android.support.v4.view.ViewPager;
 import android.support.v7.app.ActionBarActivity;
 import android.support.v7.app.AppCompatActivity;
 import android.support.v7.widget.ShareActionProvider;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;

 import com.facebook.ads.*;

 import com.abc.shareactionprovider.content.ContentItem;

 import java.util.ArrayList;


public class MainActivity extends AppCompatActivity {
// The items to be displayed in the ViewPager
private final ArrayList<ContentItem> mItems = getSampleContent();

// Keep reference to the ShareActionProvider from the menu
private ShareActionProvider mShareActionProvider;

private InterstitialAd interstitialAd;

//final int counter = 0;
private AdView adView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Set content view (which contains a CheeseListFragment)
    setContentView(R.layout.sample_main);

    // Retrieve the ViewPager from the content view
    ViewPager vp = (ViewPager) findViewById(R.id.viewpager);

    // Set an OnPageChangeListener so we are notified when a new item is selected
    //vp.setOnPageChangeListener(mOnPageChangeListener);
    vp.addOnPageChangeListener(mOnPageChangeListener);

    // Finally set the adapter so the ViewPager can display items
    vp.setAdapter(mPagerAdapter);

    adView = new AdView(this, "1111122222333333", AdSize.BANNER_HEIGHT_50);

    LinearLayout adContainer = (LinearLayout) findViewById(R.id.banner_container);

    adContainer.addView(adView);;
    // Start loading the ad in the background.
    adView.loadAd();

    interstitialAd = new InterstitialAd(this, "33333344444444");

    interstitialAd.loadAd();

}

// BEGIN_INCLUDE(get_sap)
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu resource
    getMenuInflater().inflate(R.menu.main_menu, menu);

    // Retrieve the share menu item
    MenuItem shareItem = menu.findItem(R.id.menu_share);

    // Now get the ShareActionProvider from the item
    mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(shareItem);

    // Get the ViewPager's current item position and set its ShareIntent.
    int currentViewPagerItem = ((ViewPager) findViewById(R.id.viewpager)).getCurrentItem();
    setShareIntent(currentViewPagerItem);

    return super.onCreateOptionsMenu(menu);
}
// END_INCLUDE(get_sap)

/**
 * A PagerAdapter which instantiates views based on the ContentItem's content type.
 */
private final PagerAdapter mPagerAdapter = new PagerAdapter() {
    LayoutInflater mInflater;

    @Override
    public int getCount() {
        return mItems.size();
    }

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

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        // Just remove the view from the ViewPager
        container.removeView((View) object);
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        // Ensure that the LayoutInflater is instantiated
        if (mInflater == null) {
            mInflater = LayoutInflater.from(MainActivity.this);
        }

        // Get the item for the requested position
        final ContentItem item = mItems.get(position);

        // The view we need to inflate changes based on the type of content
        switch (item.contentType) {
            case ContentItem.CONTENT_TYPE_TEXT: {
                // Inflate item layout for text
                TextView tv = (TextView) mInflater
                        .inflate(R.layout.item_text, container, false);

                // Set text content using it's resource id
                tv.setText(item.contentResourceId);

                // Add the view to the ViewPager
                container.addView(tv);
                return tv;
            }
            case ContentItem.CONTENT_TYPE_IMAGE: {
                // Inflate item layout for images
                ImageView iv = (ImageView) mInflater
                        .inflate(R.layout.item_image, container, false);

                // Load the image from it's content URI
                iv.setImageURI(item.getContentUri());

                // Add the view to the ViewPager
                container.addView(iv);
                return iv;
            }
        }

        return null;
    }
};

private void setShareIntent(int position) {
    // BEGIN_INCLUDE(update_sap)
    if (mShareActionProvider != null) {
        // Get the currently selected item, and retrieve it's share intent
        ContentItem item = mItems.get(position);
        Intent shareIntent = item.getShareIntent(MainActivity.this);

        // Now update the ShareActionProvider with the new share intent
        mShareActionProvider.setShareIntent(shareIntent);
    }
    // END_INCLUDE(update_sap)
}

/**
 * A OnPageChangeListener used to update the ShareActionProvider's share intent when a new item
 * is selected in the ViewPager.
 */
private final ViewPager.OnPageChangeListener mOnPageChangeListener
        = new ViewPager.OnPageChangeListener() {

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        // NO-OP
        if(interstitialAd.isAdLoaded()) {
            if (position % 7 == 0) {
                interstitialAd.show();
            }
        }

    }

    @Override
    public void onPageSelected(int position) {
        setShareIntent(position);
    }

    @Override
    public void onPageScrollStateChanged(int state) {
        // NO-OP
    }
};

/**
 * @return An ArrayList of ContentItem's to be displayed in this sample
 */
static ArrayList<ContentItem> getSampleContent() {
    ArrayList<ContentItem> items = new ArrayList<ContentItem>();

    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i1.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i2.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i3.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i4.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i5.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i6.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i7.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i8.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i9.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i10.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i11.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i12.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i13.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i14.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i15.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i16.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i17.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i18.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i19.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i20.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i21.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i22.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i23.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i24.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i25.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i26.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i27.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i28.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i29.jpg"));
    items.add(new ContentItem(ContentItem.CONTENT_TYPE_IMAGE, "i30.jpg"));


    return items;
}

 }

Solution

  • Yes it shows only once because you are loading the ads at once only in the onCreate() than you will displayed it once. But when you are displaying the ads once than after you have to load it again for display them after next 7 views. So please create one method for that and call each and every time before your ads will gonna be to display/show.

    This is the example code :-

    public void loadInterstitial() {
            // Instantiate an InterstitialAd object
            AdSettings.addTestDevice("350cf676a5848059b96313bdddc21a35");
            interstitialAd = new InterstitialAd(MainActivity.this, getString(R.string.ins_ads_id));
            interstitialAd.loadAd();
            // Set listeners for the Interstitial Ad
            interstitialAd.setAdListener(new InterstitialAdListener() {
                @Override
                public void onInterstitialDisplayed(Ad ad) {
                    Log.v("OkHttp", ad.toString());
                }
    
                @Override
                public void onInterstitialDismissed(Ad ad) {
                    Log.v("OkHttp", ad.toString());    
                }
    
                @Override
                public void onError(Ad ad, AdError adError) {
                    Log.v("OkHttp", ad.toString() + "   " + adError.getErrorCode() + "   " + adError.getErrorMessage());
                }
    
                @Override
                public void onAdLoaded(Ad ad) {
                    Log.v("OkHttp", ad.toString());
                    showInterstitial();
                }
    
                @Override
                public void onAdClicked(Ad ad) {
                    Log.v("OkHttp", ad.toString());
                }
    
                @Override
                public void onLoggingImpression(Ad ad) {
                    Log.v("OkHttp", ad.toString());
                }
            });
        }
    
        public void showInterstitial() {
            interstitialAd.show();
        }
    

    And Put this ad id into your string.xml of the project.

    <string name="ins_ads_id">222591425151579_222592145151XXX</string>
    

    Change your onPageScrolled code to this.

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            // NO-OP
                if (position % 7 == 0) {
                    loadInterstitial();
                }
        }