## Android應用開發-小巫CSDN博客客戶端之嵌入有米廣告
上一篇博客給大家介紹如何集成友盟社會化組件,本篇繼續帶來干貨,教大家如何嵌入廣告到應用中去。小巫自稱專業對接30年,熟悉各大渠道SDK的接入和使用,除非渠道提供的SDK很坑,不然只需要不到半個小時的時間就可以把SDK接入到應用當中。關于廣告,是開發者比較關注的話題,為什么要嵌入廣告呢,自然是為了為自己的辛苦勞作得到些許額外的收益,因為在國內除非做IOS付費軟件,不然在Android平臺下做收費軟件是很難獲得收益的,用戶只想用看起來好用并且免費的東西,嵌入廣告是唯一能行得通的辦法,只要不會太離譜就行。
廣告服務商很多,比如有米、點金、多盟、廣點通等等,開發者可以選擇口碑比較好,能為開發者帶來較好的收益的廣告渠道。
筆者這里選擇了有米作為實驗點,提供一個參考給大家,廢話不多說,先來看看小巫CSDN博客客戶端現在的收益:

有木有看到收入啊,囧,很抱歉這點收入,小巫這個客戶端的廣告隱藏得很深,用戶也不是很多,所以就暫時就只有這點啦。
同樣的,下面是有米廣告的集成過程:
到有米廣告官網注冊帳號,在管理中心創建應用獲取到發布ID和應用密鑰:

創建完應用之后,下載SDK并且解壓縮,得到如下文件夾和文件:

demo對應相應的示例項目,開發者可以通過這些示例項目,可以快速實現集成SDK。
doc對應開發文檔
libs對應集成時需要的庫
說實在集成SDK并沒有什么技術含量,只要你按照渠道提供的開發文檔,自己試一遍,基本上就沒有什么疑惑了。
有米給我們提供了以下幾種廣告類型:
- 廣告條,也稱橫幅
- 插屏廣告
- 積分墻廣告
然而橫幅廣告有兩種形式,一種是以XML形式布局,另一種是以代碼形式布局。
配置有米權限:
~~~
<!-- 有米廣告配置權限 -->
<!-- 配置權限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.GET_TASKS" />
<!-- 以下為可選權限 -->
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
~~~
有米必要的配置:
~~~
<!-- 有米廣告必須添加的組件 -->
<!-- 添加必須的組件 -->
<activity
android:name="net.youmi.android.AdBrowser"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:theme="@android:style/Theme.Light.NoTitleBar" >
</activity>
<service
android:name="net.youmi.android.AdService"
android:exported="false" >
</service>
<receiver android:name="net.youmi.android.AdReceiver" >
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED" />
<data android:scheme="package" />
</intent-filter>
</receiver>
<!-- 有米渠道號(可選配置) 渠道號不能帶空格,類型為整數 -->
<meta-data
android:name="YOUMI_CHANNEL"
android:value="0" >
</meta-data>
~~~
有米廣告初始化:
~~~
// 初始化應用的發布 ID 和密鑰,以及設置測試模式
AdManager.getInstance(this).init("您的應用發布ID", "您的應用密鑰", false);
~~~
小巫的博客客戶端至集成了廣告條和插屏廣告,效果如下:

代碼中的實現:
~~~
/**
* 初始化廣告
*
* @param view
*/
public void initAd(View view) {
// 初始化接口,應用啟動的時候調用
// 參數:appId, appSecret, 調試模式
AdManager.getInstance(getActivity()).init("8df70b90ebf86823",
"b7659d08439c052b", false);
// // 廣告條接口調用(適用于應用)
// // 將廣告條adView添加到需要展示的layout控件中
// LinearLayout adLayout = (LinearLayout)
// view.findViewById(R.id.adLayout);
// AdView adView = new AdView(getActivity(), AdSize.FIT_SCREEN);
// adLayout.addView(adView);
// 普通布局,適用于應用
// 獲取要嵌入迷你廣告條的布局
RelativeLayout adLayout = (RelativeLayout) view
.findViewById(R.id.adLayout);
// demo 1 迷你Banner : 寬滿屏,高32dp
DiyBanner banner = new DiyBanner(getActivity(),
DiyAdSize.SIZE_MATCH_SCREENx32);// 傳入高度為32dp的AdSize來定義迷你Banner
// demo 2 迷你Banner : 寬320dp,高32dp
// DiyBanner banner = new DiyBanner(this,
// DiyAdSize.SIZE_320x32);//傳入高度為32dp的AdSize來定義迷你Banner
// 將積分Banner加入到布局中
adLayout.addView(banner);
// 監聽廣告條接口
// adView.setAdListener(new AdViewListener() {
//
// @Override
// public void onSwitchedAd(AdView arg0) {
// Log.i("YoumiAdDemo", "廣告條切換");
// }
//
// @Override
// public void onReceivedAd(AdView arg0) {
// Log.i("YoumiAdDemo", "請求廣告成功");
// }
//
// @Override
// public void onFailedToReceivedAd(AdView arg0) {
// Log.i("YoumiAdDemo", "請求廣告失敗");
// }
// });
// 插播接口調用
// 開發者可以到開發者后臺設置展示頻率,需要到開發者后臺設置頁面(詳細信息->業務信息->無積分廣告業務->高級設置)
// 自4.03版本增加云控制是否開啟防誤點功能,需要到開發者后臺設置頁面(詳細信息->業務信息->無積分廣告業務->高級設置)
// 加載插播資源
SpotManager.getInstance(getActivity()).loadSpotAds();
// 設置展示超時時間,加載超時則不展示廣告,默認0,代表不設置超時時間
SpotManager.getInstance(getActivity()).setSpotTimeout(5000);// 設置5秒
SpotManager.getInstance(getActivity()).setShowInterval(20);// 設置20秒的顯示時間間隔
// 如需要使用自動關閉插屏功能,請取消注釋下面方法
SpotManager.getInstance(getActivity()).setAutoCloseSpot(true);// 設置自動關閉插屏開關
SpotManager.getInstance(getActivity()).setCloseTime(6000); // 設置關閉插屏時間
}
~~~
展示插屏廣告的代碼:
~~~
// 展示插播廣告,可以不調用loadSpot獨立使用
SpotManager.getInstance(getActivity()).showSpotAds(getActivity(),
new SpotDialogListener() {
@Override
public void onShowSuccess() {
Log.i("YoumiAdDemo", "展示成功");
}
@Override
public void onShowFailed() {
Log.i("YoumiAdDemo", "展示失敗");
}
});
~~~
聲明周期中的插屏廣告的處理:
~~~
@Override
public void onStop() {
// 如果不調用此方法,則按home鍵的時候會出現圖標無法顯示的情況。
SpotManager.getInstance(getActivity()).disMiss(false);
super.onStop();
}
@Override
public void onDestroy() {
// 取消注冊監聽
SpotManager.getInstance(getActivity()).unregisterSceenReceiver();
super.onDestroy();
}
~~~
以上就是關于嵌入有米廣告的過程,如何長正式產生收益呢,需要應用審核通過呈運行狀態,就開始計費了。只要你的應用做得足夠吸引人,我想用戶也不介意多點幾下作為匯報,看看Flappy Bird就是一個很好的例子了。

下一篇博文預告是,如何用ListView呈現文章詳細內容,謝謝朋友們的耐心閱讀,你的支持是小巫的無限動力。