Промежуточная реклама не отображается после каждого 7 пролистывания - PullRequest
0 голосов
/ 23 мая 2018

Я новичок в Android, я добавил код промежуточной рекламы на Facebook, чтобы показывать рекламу после каждых 7 пролистываний, но мой код отображает только промежуточные объявления один раз.Не могли бы вы помочь мне, как решить эту проблему?Баннерная реклама работает нормально.Но я не могу устранить неполадки в промежуточной рекламе, любые предложения или помощь очень ценятся.

 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;
}

 }

1 Ответ

0 голосов
/ 23 мая 2018

Да, он отображается только один раз, потому что вы загружаете рекламу сразу только в onCreate(), чем вы отобразили один раз.Но когда вы показываете рекламу один раз, вам нужно будет загрузить ее снова для показа после следующих 7 просмотров.Поэтому, пожалуйста, создайте один метод для этого и вызывайте каждый раз, прежде чем ваши объявления будут показываться / показываться.

Это пример кода: -

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();
    }

И поместите это объявлениеid в вашем string.xml проекта.

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

Измените код onPageScrolled на этот.

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