【问题标题】:Ionic Capacitor Admob plugin loadAd null object referenceIonic Capacitor Admob 插件 loadAd 空对象引用
【发布时间】:2021-09-18 08:06:44
【问题描述】:

我正在开发 Ionic Capacitor 应用程序,我正在使用 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

我正在使用命令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 中提供的,也许是这种情况?但我不想在每个页面中都专门提供它

【问题讨论】:

    标签: java android typescript ionic-framework


    【解决方案1】:

    很可能,横幅在尝试显示时会损坏。您可以尝试通过setTimeoutthis.showAd(); 调用添加延迟(几秒钟来检查这个想法):

    ionViewWillEnter(): void {
        setTimeout(() => { this.showAd(); }, 3000);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-07
      • 2020-01-07
      • 1970-01-01
      • 2021-09-12
      • 2020-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多