cordova-plugin-admobpro 不在设备上显示插页式广告或横幅

cordova-plugin-admobpro not displaying interstitials or banners on devices

我试图让广告在 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 语句中取出或在if语句(代码肯定是进入if语句),也试了autoShow: true,结果一样。

我们正在 ios & android 模拟器和离子视图上进行测试。广告代码正确,这些测试广告没有频率或其他限制。

我一直在 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

中修复

我发现了一些问题:

  • 语法错误:prepareInterstitial() 对象包含 "interstitialAdId" 而不是 "adId"。不知道那是怎么进来的,但导致了 "Cannot determine request type. Is your ad unit id correct?" 错误。
  • 我需要不断地离子平台 rm/add ios - 代码更改不会自动放入平台目录。
  • 我需要将 "isTesting: true" 添加到 createBanner() 和 prepareInterstitial() 对象 - DFP 可能在一段时间后阻止了我的广告请求。

最终解决方案已找到 - ionic view 挡住了广告!一旦我编译了该应用程序并将其分发到 iTunes Connect 上,它们就成功了!

我在编译过程中遇到了几个障碍,我将分享这些障碍,以便遇到类似问题的任何人都能找到答案:

  • 编译失败,未找到 'Cordova/CDVViewController.h' 文件
  • clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

    ld:无法生成位码包,因为“/Library/WebServer/www/myApp/platforms/ios/myApp/Plugins/cordova-plugin-extension/libCordovaGenericAd.a(GenericAdPlugin.o)”是在没有完整位码的情况下构建的。 bitcode 的所有 object 文件和库必须从 Xcode Archive archive 或 Install build for architecture armv7

    生成
    • 我通过在构建设置中关闭 "Enable Bitcode" 来解决这个问题。