#angular #admob
Вопрос:
Я пытаюсь сегментировать своих подписчиков, которые считаются премиум-участниками, и не показывать им рекламу AdMob в моем приложении.
В настоящее время я просто инициализирую, настраиваю и показываю свои объявления в своем app.component.ts
файле таким образом:
AdMob.showBanner(options);
Я попытался установить в своем окне наблюдаемый auth.service
, который позволял мне подписываться на, если пользователь был премиум-участником:
premiumMember: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
if (premium) {
this.premiumMember.next(true);
}
Затем я обновил свой app.component.ts
файл, чтобы подписаться на premiumMember
наблюдаемый:
this.auth.premiumMember.subscribe((response:boolean) => {
if (!response) {
AdMob.showBanner(options);
}
});
Однако это, похоже, не работает, так как объявления появляются всегда, независимо от ценности наблюдаемого.
Вам нужно явно настроить AdMob на скрытие, если наблюдаемое верно? Есть какие-нибудь мысли или идеи о лучших методах для разработки этого проекта?
Ответ №1:
BehaviorSubject
в angular будет излучаться начальное/последнее излучаемое значение. false
в вашем случае, из-за того, что ваше начальное указанное значение было ложным.
premiumMember: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
Это означает, что при app.component.ts
загрузке ваша подписка this.auth.premiumMember
false
сначала получает значение. Так AdMob.showBanner()
что побегу.
А затем, когда вы .next()
получите новое последнее значение.
Я предполагаю, что вы используете этот пакет @capacitor-community/admob
?
Мое предложение состоит в том, чтобы инициализировать и показать баннер, а затем, когда пользователь премиум-класса войдет в систему, использовать AdMob.removeBanner()
его для удаления баннера.
Поэтому ваш код должен измениться на этот
AdMob.showBanner(options);
this.auth.premiumMember.subscribe((premiumMember :boolean) => {
if (premiumMember) {
AdMob.removeBanner();
}
});