关于如何在现有的Android项目现场显示AdMob的横幅,在一个Android项目中使用一个简单的Android JAR文件似乎不是一个简单的事情。我终于设法让AdMob在现有工作统一安卓游戏。对于本例,我使用统一为Windows版本3.5.2和最新的Eclipse为Android插件。
先决条件
我假设您有一个工作在你的电脑上安装Android的Eclipse插件。如果没有,请按照本教程准备工作区: https://github.com/unity-plugins/Unity-Admob。
Eclipse / Android的部分
• 如果你还没有这样做,下载AdMob JAR文件并注册一个账户。
• 创建一个新的Android项目,确保命名空间(包名称)是相同的。你可以通过构建统一设置命名空间,设置>播放器设置>Android选项卡>其它设置>“束标识符”。在我的示例中,我使用my.android.game。
• 复制AdMob JAR文件/libs到项目大文件夹。
• 在你的安装目录文件下搜索classes.jar文件,并复制到libsfolder Eclipse项目文件。
• 为了测试现实的广告,我们首先创建一个名为AdMobActivity.javaa的常规Android类。如下所示:
<!-- base permission -->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<!-- base permission for location-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- base permission required by chartboost and baidu-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- permission required by mmedia -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-feature android:name="android.hardware.microphone" android:required="false" />
• 更新你的Eclipse项目的AndroidManifest.Xml文件。如下所示:
<activity android:name="com.jirbo.adcolony.AdColonyOverlay" android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@android :style/Theme.Translucent.NoTitleBar.Fullscreen" />
<activity android:name="com.jirbo.adcolony.AdColonyFullscreen" android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@android :style/Theme.Black.NoTitleBar.Fullscreen" />
<activity android:name="com.jirbo.adcolony.AdColonyBrowser" android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@android :style/Theme.Black.NoTitleBar.Fullscreen" />
<!-- guang dian tong -->
<service android:name="com.qq.e.comm.DownloadService" android:exported="false"/>
<activity android:name="com.qq.e.ads.ADActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize"/>
确保用实际来取代YOUR_PUBLISHER_ID AdMob发行商ID。
• 在Android手机上构建和运行应用程序,你将会看到AdMob的横幅被显示。如果你不参阅AdMob教程如何为Android应用程序实施横幅,将依旧实行本教程。
• 创建一个类称为AdMobUnityActivity.java,你可以用你以前创建的AdMobActivity.java类作为基础。类是这样的:
activity android:name="com.amazon.device.ads.AdActivity"
android:configChanges="keyboardHidden|orientation|screenSize"/>
<!-- InMobi -->
<activity android:name="com.inmobi.androidsdk.IMBrowserActivity"
android:configChanges="keyboardHidden|orientation|keyboard|smallestScreenSize|screenSize"
android:theme="@android :style/Theme.Translucent.NoTitleBar"
android:hardwareAccelerated="true" />
<!-- Millennial Media -->
<activity android:name="com.millennialmedia.android.MMActivity"
android:theme="@android :style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|keyboard|screenSize" ></activity>
<!-- Keymob -->
<activity android:name="com.keymob.sdk.core.KeymobActivity" android:theme="@android:style/Theme.Dialog"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
/>
android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="@android:style/Theme.Translucent"/>
现在的类扩展UnityPlayerActivity相反的活动,我们创建的静态函数setupAdsStatic()离开oncreate()功能几乎是空的。我们也要把这一功能的全部内容包含到
AdManager.getInstance().initFromKeymobService(this, "1", new AdEventListener(), false);
否则我们将在调用函数时会得到一个错误或崩溃,还有一些内容在功能略有不同,以使它与Unity合作。
• 不完全确定以下步骤是必要的,但仅仅只有这么做了:AndroidManifest添加这一行,xml文件内应用程序标签:
<activity android:name="com.amazon.device.ads.AdActivity"
• 将项目导出到一个JAR文件,在项目中单击鼠标右键点击包管理器,选择导出。
现在你完成了在Eclipse中一部分,我们必须添加插件到Unity 3D。
Unity部分
• 复制创建JAR文件到你的Unity Android项目中,插入文件夹/插件/ Android /
• 同时复制AdMob JAR文件到相同的文件/插件/ Android /
• 完整的AndroidManifest.xml文件位于Unity Android项目,内容如下
class AdEventListener implements IAdEventListener {
@Override
public void onLoadedSuccess(int arg0, Object arg1,
PlatformAdapter arg2) {
Log.d(TAG, arg2+" onLoadedSuccess for type "+arg0 +" withdata "+arg1);
if(arg0==AdTypes.INTERSTITIAL){
((IInterstitialPlatform)arg2).showInterstitial();//广告加载成功的时候就
}
}
@Override
public void onLoadedFail(int arg0, Object arg1, PlatformAdapter arg2) {
Log.d(TAG, arg2+" onLoadedFail for type "+arg0 +" withdata "+arg1);
}
@Override
public void onAdOpened(int arg0, Object arg1, PlatformAdapter arg2) {
Log.d(TAG, arg2+" onAdOpened for type "+arg0 +" withdata "+arg1);
}
@Override
public void onAdClosed(int arg0, Object arg1, PlatformAdapter arg2) {
Log.d(TAG, arg2+" onAdClosed for type "+arg0 +" withdata "+arg1);
}
@Override
public void onAdClicked(int arg0, Object arg1, PlatformAdapter arg2) {
Log.d(TAG, arg2+" onAdClicked for type "+arg0 +" withdata "+arg1);
}
@Override
public void onOtherEvent(String eventName, int adtype, Object data,
PlatformAdapter adapter) {
Log.d(TAG, adapter+" onLoadedSuccess for type"+adtype +" withEvent "+eventName);
}
}
确保在Eclipse项目中命名是正确的,改变YOUR_PUBLISHER_ID价值与实际价值的AdMob发行商ID。如果您已使用其他的Android插件,则会与本文所介绍的不同。
• 最终显示的广告横幅在现场Unity Android游戏创建或修改以下内容c#脚本:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<!-- base permission for location-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
横幅将会显示在你的手机屏幕的顶部或底部取决于你在Eclipse项目中的源代码。注意,此代码只在一个实际的Android设备上执行,而在Unity播放器中不会显示该代码!在您的Eclipse项目„setupAdsStatic”必须是相同的函数名。