我正在开发一个 ionic 电容器应用程序,我正在使用 capacitor community ad plugin ,但我在 Android Studio 中收到以下错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.ads.AdView.loadAd(com.google.android.gms.ads.AdRequest)' on a null object reference
我正在 Android 手机上使用命令 ionic Capacitor run android -l --external
错误是这样发生的:
- 应用程序在欢迎页面上打开
- 应用显示横幅广告
- 我点击登录按钮
- 应用会删除横幅广告
- 应用导航至登录页面
- 应用应该显示横幅广告,但应用崩溃了
欢迎页面(登录页面具有相同的生命周期方法和调用):
ionViewWillLeave(): void {
this.removeAd();
}
ionViewWillEnter(): void {
this.showAd();
}
private async showAd(): Promise<void> {
await this.admobService.showBanner();
}
private async removeAd(): Promise<void> {
await this.admobService.removeBanner();
}
Admob 服务:
public async showBanner(): Promise<void> {
AdMob.addListener(BannerAdPluginEvents.FailedToLoad, (info) => {
//console.log(info);
});
const options: BannerAdOptions = {
adId: 'hidden',
adSize: BannerAdSize.BANNER,
position: BannerAdPosition.TOP_CENTER,
margin: 0,
isTesting: true,
};
AdMob.showBanner(options);
}
public async removeBanner(): Promise<void> {
await AdMob.removeBanner();
}
Admob服务是在root中提供的,也许是这样?但我不想在每个页面中专门提供它
最佳答案
横幅可能在尝试显示时被破坏。您可以尝试通过 setTimeout
添加延迟(几秒钟来检查这个想法)为 this.showAd();
调用:
ionViewWillEnter(): void {
setTimeout(() => { this.showAd(); }, 3000);
}
关于java - ionic 电容器 Admob 插件 loadAd null 对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68291764/