为什么 AdMob 免费版会使我的应用程序在 iOS 模拟器中崩溃?

Why Does AdMob Free Crash My App in the iOS Simulator?

我正在尝试将 adMobFree 添加到全新的 Ionic 4 项目中。

我试过一遍又一遍地这样做,使用不同的方法并遵循不同的教程,结果总是一样的:应用程序拒绝在 iOS 模拟器中 运行。它只是停在初始屏幕上。

安装步骤

ionic cordova platform add ios
ionic cordova platform add android

ionic cordova plugin add cordova-plugin-admob-free --save --variable ADMOB_APP_ID="ca-app-pub-12345678901234567890"
npm install @ionic-native/admob-free

app.module.ts

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';

import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';

import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';

import { AdMobFree } from '@ionic-native/admob-free/ngx';

@NgModule({
    declarations: [AppComponent],
    entryComponents: [],
    imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule],
    providers: [
        StatusBar,
        SplashScreen,
        AdMobFree,
        { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
    ],
    bootstrap: [AppComponent]
})
export class AppModule { }

ads.service.ts

import { Injectable } from '@angular/core';
import { Platform } from '@ionic/angular';
import { AdMobFree, AdMobFreeBannerConfig } from '@ionic-native/admob-free/ngx';

@Injectable({
    providedIn: 'root'
})
export class AdsService {

    bannerId: 'ca-app-pub-12345678901234567890';

    constructor(
        public platform: Platform,
        private admobFree: AdMobFree
    ) { }

    showBanner() {
        this.platform
            .ready()
            .then(() => {
                const bannerConfig: AdMobFreeBannerConfig = {
                    id: this.bannerId,
                    isTesting: false,
                    autoShow: false
                };
                this.admobFree.banner.config(bannerConfig);
                this.admobFree.banner
                    .prepare()
                    .then(() => {
                        this.admobFree.banner.show();
                    })
                    .catch(e => console.log(e));
            })
            .catch(e => console.log(e));
    }
}

home.page.ts

import { Component } from '@angular/core';
import { AdsService } from '../services/ads.service';

@Component({
    selector: 'app-home',
    templateUrl: 'home.page.html',
    styleUrls: ['home.page.scss'],
})
export class HomePage {

    constructor(
        public ads: AdsService
    ) {
        this.ads.showBanner();
    }

}

我做错了什么?

这个 SO 答案就是解决方案

For Ionic App with Admob plugin (I've tried just in Ioniv V3) you can add this in ./config.xml under platform ios to auto populate app-name-info.plist file at every build time.

<platform name="ios">
   <config-file parent="GADApplicationIdentifier" target="*-Info.plist">
      <string>ca-app-pub-12345/12345</string>
   </config-file>

   <config-file parent="GADIsAdManagerApp" target="*-Info.plist">
      <true />
   </config-file>

   ... (other lines) ...

</platform>