Как правильно удалить рекламу в приложении покупки
Мне удалось внедрить Библиотеку 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
нулевой.