Cordova-plugin-admobpro не отображает межстраничные объявления или баннеры на устройствах

Я пытаюсь заставить рекламу работать с помощью этого плагина в приложении Ionic и получаю очень противоречивые результаты с межстраничными объявлениями и баннерами.

Текущий код устанавливает межстраничное объявление и баннер в $ionicPlatform.ready():

angular.module('myApp',
  [
    'ionic',
    'ngCordova',
    'ngIOS9UIWebViewPatch'
  ])
  .constant('myConf', {
    ads: {
      appBanner: '/1234567/*******************',
      appInterstitial: '/1234567/*******************',
      roaInterstitial: '/1234567/*******************'
    }
  })
  .run(function ($ionicPlatform, $rootScope, $ionicLoading, myConf, $cordovaKeyboard, $cordovaGoogleAds) {
    $ionicPlatform.ready(function () {
      if ($cordovaKeyboard) {
        $cordovaKeyboard.hideAccessoryBar(true);
      }
      if (window.StatusBar) {
        StatusBar.styleDefault();
      }
      if (AdMob) {
        AdMob.prepareInterstitial({
          interstitialAdId: myConf.ads.roaInterstitial,
          autoShow: false
        });
        AdMob.createBanner({
          adId: myConf.ads.appBanner,
          autoShow: false
        });
      }
    });
  )};

Затем в main.js и в контроллерах:

if (AdMob) {
  AdMob.showInterstitial();
}

и

if (AdMob) {
  AdMob.showBanner(AdMob.AD_POSITION.BOTTOM_CENTER);
}

По общему признанию, код обернут обратными вызовами и немного сложнее, но в тестах я соединил код с этим, убрав рекламный код из оператора if или создав console.log внутри оператора if (код определенно ввода оператора if), а также попробовал autoShow: true с теми же результатами.

Мы тестируем на симуляторе ios и android и ionic view. Рекламные коды верны, и для этих тестовых объявлений нет ограничений по частоте или других ограничений.

Я постоянно вижу баннер на симуляторе iOS, но не на устройствах Android или iOS (через ионное представление).

Межстраничное объявление очень редко появлялось на симуляторе iOS и никогда на устройствах iOS или Android.

Если я бегу:

$ ionic run ios -l -c

Я вижу несколько предупреждений от cordova-plugin-extension:

while processing /Library/WebServer/www/my_app/platforms/ios/myApp/Plugins/cordova-plugin-extension/libCordovaGenericAd.a(GenericAdPlugin.o):
warning: /Users/liming/Library/Developer/Xcode/DerivedData/ModuleCache/1UIOVPNM0I1EA/CoreGraphics-N94D31PLFESQ.pcm: No object file for requested architecture
while processing /Library/WebServer/www/my_app/platforms/ios/myApp/Plugins/cordova-plugin-extension/libCordovaGenericAd.a(GenericAdPlugin.o):
warning: Could not resolve external type c:objc(cs)NSObject

Я не знаю, связано ли это, хотя я вижу, что это якобы исправлено в https://github.com/floatinghotpot/cordova-extension/issues/5


person vim    schedule 28.10.2015    source источник
comment
Межстраничные объявления только что появились на симуляторе ios (iphone 6, ios v9.1). Я сделал ионную загрузку. Но все протестированные устройства не показывали рекламы. Межстраничные объявления снова не отображаются в симуляторе. Странный!   -  person vim    schedule 29.10.2015


Ответы (2)


Я нашел некоторые проблемы:

  • синтаксическая ошибка: объект prepareInterstitial() содержал "interstitialAdId" вместо "adId". Не знаю, как это туда попало, но вызывало сообщение «Не удается определить тип запроса. Верен ли идентификатор вашего рекламного блока?» ошибка.
  • Мне нужно было постоянно ионную платформу rm/add ios - изменения кода не помещались автоматически в каталог платформ.
  • Мне нужно было добавить «isTesting: true» к объектам createBanner() и prepareInterstitial() — возможно, через некоторое время DFP блокировал мои запросы объявлений.
person vim    schedule 29.10.2015
comment
Сегодня после тестирования обнаружил, что, хотя это были проблемы, которые «сломали» рекламу, теперь я постоянно вижу рекламу в симуляторе ios, но не на android или ios через ionic view. - person vim; 30.10.2015
comment
До сих пор нет радости. Я пробовал в эмуляторе Android и столкнулся с com.android.dex.DexException: несколько файлов dex определяют Lcom/google/ads/AdRequest$ErrorCode;. В конце концов я решил это, удалив cordova-plugin-googleplayservices. Оба эмулятора показывают рекламу, но не устройства iOS или Android. Может ли это быть Cordova-plugin-whitelist, вызывающим проблему? - person vim; 30.10.2015

Окончательное решение найдено - ionic view блокировал рекламу! Как только я скомпилировал приложение и распространил его через itunes connect, оно заработало!

При компиляции мне пришлось преодолеть пару препятствий, которыми я поделюсь, чтобы любой, у кого есть похожие проблемы, мог найти ответ:

  • Compilation failed with 'Cordova/CDVViewController.h' file not found
  • clang: ошибка: команда компоновщика не удалась с кодом выхода 1 (используйте -v, чтобы увидеть вызов)

    ld: пакет битового кода не может быть сгенерирован, поскольку «/Library/WebServer/www/myApp/platforms/ios/myApp/Plugins/cordova-plugin-extension/libCordovaGenericAd.a(GenericAdPlugin.o)» был создан без полного битового кода. Все объектные файлы и библиотеки для биткода должны быть сгенерированы из Xcode Archive или Install build для архитектуры armv7.

    • I fixed this by turning off "Enable Bitcode" in build settings.
person vim    schedule 01.11.2015