關於如何在現有的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」必須是相同的函數名。java