AdMob未在离子/角度应用中加载广告

时间:2015-02-03 06:45:23

标签: android angularjs cordova admob ionic-framework

我在制作广告时遇到了一些问题。我无法说清楚为什么它不起作用。我安装了以下插件:

com.google.playservices 19.0.0“适用于Android的Google Play服务” com.rjfun.cordova.plugin.admob 2.1.7“AdMob” 我已经使用过本教程:https://blog.nraboy.com/2014/06/using-admob-ionicframework/1

这是我在apps.js中的代码:

 .run(function ($ionicPlatform) {
    $ionicPlatform.ready(function () {
        // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
        // for form inputs)
        if (window.cordova && window.cordova.plugins.Keyboard) {
            cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
        }
        if (window.StatusBar) {
            StatusBar.styleDefault();
        }

        // select the right Ad Id according to platform
        if (window.plugins && window.plugins.AdMob) {
            var admob_key = "ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx";
            var admob = window.plugins.AdMob;
            admob.createBannerView(
                {
                    'publisherId': admob_key,
                    'adSize': admob.AD_SIZE.BANNER,
                    'bannerAtTop': false
                },
                function () {
                    admob.requestAd(
                        {'isTesting': false},
                        function () {
                            admob.showAd(true);
                        },
                        function () {
                            console.log('failed to request ad');
                        }
                    );
                },
                function () {
                    console.log('failed to create banner view');
                }
            );
        }
    });
});

这会在应用底部生成黑色横幅区域,但不会加载任何广告。这段代码目前正在使用,在admob网站上我可以看到几百个会话。但是,我的印象和请求rpm现在都是零几天。任何人都知道可能出现什么问题?

4 个答案:

答案 0 :(得分:8)

我也花了2天的时间才使它工作,在阅读了很多文档之后我终于开始工作了。下面的代码对我有用。我还写了详细的博客文章和工作代码下载以及工作apk。 Read Here或按照以下步骤(我假设您已经拥有发布商ID和所有其他内容)

1)安装admob插件

ionic plugin add cordova-admob

2)包含angular-admob.js文件

 <script src="lib/angular-admob/angular-admob.js"></script>

3)将body onload函数调用到init admob

 <body ng-app="starter" onload="runads()">

4)将以下代码放在页面底部(别忘了用'ca-app-pub-XXXXXXXXXXXXXXXX / IIIIIIIIII'替换您的发布商ID)。它仅适用于移动设备,而不适用于PC浏览器。应用开始后,等待20-25秒加载广告。

<script type="text/javascript">
  function runads(){
    document.addEventListener("deviceready", onDeviceReady, false);
  }

  function initAds() {
    if (admob) {
      var adPublisherIds = {
        ios : {
          banner : "ca-app-pub-XXXXXXXXXXXXXXXX/IIIIIIIIII"
        },
        android : {
          banner : "ca-app-pub-XXXXXXXXXXXXXXXX/IIIIIIIIII",
          interstitial : "ca-app-pub-XXXXXXXXXXXXXXXX/IIIIIIIIII"
        }
      };

      var admobid = (/(android)/i.test(navigator.userAgent)) ? adPublisherIds.android : adPublisherIds.ios;

      admob.setOptions({
        publisherId:      admobid.banner,
        interstitialAdId: admobid.interstitial,
        tappxIdiOs:       "/XXXXXXXXX/Pub-XXXX-iOS-IIII",
        tappxIdAndroid:   "/XXXXXXXXX/Pub-XXXX-Android-AAAA",
        tappxShare:       0.5
      });

      registerAdEvents();

    } else {
      alert('AdMobAds plugin not ready');
    }
  }

  function onAdLoaded(e) {
    if (e.adType === admob.AD_TYPE.INTERSTITIAL) {
      admob.showInterstitialAd();
      showNextInterstitial = setTimeout(function() {
        admob.requestInterstitialAd();
      }, 2 * 60 * 1000); // 2 minutes
    }
  }

  // optional, in case respond to events
  function registerAdEvents() {
    document.addEventListener(admob.events.onAdLoaded, onAdLoaded);
    document.addEventListener(admob.events.onAdFailedToLoad, function (e) {});
    document.addEventListener(admob.events.onAdOpened, function (e) {});
    document.addEventListener(admob.events.onAdClosed, function (e) {});
    document.addEventListener(admob.events.onAdLeftApplication, function (e) {});
    document.addEventListener(admob.events.onInAppPurchaseRequested, function (e) {});
  }

  function onDeviceReady() {
    document.removeEventListener('deviceready', onDeviceReady, false);
    initAds();

    // display a banner at startup
    admob.createBannerView();

    // request an interstitial
    admob.requestInterstitialAd();
  }
</script>

答案 1 :(得分:1)

Raymond是对的,我使用以下代码来安装插件

> Ionic plugin add cordova-plugin-admobpro
  

注意:请将您的cordova CLI升级到版本5

打开 app.js ,然后将以下代码粘贴到 .run 方法中并完成!

var admobid = {};

// select the right Ad Id according to platform

if( /(android)/i.test(navigator.userAgent) ) { 
    admobid = { // for Android
        banner: 'ca-app-pub-3940256099942544/6300978111',
        interstitial: 'ca-app-pub-XXXXXXXXXXXXXXXX/NNNNNNNNNN'
    };
} else if(/(ipod|iphone|ipad)/i.test(navigator.userAgent)) {
    admobid = { // for iOS
        banner: 'ca-app-pub-3940256099942544/6300978111',
        interstitial: 'ca-app-pub-XXXXXXXXXXXXXXXX/NNNNNNNNNN'
    };
} else {
    admobid = { // for Windows Phone
        banner: 'ca-app-pub-3940256099942544/6300978111',
        interstitial: 'ca-app-pub-XXXXXXXXXXXXXXXX/NNNNNNNNNN'
    };
}

if(window.AdMob) AdMob.createBanner( {
  adId:admobid.banner, 
  isTesting: true,
  position:AdMob.AD_POSITION.BOTTOM_CENTER, 
  autoShow:true} );

if(window.AdMob) AdMob.prepareInterstitial( {
  adId:admobid.interstitial, 
  autoShow:true} );
  

别忘了设置'isTesting:false&#39;同时将您的应用程序部署到   存储。

答案 2 :(得分:0)

我有同样的问题。事实上,博客文章中的AdMob插件版本不再受支持,你必须使用新的一个cordova-admob-pro,它适用于所有Android版本和iOS版本。

这是一篇关于如何使用新版本的博客文章:

http://redwanhilali.com/ionic-admob-integration/

我希望它有所帮助。

答案 3 :(得分:0)

我是您正在使用的插件的作者。请迁移到专业版:

cordova plugin add com.google.cordova.admob

或(如果您使用的是cordova CLI v5.x),

cordova plugin add cordova-plugin-admobpro

这是一个在Ionic框架APP中使用cordova-plugin-admobpro的工作演示: https://github.com/floatinghotpot/admob-demo-app-ionic

推荐:

  1. 按照链接中的命令构建工作演示;
  2. 查看demo /文件夹中的内容并检查文件js / admob.js
  3. https://github.com/floatinghotpot/admob-demo-app-ionic/blob/master/demo/js/admob.js

    您甚至可以直接将此文件复制到项目中,然后在index.html中引用:

    <script src="js/admob.js"></script>
    

    像这个演示index.html: https://github.com/floatinghotpot/admob-demo-app-ionic/blob/master/demo/index.html#L21