android接入facebook原生廣告
最近上班,公司開發國外版本的app,接的全是些國外版本的sdk這些,下面我就來總結一下,記錄一下這幾天踩的坑。
這裡先講facebook接入廣告
第一步先登入facebook的開發者官網去註冊開發者(先註冊一個普通的facebook帳號,然後進入開發者官網之後只需繫結手機號碼就可以了,記得選區號,繫結之後建立自己的第一個app就可以了,其他的資訊自己看著填)
https://developers.facebook.com
第二步就是為自己的app新增廣告的功能,左側點選控制平臺就可以看到很多產品,選擇Audience Network新增就可以了,這個就是廣告新增的時候會讓你選擇型別,這個取決於你,這裡我要接入的是原生廣告,預設就是第一個,原生廣告,然後接下來就會得到一個 版位編號 這個編號就是PLACEMENT_ID,之後要填到你的應用裡面去的,複製下來放好。
然後你會發現下面有讓你填收錢的帳號,這個是肯定的,不過不填也不影響你測試,這裡我暫時沒有填,也可以測試。
第三步,為了讓自己之後能順利的看到效果,第三步還是準備工作,你建立的第一個應用一定沒有上線吧,這就需要用到測試使用者,位置很好找
新增多少個測試使用者就隨便你了,帳號就是郵箱,密碼的話,點選右側的編輯,修改密碼,你才有密碼可用。2333
第四步,接上一步說。在你的手機上面安裝facebook的app,然後登入你的測試使用者,保證的你手機訪問facebook的官網(翻牆),這就可以了。這是facebook給你發放測試廣告的條件。好了,然後真正的進行第四步。開啟facebook提供的接入網站,開始你的準備工作,大概就是建立專案,然後引入sdk什麼的
https://developers.facebook.com/docs/audience-network/android
這個網址已經講的很清楚了。建立好專案新增
這一句就可以了。當然如果你的studio是3.0以上的,會提示你compile已經快過時了。換成implementation就可以了。
第五步,這個時候可以接著看了:
我要接入的是原生廣告,就點這個看了
https://developers.facebook.com/docs/audience-network/android-native
如果你覺得這個網站是全英文的看著很煩躁的話,你可以用谷歌瀏覽器訪問,然後右鍵點選網頁,你懂的。
看程式碼的時候還是需要撤銷翻譯的,不然全是亂的看個錘子。。。不知道撤銷翻譯的快捷建的話
看這兒。點一下收藏旁邊的圖示,可以選擇顯示原網頁。
好了說了這麼多,第五步就是照著這個網頁寫的,把佈局弄下來,把程式碼弄下來,反正都是測試嘛,不存在的直接拿來用就是了。然後跑一下你就會發現怎麼沒拿到呢。
好的,到現在你的程式碼工作就基本完成,是不是感覺自己好像還沒做什麼?不過就是如此簡單的操作,還是有很多坑的。
比如我就是跑了一下沒效果,檢查一下手機有沒有開vpn,因為這兒需要訪問外網。然後檢查一下手機上的facebook有沒有登入你的測試帳號,都搞定的話,我給你說。是那個PLACEMENT_ID出了問題。你測試的時候肯定不是讓你直接用他的這個id哇。
第一個坑PLACEMENT_ID:測試的時候有專門的id格式的:
https://developers.facebook.com/docs/audience-network/testing
這個文件裡有寫返回的各種errorCode是什麼意思,也告訴你應該怎麼去填你那個測試用的ID
這個網頁往下翻,你就看到了這個,他測試的id是有格式的: 格式程式碼#你的ID
原生的格式程式碼就是我標記出來的這個,其他的是什麼視訊的啊,其他雜七雜八的,自己去研究,然後填到應用裡面就應該是這樣的:
好了,這樣你跑出來就有效果了
第二個坑:你會不會覺得facebook 廣告 在方法裡繫結介面的程式碼太多太煩了?
這個是自定義的介面,根據你的app來嘛,當然還有他預設給你介面:
https://developers.facebook.com/docs/audience-network/android/nativeadtemplate
這個地址裡面就寫得很清楚了,其他的程式碼不變
就這個方法裡面的程式碼。看到沒,直接用NativeAdView這個類的render方法可以返回一個view給你,這個就是他給你的介面,你連介面檔案都不用編寫了。直接拿到這個view加到你的介面裡去就可以了
效果就是這樣的,其實還挺美觀的。
第三個坑:如果你是想把廣告加到你的recyclerView裡面的話,或者什麼列表裡面的話,你肯定不滿足於只是獲取到一個廣告吧,怎麼獲取多個廣告呢。這個我在官方網站上面找了一會兒,沒找到,是真的沒找到,可能是我眼神不好吧。。。2333
後來我百度,看到一個部落格裡面有寫怎麼多個訪問:
https://blog.csdn.net/figo0423/article/details/46914423
有一個NativeAdsManager類,這個類可以loadAds(),這下就舒服多了。new的時候在id的後面跟了一個數字,我猜的是請求條數,不過我也測試過了。確實是請求條數。我就請求的5條,我記得好像我在facebook的文件裡面依稀好像記得我看到過一個警告或者建議啥哦,說廣告最多請求5條。也不知道是不是。反正我就請求5條就夠用了。多的條數我也沒去測試。
對了,這裡用nextNativeAd()方法遍歷得到的不是view,是nativeAd,這樣你就可以選擇是自己定義介面好呢。還是用facebook提供的那種介面,反正隨意了。我反正用的官方的。反正也挺好看的。
這裡附上我的程式碼。拿到views之後然後發出去。加到你的列表裡哇,或者什麼的,都可以
最後墨跡一下,你再去請求的時候,NativeAdsManager這個類,你不用再去new了。也不用再去setLisenter了,直接就再次loadAds()就可以了。然後還是一樣的操作。
如果你的列表很長,往下翻的時候,要不斷的加入這個廣告的view的話。你最好是把之前的廣告view給移除,還有就是再次請求的話,之前的nativeAd也需要處理,不然你的記憶體遲早掛掉。
比如這樣的操作。
好了。完