Скрыть рекламные баннеры в утилитарном обзоре, когда у пользователя есть про версия - PullRequest
0 голосов
/ 12 июля 2019

Это мой первый опыт работы с рекламой и кучей андроида. Вот мой код, я хочу проверить, купил ли пользователь профессиональную версию моего приложения, чтобы удалить все объявления в обзоре переработчика. На данный момент я показываю только рекламные баннеры между предметами в своем обзоре

Вот код:

public class NewReleasesAdapter extends RecyclerView.Adapter< RecyclerView.ViewHolder> implements BillingProcessor.IBillingHandler {
    public static final String TAG = NewReleasesAdapter.class.getSimpleName();
    private LayoutInflater mInflater;
    private Context mContext;
    private List<Release> mNewReleases;
    private DatabaseHelper mDatabaseHelper;
    // A game/release item view type.
    private static final int GAME_ITEM_VIEW_TYPE = 0;
    // The banner ad view type.
    private static final int BANNER_AD_VIEW_TYPE = 1;
    // Billing
    private BillingProcessor mBillingProcessor;
    private boolean mIsProVersion;
    // Ads
    private AdRequest mAdRequest;

    public NewReleasesAdapter(Context context) {
        mContext = context;
        mInflater = LayoutInflater.from(mContext);
        mDatabaseHelper = DatabaseHelper.getDatabaseHelper(mContext);

        // Is in europe
        // if(!mIsProVersion) {
            if (ConsentInformation.getInstance(mContext).isRequestLocationInEeaOrUnknown()) {
                switch (ConsentInformation.getInstance(mContext).getConsentStatus()) {
                    case PERSONALIZED:
                        // Personalized ads
                        mAdRequest = new AdRequest.Builder().build();
                        break;
                    case NON_PERSONALIZED:
                        // fall though to none Personalized ads
                    default:
                        // None Personalized ads
                        Bundle extras = new Bundle();
                        // npa is short for "none personalized ads"
                        extras.putString("npa", "1");
                        mAdRequest = new AdRequest.Builder()
                                .addNetworkExtrasBundle(AdMobAdapter.class, extras)
                                .build();
                        break;
                }
            } else {
                // Personalized ads
                mAdRequest = new AdRequest.Builder().build();
            }
        // }
    }

    public void setNewReleases(List<Release> newReleases) {
        this.mNewReleases = newReleases;
        notifyDataSetChanged();
    }

    @Override
    public  RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        switch(viewType) {
            case GAME_ITEM_VIEW_TYPE:
                return new NewGameHolder(mInflater.inflate(R.layout.newly_added_game, parent, false));
            case BANNER_AD_VIEW_TYPE:
                return new ViewHolderAdMob(mInflater.inflate(R.layout.list_item_ad, parent, false), mAdRequest);
            default:
                return new NewGameHolder(mInflater.inflate(R.layout.newly_added_game, parent, false));
        }
    }

    @Override
    public int getItemViewType(int position) {
        // isn't pro version
        if ((position + 1) % 6 == 0 && !mIsProVersion) {
            return BANNER_AD_VIEW_TYPE;
        }
        return GAME_ITEM_VIEW_TYPE;
    }

    @Override
    public int getItemCount() {
        if (mNewReleases == null) {
            return 0;
        }
        return mNewReleases.size();
    }

    @Override
    public void onProductPurchased(@NonNull String productId, @Nullable TransactionDetails details) {

    }

    @Override
    public void onPurchaseHistoryRestored() {

    }

    @Override
    public void onBillingError(int errorCode, @Nullable Throwable error) {

    }

    @Override
    public void onBillingInitialized() {
        mBillingProcessor.loadOwnedPurchasesFromGoogle();
        if (mBillingProcessor.isPurchased("pro")) {
            mIsProVersion = true;
            // Toast.makeText(mContext, "You're a pro user! Thanks!", Toast.LENGTH_SHORT).show();
        } else {
            mIsProVersion = false;
        }
    }

    public BillingProcessor getBillingProcessor() {
        return mBillingProcessor;
    }

    class NewGameHolder extends RecyclerView.ViewHolder {
        public TextView name;
        public TextView summary;
        public TextView releaseDate;
        public TextView platforms;
        public TextView genres;
        public ImageView cover;
        public Button favorite;
        public ProgressBar coverProgressBar;
        public RelativeLayout newReleaseLayout;

        public NewGameHolder(View itemView) {
            super(itemView);
            name = itemView.findViewById(R.id.game_name);
            summary = itemView.findViewById(R.id.summary);
            releaseDate = itemView.findViewById(R.id.release_date);
            platforms = itemView.findViewById(R.id.platforms);
            genres = itemView.findViewById(R.id.genres);
            cover = itemView.findViewById(R.id.cover_image);
            favorite = itemView.findViewById(R.id.favorite);
            coverProgressBar = itemView.findViewById(R.id.cover_progress_bar);
            newReleaseLayout = itemView.findViewById(R.id.new_release);
        }
    }

    public static class ViewHolderAdMob extends RecyclerView.ViewHolder {
        public AdView mAdView;
        public ViewHolderAdMob(View view, AdRequest adRequest) {
            super(view);
            mAdView = view.findViewById(R.id.adView);
            if (adRequest != null) {
                mAdView.loadAd(adRequest);
            }
        }
    }

}

Теперь проблема в том, что у меня есть профессиональная версия, а приложение все еще показывает рекламу, это означает, что mIsProVersion является ложным во время, когда я звоню getItemViewType, что определяет, является ли следующий элемент, который будет отображаться в моем обзоре переработчика, обычный предмет или рекламный предмет. Я предполагаю, что моя реализация библиотеки биллинга не годится. Как правильно скрыть рекламу, если у пользователя есть про версия? Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...