ошибка плагина nativescript-admob

Я добавил плагин nativescript-admob в свой проект NativeScript Angular, и у меня есть следующий код в службе, которую я вставляю в компонент:

import { Injectable } from "@angular/core";
import * as Admob from "nativescript-admob";

@Injectable()
export class AdmobService {

  private androidBannerId = "ca-app-pub-3940256099942544/6300978111";
  private iosBannerId = "";

  public createBanner() {
    Admob.createBanner({
      testing: false,
      size: Admob.AD_SIZE.SMART_BANNER,
      // iosBannerId: this.iosBannerId,
      androidBannerId: this.androidBannerId,
      // iosTestDeviceIds: ["yourTestDeviceUDIDs"],
      margins: {
        bottom: 500
      }
    }).then(function() {
      console.log("admob createBanner done test");
    }, function(error) {
      console.log("admob createBanner error: " + error);
    });
  }

  public hideBanner() {
    Admob.hideBanner().then(function() {
      console.log("admob hideBanner done");
    }, function(error) {
      console.log("admob hideBanner error: " + error);
    });
  }
}

И вот как я использую его в компоненте:

import { Component } from "@angular/core";
import { Page } from "tns-core-modules/ui/page";
import { AdmobService } from "~/service/admob.service";

@Component({
  selector: "Start",
  moduleId: module.id,
  templateUrl: "./start.component.html",
  styleUrls: ["./start.component.scss"]
})
export class StartComponent {

  constructor(private page: Page, private admob: AdmobService) {
    this.page.on("loaded", () => {
      this.admob.createBanner();
    });
  }

}

Когда я запускаю баннер AdMob после загрузки страницы, рекламный баннер не отображается должным образом (я использую идентификатор тестового баннера Android, предоставленный AdMob), и я получаю в консоли следующий вывод, который выглядит как ошибка:

chromium: [INFO:library_loader_hooks.cc(36)] Chromium logging enabled: level = 0, default verbosity = 0
07-21 14:17:56.082 22107 22107 I cr_BrowserStartup: Initializing chromium process, singleProcess=false
07-21 14:17:56.174 22107 22107 I zygote  :   at void com.android.webview.chromium.WebViewChromium.init(java.util.Map, boolean) (PG:53)
07-21 14:17:56.175 22107 22107 I zygote  :   at void com.android.webview.chromium.WebViewChromium.init(java.util.Map, boolean) (PG:53)
07-21 14:17:56.176 22107 22107 I zygote  :   at void com.android.webview.chromium.WebViewChromium.init(java.util.Map, boolean) (PG:53)
07-21 14:17:56.176 22107 22107 I zygote  :   at void com.android.webview.chromium.WebViewChromium.init(java.util.Map, boolean) (PG:53)
07-21 14:17:56.177 22107 22107 I zygote  :   at void com.android.webview.chromium.WebViewChromium.init(java.util.Map, boolean) (PG:53)
07-21 14:17:56.178 22107 22107 I zygote  :   at void com.android.webview.chromium.WebViewChromium.init(java.util.Map, boolean) (PG:53)

Что мне нужно сделать, чтобы баннер AdMob заработал?


person Graham    schedule 21.07.2018    source источник


Ответы (1)


На самом деле это оказалось странной ошибкой с плагином admob. Поэтому, когда вы впервые переходите на страницу в своем приложении, событие loaded запускается, но реклама никогда не появляется. Когда вы перейдете к нему во второй раз, реклама действительно появится. Чтобы исправить это, я также добавил функцию инициализации баннера к событию navigatedTo.

this.page.on("navigatedTo", () => {
  this.admob.createBanner();
});

Это устранило проблему, так что баннер появлялся в первый раз и каждый раз, когда вы переходили на страницу после этого.

person Graham    schedule 23.07.2018