Android开发-在Android应用里嵌入腾讯广告联盟进行盈利实现
前 言
對于個人開發者來說,獨立開發一款基于網絡App并且上線提供用戶下載使用是需要花錢購買服務器的。而且當用戶的并發量比較大時開發者所花費的維護應用的費用就越高,這時,個人開發者需要在應用里嵌入廣告來進行盈利才能賺回維護應用使用的成本。而在Android開發領域,有Google的子公司AdMob的廣告可以在Android系統里進行投放。不過國外的廣告不是很適合國內的環境,而國內的騰訊廣告聯盟做的比較專業一點。那么,如何在Android應用里嵌入騰訊廣告聯盟進行盈利實現呢?
嵌入廣告前準備
- 首先訪問騰訊廣告聯盟(http://e.qq.com/dev/index.html)官網,并注冊認證成為開發者。
- 新建媒體和廣告位
當通過對個人信息審核后,開發者可以進入騰訊廣告聯盟的后臺添加廣告。首先開發者需要進入管理界面,然后點擊新建媒體按鈕,開發者就可以根據提示填寫相應的信息。
填寫完相應的信息然后點擊“創建”按鈕提交到騰訊廣告聯盟后臺進行審核,一般審核時間在三個工作日左右。(注意:提交要嵌入廣告的應用的必須是以及在應用商店已上線的應用,否則騰訊廣告聯盟那邊審核時不給通過的)
審核通過后,在媒體管理界面查看新建媒體的狀態。首先要輸入廣告位的名稱,然后選擇廣告位的類型。騰訊廣告聯盟支持原生廣告、Banner廣告、開屏廣告和插屏廣告這四種廣告類型,具體每種廣告類型的區別開發者以及查看廣告聯盟那邊給的開發文檔說明。
然后開發者進入廣告位管理界面,我們這里新建開屏廣告和Banner廣告位。其中,開發者需要把應用ID和廣告位ID記住,到時候在Android項目里會用到的。
廣告位SDK嵌入
- 步驟1:添加SDK到工程中
請在工程文件根目錄下創建一個名為 libs 的子目錄,并將廣點通 SDK 的 JAR 包拷貝到 libs 目錄下。 - 步驟2: 修改AndroidManifest.xml文件
添加權限聲明:
接入任意廣告(Banner、開屏、插屏、原生)都需要在XML中添加以下聲明:
<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" />目前支持的SDK版本,最低到API 9(即Android 2.3):
如果您打包App時的targetSdkVersion >= 23:請在先獲取到SDK要求的所有權限,然后再調用SDK的廣告接口。否則廣點通SDK將無法工作,我們建議您在App啟動時就去獲取廣點通SDK需要的權限,GDTUnionDemo工程中的SplashActivity也提供了基本的權限處理示例代碼供開發者參考。
如果您打包App時的targetSdkVersion >= 24:除了需要處理好權限申請以外,還需要處理好文件訪問的兼容性,詳細說明見本文檔第6章的注意事項。
在Android項目代碼接入廣告位的代碼
- 開屏廣告接入代碼示例
開屏廣告主要API
com.qq.e.ads.splash.SplashAD:
| SplashAD(Activity activity, ViewGroup adContainer, String appId, String posId,SplashADListener adListener) | 構造方法,調用后開屏廣告會嘗試加載廣告,并將廣告內容填充到adContainer參數指向的ViewGroup,該ViewGroup原有的內容會被清空。廣告相關狀態會通過adListener通知開發者。參數說明:activity(展示廣告的activity)、adContainer(展示廣告的大容器)、appId(應用ID)、posId(廣告位ID)、adListener(廣告狀態監聽器)。 |
| SplashAD(Activity activity, ViewGroup adContainer, String appId, String posId,SplashADListener adListener, int fetchDelay) | 構造方法,這個方法可以通過傳入fetchDelay參數,設置開屏廣告從請求到展示所花的最大時長(并不是指廣告曝光時長),取值范圍為[3000, 5000]ms。如果需要使用默認值,可以調用上一個構造方法,或者給fetchDelay設為0。 |
| SplashAD(Activity activity, ViewGroup adContainer, View skipContainer, String appId, String posId,SplashADListener adListener, int fetchDelay) | 構造方法,這個方法可以通過傳入傳入skipContainer參數,支持開發者自定義的跳過按鈕。SDK要求skipContainer一定在傳入后要處于VISIBLE狀態,且其寬高都不得小于3x3dp。如果需要使用SDK默認的跳過按鈕,可以選擇上面兩個構造方法。 |
com.qq.e.ads.splash.SplashADListener:
開屏廣告回調接口
| onNoAD(AdError error) | 廣告加載失敗,error對象包含了錯誤碼和錯誤信息 |
| onADDismissed() | 廣告關閉時調用,可能是用戶關閉或者展示時間到。此時一般需要跳過開屏的Activity,進入應用內容頁面 |
| onADPresent() | 廣告成功展示時調用,成功展示不等于滿足計費條件(如展示時長尚未滿足) |
| onADClicked() | 廣告被點擊時調用,不代表滿足計費條件(如點擊時網絡異常) |
| onADTick(long millisUntilFinished) | 倒計時回調,返回廣告還將被展示的剩余時間,單位是ms |
接入注意事項
1.開屏廣告支持開發者自定義跳過View的樣式,但要求開發者傳入的跳過按鈕參數skipContainer必須處于可見狀態,且寬高都要大于等于3x3dp,注意sdk會處理skipContainer的點擊事件,開發者不可以對其綁定OnClickListener。具體接入代碼請參考GDTUnionDemo工程里面的SplashActivity代碼及其相關xml文件。
2.開屏廣告支持回調廣告展示的倒計時,開發者可以根據自己的需求設計倒計時View的樣式,并可以決定什么時機顯示倒計時。
- Banner廣告接入代碼示例
Banner廣告主要API
com.qq.e.ads.banner.BannerView:
BannerView繼承自Android View類,需要容器提供50dp的高度用于展示Banner廣告,寬度Banner廣告會自適應,但要求不少于300dp。
| BannerView(Activity act, ADSize adSize,String APPID,String PosID) | 構造函數 |
| setRefresh(int refresh) | 設置刷新頻率,為0或30~120之間的數字,單位為s,0標識不自動輪播,默認30S |
| setADListener(BannerADListener adListener) | 設置狀態回調函數 |
| setShowClose(boolean showClose) | 設置是否展示關閉按鈕,默認不展示 |
| loadAD() | 加載廣告 |
| destroy() | 當不需要展示Banner時用于主動釋放Banner廣告資源,調用后實例銷毀,不可以再調用 |
com.qq.e.ads.banner.BannerADListener:
Banner廣告回調接口,對于大部分開發者只需要關注其中少量的方法,可以繼承抽象類AbstractBannerADListener。
| onADReceiv() | 廣告加載成功回調,表示廣告相關的資源已經加載完畢,Ready To Show |
| onNoAD(AdError error) | 廣告加載失敗,error對象包含了錯誤碼和錯誤信息 |
| onADExposure() | 當廣告曝光時發起的回調 |
| onADClicked() | 當廣告點擊時發起的回調,由于點擊去重等原因可能和聯盟平臺最終的統計數據有差異 |
| onADClosed() | 當廣告關閉時調用,只有在使用了Banner廣告自身的關閉按鈕時生效 |
| onADOpenOverlay() | 當廣告打開浮層時調用,如打開內置瀏覽器、內容展示浮層,一般發生在點擊之后 |
| onADCloseOverlay() | 浮層關閉時調用 |
| onADLeftApplication() | 由于廣告點擊離開APP時調用 |
com.qq.e.ads.banner.ADSize:
廣告尺寸枚舉,目前只有一個值Banner
com.qq.e.ads.banner.AbstractBannerADListener:
廣告狀態回調接口的抽象類,實現了大部分普通開發者無需關心的方法
- 注意事項
targetSDKVersion >= 24時的文件訪問兼容處理 如果您打包時的targetSDKVersion >= 24,為了讓SDK能夠正常下載、安裝App類廣告,必須按照下面的三個步驟做兼容性處理。注意:如果您的targetSDKVersion < 24,不需要做這個兼容處理。
(1)在AndroidManifest.xml中的Application標簽中添加provider標簽,接入代碼如下所示:
<applicationandroid:allowBackup="true"android:icon="@drawable/gdticon"android:label="@string/app_name"android:theme="@style/AppTheme"><!-- targetSDKVersion >= 24時才需要添加這個provider。provider的authorities屬性的值為${applicationId}.fileprovider,請開發者根據自己的${applicationId}來設置這個值 --><providerandroid:name="android.support.v4.content.FileProvider"android:authorities="${applicationId}.fileprovider"android:exported="false"android:grantUriPermissions="true"><meta-dataandroid:name="android.support.FILE_PROVIDER_PATHS"android:resource="@xml/gdt_file_path" /></provider><!-- 聲明SDK所需要的組件 --><serviceandroid:name="com.qq.e.comm.DownloadService"android:exported="false"/><!-- 請開發者注意字母的大小寫,ADActivity,而不是AdActivity --><activityandroid:name="com.qq.e.ads.ADActivity"android:configChanges="keyboard|keyboardHidden|orientation|screenSize"/>... ... </application>需要注意的是provider的authorities值為{applicationId}.fileprovider,對于每一個開發者而言,這個值都是不同的,{applicationId}在代碼中和Context.getPackageName()值相等,是應用的唯一id。例如GDTUnionDemo示例工程中的applicationId為"com.qq.e.union.demo"。
(2)在項目結構下的res目錄下添加一個xml文件夾,再新建一個gdt_file_path.xml的文件,文件內容如下:
<paths xmlns:android="http://schemas.android.com/apk/res/android"><!-- 這個下載路徑不可以修改,必須是GDTDOWNLOAD --><external-path name="gdt_sdk_download_path" path="GDTDOWNLOAD" /> </paths>項目運行截圖
開屏廣告
Banner廣告
———————— The end ————————
如果您覺得這篇博客寫的比較好的話,贊賞一杯咖啡吧~~
總結
以上是生活随笔為你收集整理的Android开发-在Android应用里嵌入腾讯广告联盟进行盈利实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java csv 双引号_你知道csv中
- 下一篇: 基于Paddle Lite在Androi