在App中加入AdMob廣告-入門介紹與編程技巧

來源:簡(jiǎn)書
作者:KyXu
時(shí)間:2020-06-30
2542
雖然在App中加入廣告來盈利是比較低級(jí)的商業(yè)化方式,但對(duì)于個(gè)人開發(fā)者或者小團(tuán)隊(duì)開發(fā)者來說,做出一個(gè)簡(jiǎn)單易用的免費(fèi)小工具,在里面加入一些廣告,如果用的人多,也是可以帶來一些可觀的收入的。

<前言>

雖然在App中加入廣告來盈利是比較低級(jí)的商業(yè)化方式,但對(duì)于個(gè)人開發(fā)者或者小團(tuán)隊(duì)開發(fā)者來說,做出一個(gè)簡(jiǎn)單易用的免費(fèi)小工具(舉個(gè)栗子),在里面加入一些廣告,如果用的人多,也是可以帶來一些可觀的收入的。用戶沒有掏錢,得到了方便,開發(fā)者也得到了回報(bào):)

我個(gè)人出于對(duì)金錢的考慮和對(duì)Google的信任,選擇了AdMob這個(gè)平臺(tái)來在App中投放廣告(https://apps.admob.com訪問需要搭梯子,梯子為SS的用戶最好全局代理,自動(dòng)代理的話訪問起來會(huì)很卡)。

就目前來看,我果還是不太擅長(zhǎng)移動(dòng)App廣告這一塊,所以不推薦大家用iAd(好像現(xiàn)在還是不支持中國大陸?聽說前一陣子Apple解散了有一百來人的iAd部門?)國內(nèi)的一些其他平臺(tái)也是有所聽說,但是沒有嘗試,如果大家知道有什么其他的好的可以在移動(dòng)App上投放廣告的平臺(tái),也歡迎評(píng)論,一起交流~

<流程>

1.首先,你要有一個(gè)Google賬號(hào),登錄AdMob

2.進(jìn)去之后,點(diǎn)網(wǎng)站右上角的設(shè)置按鈕,把各種資料該填的都填了,什么電話、郵箱、地址之類的。

251884-004eaaf9fe473aa3.jpg

AdMob網(wǎng)站截圖

注意,地址要填真實(shí)地址,在Google給你匯款之前,他要給你郵寄一封實(shí)體信件,上面有一個(gè)PIN碼,你要把這個(gè)PIN碼輸入到AdMob網(wǎng)站上的相應(yīng)位置,Google才會(huì)開始你給你匯款。我現(xiàn)在已經(jīng)驗(yàn)證過身份了,沒辦法截圖,好在這個(gè)網(wǎng)站也不復(fù)雜,就那么幾個(gè)頁面。要做好收不到這個(gè)信件的準(zhǔn)備(包括我在內(nèi)的國內(nèi)N多開發(fā)者都收不到這個(gè)信件,不知道是不是郵政的問題),如果1個(gè)月沒有收到這個(gè)信件,可以再次申請(qǐng)讓Google郵寄信件,總共有3次機(jī)會(huì),3個(gè)月以后,還沒收到信件,可以上傳身份證照片(我就是這樣),然后Google會(huì)以極速(我當(dāng)時(shí)是幾個(gè)小時(shí))通過這個(gè)請(qǐng)求。不過畢竟等了三個(gè)月,如果你第一次就準(zhǔn)確無誤地填了地址,運(yùn)氣又很好的話,可以1個(gè)月內(nèi)就讓Google準(zhǔn)備給你付款。付款規(guī)則是每個(gè)月進(jìn)行一次統(tǒng)計(jì),如果到了100美金,就匯款,否則計(jì)入下個(gè)月,直到攢夠100美金,匯款時(shí)間是下個(gè)月的21號(hào)。比如你1月賺了30刀,2月就不會(huì)收到錢,2月賺了110刀,3月的21號(hào)Google會(huì)把你賺到的總共140刀都匯款給你。

3.接下來的過程就不贅述了,無非是去AdMob里面添加個(gè)應(yīng)用,拿到一個(gè)類似 app-key 的識(shí)別碼(AdMob里面叫ca-app-pub,每個(gè)廣告對(duì)應(yīng)一個(gè)識(shí)別碼,一個(gè)App可以加入多個(gè)橫幅式廣告或插頁式廣告,一個(gè)App可以對(duì)應(yīng)多個(gè)識(shí)別碼),把 GoogleMobileAds.framework 下載下來,看一下人家的示例代碼,就集成到App了。

<橫幅式廣告與插頁式廣告>

開發(fā)者在App中加入廣告時(shí),要極力避免讓用戶感到非常厭煩。如果你的App幫用戶解決了問題,那用戶看看廣告也無所謂,人家解決了手頭的問題才是正事,但是滿屏的廣告不停地彈,那也未免吃相不好,用戶可能一怒之下把App刪掉。

251884-9c11c2c9dad6309e.jpg

左邊為橫幅式廣告 右邊為插頁式廣告

橫幅式廣告的好處在于,雖然占用了用戶一部分屏幕空間,但是只要你不點(diǎn)擊它,它不會(huì)影響用戶的其他操作,只要你的廣告條沒有遮擋任何內(nèi)容,那么這個(gè)橫幅除了礙眼之外,對(duì)用戶使用App基本沒有影響。

而插頁式廣告則是以彈窗的形式出現(xiàn),用戶需要去左上角或者右上角點(diǎn)擊一下關(guān)閉按鈕才行,應(yīng)該說是比橫幅式廣告要更討厭一些(反正我是這么覺得的),應(yīng)該說這是略為嚴(yán)重的打擾了用戶對(duì)App的使用的。但是好處在于,插頁式廣告是以全屏彈出的形式出現(xiàn)的,它不影響你設(shè)計(jì)的App界面的純凈度,讓你有100%的空間來展示你需要布局在UI中的東西,比如你做了一個(gè)UI極簡(jiǎn)的應(yīng)用,整個(gè)App都是純黑+純白的,這時(shí)候加一個(gè)顏色復(fù)雜的橫幅廣告,就很影響觀感。

還有一種情況是你希望你的用戶付費(fèi)來去除廣告,可以是在App中加一個(gè)付費(fèi)去廣告的內(nèi)購,也可以鼓勵(lì)用戶付費(fèi)升級(jí)應(yīng)用到高級(jí)版,這種情況下可以嘗試橫幅式廣告和插頁式廣告都添加。一部分用戶對(duì)你的App有需求,又不想頻頻被廣告打擾,就可以選擇付費(fèi)。不過這種情況下,我們可以認(rèn)為添加廣告的目的之一就是為了去打擾用戶,迫使用戶付費(fèi),所以應(yīng)該適可為止,不要過于頻繁地彈出廣告,這真的挺煩人的。

<展示廣告的代碼技巧>

1.在 UITableView 底部展示橫幅廣告

var admob = GADBannerView()

// 設(shè)置GADBannerView的frame、設(shè)置廣告ID、加載廣告請(qǐng)求

self.tableView.contentInset = UIEdgeInsetsMake( 0, 0, admob.frame.height, 0)

這段代碼的意思是讓 UITableView 的可滾動(dòng)內(nèi)容區(qū)域在底部收縮,收縮長(zhǎng)度為banner廣告條的高度。這樣在用戶一直向上拖拽 UITableView 直到盡頭的時(shí)候,可以讓它的可拖拽區(qū)域比之前大一些,就不至于讓廣告遮擋了 UITableView 的最后幾行。

如果你的 UITableView 是存在于 UITableViewController 中的,那么 UITableView 的 frame 是不可調(diào)節(jié)的,所以通過上面的代碼,我們可以方便地避免廣告遮擋原有的內(nèi)容。而即便你的 UITableView 是存在于 UIViewController 中的,即這個(gè) UITableView 是你自己添加進(jìn)來的,你可以任意調(diào)節(jié) frame,我依然建議你用上面這種方法,而不是直接把 UITableView 的 frame 調(diào)小,來給廣告空出位置。因?yàn)槟愕膹V告并不一定能顯示的出來,可能是用戶把你的廣告屏蔽了,也可能是網(wǎng)絡(luò)狀況不好,這時(shí)候反正你的廣告也顯示不出來,應(yīng)該給用戶更多的屏幕空間來顯示 UITableView 的內(nèi)容。

