標籤:
關於如何在現有的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”必須是相同的函數名。
Unity 3D:在現有的Android遊戲情境中顯示AdMob的橫幅