Android不影響用戶體驗的廣告
AdMob 的廣告服務(wù),但是Android 平臺不對移動廣告網(wǎng)絡(luò)的選擇施加任何的限制。在一定程度上,這門課程統(tǒng)稱強調(diào)的概念是類似的廣告網(wǎng)絡(luò)。 例如,每一個廣告網(wǎng)絡(luò)可能有一些特定的配置設(shè)置,比如地理定位和廣告文字的字體大小,這可能是在某些網(wǎng)絡(luò)中配置,而不在其他網(wǎng)絡(luò)中配置。這節(jié)課程并沒有深入觸及這些話題,您應(yīng)該查閱您選擇的網(wǎng)絡(luò)所提供的文檔。
廣告是貨幣化(賺錢)你的移動應(yīng)用程序的方法之一。在本文中你將學(xué)習(xí)如何在你的Android應(yīng)用程序中放置橫幅廣告。 盡管我們的課程和樣例使用獲得發(fā)布商帳戶和廣告SDK
為了整合在您的應(yīng)用程序中的廣告,首先你必須通過注冊一個發(fā)布賬戶成為移動廣告網(wǎng)絡(luò)發(fā)布商。通常情況下,一個標(biāo)識符配置的每個應(yīng)用程序服務(wù)的廣告。這是廣告網(wǎng)絡(luò)相關(guān)應(yīng)用程序服務(wù)中的廣告。在AdMob的樣例中,標(biāo)識符被稱為發(fā)布者ID。您應(yīng)該咨詢您的廣告網(wǎng)絡(luò)的詳細(xì)信息。 移動廣告網(wǎng)絡(luò)通常發(fā)布一個特殊的Android SDK, 包含照顧交流,廣告刷新,外觀和感覺的定制等的代碼。 大部分的廣告網(wǎng)絡(luò)分發(fā)他們的SDK作為一個JAR文件。在你的Android項目中設(shè)置廣告網(wǎng)絡(luò)的JAR文件,和集成其它第三方JAR文件沒有什么不同。首先把JAR文件復(fù)制到你項目中的libs文件夾。如果你使用Eclipse IDE,務(wù)必將JAR文件添加到Build Path。你可以通過Properties > Java Build Path > Libraries > Add JARs 實現(xiàn)。
圖1. Eclipse構(gòu)建路徑設(shè)置。
聲明適當(dāng)?shù)臋?quán)限
因為移動廣告通過網(wǎng)絡(luò)獲得,移動廣告SDK通常需要在Android manifet中的聲明相關(guān)的權(quán)限。可能還需要其他種類的權(quán)限。
例如,這里是你如何能要求INTERNET權(quán)限:
</manifest>
<uses-permission android:name="android.permission.INTERNET" />
...
<application>...</application>
</manifest>
設(shè)置廣告位置
橫幅廣告通常被實現(xiàn)為一個自定義的WebView(一個用來查看網(wǎng)頁的視圖)。廣告也有不同的尺寸和形狀。一旦你決定了一個特定的屏幕上放一個廣告,你可以把它添加在你的Activity的XML布局。下面的XML片段說明了一個顯示在屏幕頂部的橫幅廣告。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ad_catalog_layout"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.google.ads.AdView
xmlns:googleads="http://schemas.android.com/apk/lib/com.google.ads"
android:id="@+id/ad"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
googleads:adSize="BANNER"
googleads:adUnitId="@string/admob_id" />
<TextView android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/banner_top" />
<TextView android:id="@+id/status"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
圖2. 在移動廣告樣本的廣告布局的屏幕截圖。
您應(yīng)該根據(jù)不同的配置考慮使用替代廣告的大小,如屏幕尺寸,屏幕方向。這可以很容易地通過 providing alternative resources解決。舉例來說,上面的示例布局可能放置在<b><font colorgreen>res/layout-large/</font></b>目錄,這使得“大”屏幕尺寸較大的廣告。
...
<com.google.ads.AdView
xmlns:googleads="http://schemas.android.com/apk/lib/com.google.ads"
android:id="@+id/ad"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
googleads:adSize="IAB_LEADERBOARD"
googleads:adUnitId="@string/admob_id" />
...
請注意,自定義視圖的名稱和它的配置屬性是特定網(wǎng)絡(luò)。廣告網(wǎng)絡(luò)可能會支持XML布局屬性(如上圖所示),或者實時APIs,或兩者皆可。在示例應(yīng)用程序,移動廣告,googleads:adSize),和發(fā)行商ID(googleads:adUnitId)是在XML布局中建立。
當(dāng)決定在您的應(yīng)用程序中何處放置廣告,您應(yīng)該謹(jǐn)慎考慮用戶體驗。例如,你不想因為用多個廣告填補屏幕,而惹惱你的用戶。其實,這種做法是被一些廣告網(wǎng)絡(luò)禁止的。此外,避免將廣告過于緊密的靠近UI控件,以避免意外點擊。
圖3. 避免將UI輸入過于緊密靠近廣告橫幅,以防止意外廣告點擊。
圖4. 不要在有用的內(nèi)容上覆蓋廣告橫幅。
初始化廣告
在XML布局設(shè)置廣告后,你可以進一步根據(jù)您的應(yīng)用程序的架構(gòu)在Activity.onCreate()或者Fragment.onCreateView()中自定義廣告。根據(jù)不同的廣告網(wǎng)絡(luò),可以配置的參數(shù)有:廣告的大小,字體顏色,關(guān)鍵字,人口統(tǒng)計,地理位置定位,等等。
重要的是要尊重用戶的隱私,如人口統(tǒng)計學(xué)或位置,如果為了廣告推送傳遞某些參數(shù)給廣告網(wǎng)絡(luò)。讓您的用戶知道,讓他們有機會選擇退出這些功能。
在下面的代碼片斷中,關(guān)鍵字定位被使用。關(guān)鍵字設(shè)置后,應(yīng)用程序調(diào)用<b><font color=green>loadAd()</font></b>開始投放廣告。
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
...
View v = inflater.inflate(R.layout.main, container, false);
mAdStatus = (TextView) v.findViewById(R.id.status);
mAdView = (AdView) v.findViewById(R.id.ad);
mAdView.setAdListener(new MyAdListener());
AdRequest adRequest = new AdRequest();
adRequest.addKeyword("sporting goods");
mAdView.loadAd(adRequest);
return v;
}
啟用測試模式
一些廣告網(wǎng)絡(luò)提供測試模式。在開發(fā)和測試期間廣告展示和點擊不計算,是非常有用的。
重要提示:在發(fā)布應(yīng)用程序之前,請確保關(guān)閉測試模式。
實施廣告事件監(jiān)聽器
例如,這里有一些可從AdMob的AdListener 事件的回調(diào)的接口:
private class MyAdListener implements AdListener {
...
@Override
public void onFailedToReceiveAd(Ad ad, ErrorCode errorCode) {
mAdStatus.setText(R.string.error_receive_ad);
}
@Override
public void onReceiveAd(Ad ad) {
mAdStatus.setText("");
}
}
在有條件的情況下,你應(yīng)該考慮實施廣告事件偵聽器,能夠提供各種廣告服務(wù)的廣告視圖關(guān)聯(lián)的事件回調(diào)。根據(jù)廣告網(wǎng)絡(luò),偵聽器可能會提供活動,如廣告被 加載前,被加載后,該廣告是否加載失敗,或發(fā)生其他事件的通知。您可以選擇根據(jù)您的具體情況對這些事件做出反應(yīng)。例如,如果廣告加載失敗,您可以在應(yīng)用程 序中顯示自定義的條幅或創(chuàng)建一個布局,等其它的內(nèi)容來填滿屏幕。