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