2.利用定時(shí)器輪詢插頁式廣告加載狀態(tài)

這里不太恰當(dāng)?shù)氖褂昧恕拜喸儭边@個(gè)詞,大家意會(huì)就好。

假如你要彈出一次插頁式廣告,那么Google給出的示例代碼是下面這個(gè)樣子

251884-5d0560a958d5a0aa.jpg

如何創(chuàng)建 GADInterstitial 媒體資源、初始化該資源并隨廣告加載它

251884-89aa27ab2b20a117.jpg

展示插頁式廣告


這里的展示邏輯是:不要打擾用戶玩游戲的過程,在用戶玩游戲的過程中默默地加載廣告,等用戶一次游戲結(jié)束了,如果這時(shí)候廣告加載好了,就把廣告彈出來。

然而實(shí)際情況是,我們的應(yīng)用可能不是游戲,并沒有一個(gè)這么明顯的類似完成了一局游戲這樣的一個(gè)段落結(jié)束的地方。這時(shí)候你可能希望每30秒彈出一次插頁式廣告,然而這個(gè)廣告可能是第40秒才加載好的,這就導(dǎo)致了:雖然你設(shè)置的是30秒顯示一次廣告,但是30s的時(shí)候廣告沒加載好,就沒顯示出來,60s的時(shí)候顯示了40s時(shí)加載的廣告。而更理想的情況是:30s時(shí)沒能加載好廣告,我們就開始輪詢,直到廣告加載好了,也就是40s時(shí),把廣告顯示出來,然后設(shè)定第70s時(shí)展示下一次廣告。

