3

我在 Phonegap 应用程序中显示广告时遇到了问题,因为收到错误消息 - “您必须在 androidmanifest.xml 中声明 adactivity 并使用 configchanges

这是我的 manifest.xml 文件。

 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.MyApp"
  android:versionCode="5"
  android:versionName="1.3.1" >

 <supports-screens
  android:largestWidthLimitDp="320"
  android:smallScreens="true"
  android:normalScreens="true"
  android:largeScreens="true"        
  android:xlargeScreens="true"/>


 <uses-sdk

    android:minSdkVersion="15"
    android:targetSdkVersion="17" />

 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 <uses-permission android:name="android.permission.INTERNET"/>

 <application
    android:debuggable="false"
    android:allowBackup="true"
    android:icon="@drawable/desktop_icon"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

   <activity
      android:name="com.MyApp.Activity"
      android:label="@string/app_name" 
      android:configChanges="orientation|keyboardHidden|screenSize|locale">

    <intent-filter>
         <action android:name="android.intent.action.MAIN" />
         <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>

    <!--      AdMobActivity definition -->

    <activity android:name="com.google.ads.AdActivity" 
      android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize"/>

  </application>


</manifest>

我用于使用 Admob 的库是GoogleAdMobAdsSdk-6.4.1.jar

类似的代码在正常活动中工作(不使用 phonegap),但在将 admob 嵌入 phonegap 时遇到了麻烦。

4

2 回答 2

5

这应该可以解决您的问题https://github.com/sainttex/PhoneGap-Android-Native-AdMob

于 2013-07-20T12:11:50.803 回答
1

android不支持旧版本的admob sdk。你可以尝试使用其他插件。参考:https ://github.com/admob-google/admob-cordova

1.安装admob phonegap插件

使用cordova命令
下载插件,然后在本地安装

cordova plugin add c:\phonegap-admob-plugin 

或在线安装cordova插件

cordova plugin add com.admob.plugin

使用 phonegap 命令
下载插件,然后在本地安装

phonegap plugin add c:\phonegap-admob-plugin 

使用phonegap builder,添加配置

<gap:plugin name="com.admob.plugin" version="1.0.0" source="plugins.cordova.io"/>

2.init admob phonegap 插件

deviceready 事件后的初始化插件

admob.initAdmob("admob banner ID","admob interstitial ID");//admob id format ca-app-pub-xxxxxxxxxxxxxxxxxxx/xxxxxxxxxx

3.在关系位置显示横幅

admob.BannerSize 中有一些横幅尺寸,您可以创建自己的横幅尺寸,在 admob 平台上可用。admob.Position 保存所有关系位置 const 。

admob.showBanner(admob.BannerSize.BANNER,admob.Position.TOP_APP);//show banner at the top of app 

还有更多您可以为 admob 设置更多参数,例如测试模式,并且您的应用程序是为孩子制作的。 var admobParam=new admob.Params(); //admobParam.extra={'keyword':"admob phonegame"}; //admobParam.isForChild=true; admobParam.isTesting=true; admob.showBanner(admob.BannerSize.BANNER,admob.Position.TOP_CENTER,admobParam);

4.在绝对位置显示横幅

您可以将 admob 横幅放在绝对位置,就像关系位置一样简单。

admob.showBannerAbsolute(admob.BannerSize.BANNER,0,70);//show banner at absolute position x 0,y 70

5.show admob 插页式

在 phonegap、cordova 或 xdk 应用程序中显示 admob Interstitial 是相同的步骤。缓存 Interstitial ,然后在 onInterstitialReceive 函数中显示或在游戏结束时显示。```

document.addEventListener(admob.Event.onInterstitialReceive, onInterstitialReceive, false);//show in ad receive event fun need add receive listener
 admob.cacheInterstitial();// load admob Interstitial
 function onInterstitialReceive(message) {//show in ad receive event fun
     admob.showInterstitial();
 }
 function onGameOver(){//call this fun to show when game over
        admob.isInterstitialReady(function(isReady){
            if(isReady){
                admob.showInterstitial();
            }
        });
  }

```

6.处理admob广告事件

您可以处理 admob 的所有本机事件,因为 onInterstitialReceive
所有事件类型都在 admob.Event
```

function onAdmobEvent (message) {
    //do some on admob event
}
document.addEventListener(admob.Event.onAdmobBannerDismiss, onAdmobEvent, false);
document.addEventListener(admob.Event.onAdmobBannerFailedReceive), onAdmobEvent, false);
document.addEventListener(admob.Event.onAdmobBannerLeaveApplication), onAdmobEvent, false);
document.addEventListener(admob.Event.onAdmobBannerPresent), onAdmobEvent, false);
document.addEventListener(admob.Event.onAdmobBannerReceive), onAdmobEvent, false);
document.addEventListener(admob.Event.onAdmobInterstitialDismiss), onAdmobEvent, false);
document.addEventListener(admob.Event.onAdmobInterstitialFailedReceive), onAdmobEvent, false);
document.addEventListener(admob.Event.onAdmobInterstitialLeaveApplication), onAdmobEvent, false);
document.addEventListener(admob.Event.onAdmobInterstitialPresent), onAdmobEvent, false);
document.addEventListener(admob.Event.onAdmobInterstitialReceive), onAdmobEvent, false);

```

7.更多功能

1.隐藏admob横幅

admob.hideBanner()

2.测试Interstitial是否加载成功```

admob.isInterstitialReady(function(isReady){
    if(isReady){
        alert("admob Interstitial loaded");
    }
});

```

于 2014-12-16T13:27:24.823 回答