为什么 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>
我正在尝试将 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>