下面給出一段示例代碼,這里的廣告展示邏輯是:每60秒展示一次廣告,如果到了這個(gè)時(shí)刻,廣告沒加載好,就設(shè)置定時(shí)器每3秒查看一次廣告資源是否就緒,直到廣告加載好了,展示廣告,然后設(shè)置60秒后出現(xiàn)下一次廣告。

import UIKit


class ExampleViewController: UIViewController {

    

    // AdMob 插頁廣告

    var adInterstitial = GADInterstitial(adUnitID: "ca-app-pub-xxxx/xxxx")

    // 定時(shí)器

    var timer = NSTimer()

    

    

    override func viewDidLoad() {

        super.viewDidLoad()

        

        // 初始化 AdMob 插頁廣告

        let gadRequest1 = GADRequest()

        self.adInterstitial.loadRequest(gadRequest1)

        self.addTimerToShowAd(3) // 3秒一次輪詢直到第一次展示廣告

    }


    

    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

    }

    

    

    private func addTimerToShowAd( showAdTimeInterval:NSTimeInterval){

        self.timer = NSTimer.scheduledTimerWithTimeInterval( showAdTimeInterval, target: self,

            selector: "showAd", userInfo: nil, repeats: true)

        [NSRunLoop.currentRunLoop().addTimer(self.timer, forMode: NSRunLoopCommonModes)]

    }

    

    

    @objc private func showAd() {

        if self.adInterstitial.isReady {

            // 廣告成功加載,顯示廣告,重置定時(shí)器

            self.adInterstitial.presentFromRootViewController(self)

            self.timer.invalidate()

            self.addTimerToShowAd(60)

        }else {

            // 廣告沒有成功加載,開始3秒一次的快速輪詢

            self.timer.invalidate()

            self.addTimerToShowAd(3)

        }

    }

}

上面的代碼中的關(guān)于定時(shí)器方面的內(nèi)容,就不多做介紹。

立即登錄,閱讀全文
原文鏈接:點(diǎn)擊前往 >
文章來源:簡(jiǎn)書
版權(quán)說明:本文內(nèi)容來自于簡(jiǎn)書,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家