Как правильно удалить рекламу в приложении покупки

Мне удалось внедрить Библиотеку Google Billing в мой проект. Я добавил покупку в приложении для удаления рекламы в приложении, протестировал ее, и после покупки реклама удаляется, но когда должна появиться промежуточная реклама (она не должна появиться, если я приобрел элемент), происходит сбой приложения,

Я заметил, что это происходит и с обычными пользователями, которые не платят за удаление рекламы.

Может ли это произойти из-за того, что приложение сохранено как черновик в Google Play и не работает? Я действительно не хочу публиковать это с этой возможной ошибкой, потому что люди могут найти это раздражающим, и они могут удалить приложение навсегда.

Пожалуйста, дайте мне знать, если это причина, в другом случае я отредактирую свой пост и вставлю туда какой-нибудь код.

Вот что-то из LogCat:

05-05 22:23:52.660: E/AndroidRuntime(16730): FATAL EXCEPTION: main
05-05 22:23:52.660: E/AndroidRuntime(16730): Process: com.my.app, PID: 16730
05-05 22:23:52.660: E/AndroidRuntime(16730): java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.google.android.gms.ads.InterstitialAd.isLoaded()' on a null object reference
05-05 22:23:52.660: E/AndroidRuntime(16730):    at com.my.app.GameActivity$4.run(GameActivity.java:211)
05-05 22:23:52.660: E/AndroidRuntime(16730):    at android.os.Handler.handleCallback(Handler.java:739)
05-05 22:23:52.660: E/AndroidRuntime(16730):    at android.os.Handler.dispatchMessage(Handler.java:95)
05-05 22:23:52.660: E/AndroidRuntime(16730):    at android.os.Looper.loop(Looper.java:145)
05-05 22:23:52.660: E/AndroidRuntime(16730):    at android.app.ActivityThread.main(ActivityThread.java:5834)
05-05 22:23:52.660: E/AndroidRuntime(16730):    at java.lang.reflect.Method.invoke(Native Method)
05-05 22:23:52.660: E/AndroidRuntime(16730):    at java.lang.reflect.Method.invoke(Method.java:372)
05-05 22:23:52.660: E/AndroidRuntime(16730):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1388)
05-05 22:23:52.660: E/AndroidRuntime(16730):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1183)

Я использую логическое значение "NOADS", чтобы проверить, купил ли пользователь элемент:

private void itemPurchased() {
        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
        Editor editor = preferences.edit();
        editor.putBoolean("NOADS", true);
        editor.commit();
}

Я показываю или скрываю рекламу для пользователей, которые приобрели следующее:

public void addInMainActivity() {
        if (!PreferenceManager.getDefaultSharedPreferences(this).getBoolean("NOADS", false)) {

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

            // Create the interstitial.
            interstitial = new InterstitialAd(this);
            interstitial.setAdUnitId(getResources().getString(R.string.adInterstitialUnitId));

            // Create ad request.
            AdRequest adRequest = new AdRequest.Builder().build();

            // Begin loading your interstitial
            interstitial.loadAd(adRequest);
            } else {
                ((AdView) findViewById(R.id.adView)).setVisibility(View.GONE);
            }
}

Спасибо за помощь!

1 ответ

Решение

Посмотрите на строку № 211 GameActivity, Ты звонишь interstitial.isAdLoaded(), На данный момент interstitial нулевой.

Другие вопросы по тегам