最近筆者須要爲一款海外 APP 集成 Facebook 廣告 SDK,原本想着集成 SDK 這麼簡單的事情,又是 Facebook 這樣的大廠,有示例有文檔,應該再簡單不過了。沒想到,集成過程當中仍是踩了很多坑,並且網上提到的有效的解決辦法極少,因此這裏筆者將集成時遇到的坑和解決過程分享出來。bash
Facebook Audience Network SDK 的開發文檔十分詳細,整個集成過程和對於各類類型的廣告介紹比較全面,並且有提供對應的 Demo,對於開發者將 SDK 集成到 APP 中,十分友好。 可是,集成時仍是有幾個須要注意的點,主要是在調試廣告展現這一階段。 具體的廣告集成參考文檔和 Demo 通常均可以順利集成,這裏就很少講。下面我分享一下集成過程當中幾個阻塞集成進度的坑。如下內容主要針對 Android 設備,固然 iOS 集成時也能夠參考。app
Facebook 的廣告須要展現廣告的手機上安裝有 Facebook 和 Google Play 商店的應用,而且登錄 Facebook 賬號,才能在集成廣告 SDK 的 APP 上展現 Facebook 廣告。因此,沒法展現 Facebook 廣告的小夥伴,能夠先查看一下手機上有沒有安裝 Facebook 的 APP。測試
若是在測試廣告時,你在 Facebook 的 APP 上登錄的是一個新的賬號,那麼有極大可能沒法顯示廣告。這是由於 Facebook 不知道新用戶的廣告興趣,因此不會對沒有活躍度的用戶推送廣告內容。spa
測試廣告顯示有好幾種方式,不一樣方式的廣告顯示有不一樣的特色。筆者作了總結,在下面歸爲一個大點來寫。調試
這一種方法須要已經在 Facebook Audience Network 申請了廣告版本,拿到 Placement Id。經過這種方式須要根據改動修改客戶端的代碼,因此不是很方便,可是快捷。重要的是,這種方式只能看到 Facebook 的測試用的廣告。code
在廣告展現前添加 AdSettings.addTestDevice(String deviceIdHash)這段代碼,廣告 SDK 會經過 Placement Id 設置的廣告類型返回測試用廣告。那麼這個 deviceIdHash 從哪裏來呢?在未添加這段代碼前展現廣告,在 log 中會顯示視頻
When testing your app with Facebook's ad units you must specify the device hashed ID to ensure the delivery of test ads, add the following code before loading an ad: AdSettings.addTestDevice("caa50f99-1852-4e4d-a730-160ea59e4d1b"); 複製代碼
只要將log中的代碼 AdSettings.addTestDevice("caa50f99-1852-4e4d-a730-160ea59e4d1b")
複製粘貼便可。ci
在你的 Placement Id 前添加測試廣告類型,格式爲 TEST_AD_TYPE#YOUR_PLACEMENT_ID。Fackbook 提供了11種測試廣告類型,這個能夠自行在官方文檔中查找。這種方式也只會返回測試用的廣告。開發
AAID,即 Google Advertising ID,是谷歌用於標識用戶的廣告 ID。經過這種方式,能夠獲取真實的廣告數據。 可是在調試的時候會發現,展現的廣告並不受在廣告控制檯中的設置的限制,例如在控制檯設置僅顯示原生視頻廣告,實際返回廣告內容時還會包含輪播廣告和圖文廣告。因此,這種方式獲取的廣告不受控制檯的設置限制,若是想要獲取特定條件的廣告,還須要下面這種方式。文檔
在後臺中將 Facebook 賬戶添加爲測試賬戶,並在手機的 Fackbook APP 上登錄該賬戶,即可以根據控制檯設置獲取想要的廣告內容。 不過,這種方式在 Android 設備上有個隱藏的坑。在一頓操做後,你會發現 APP 上獲取廣告時返回1001的狀態碼,No Fill 的狀態信息,意思是該廣告位未填寫。 從頭至尾檢查後發現賬戶是有活躍的賬戶,各類配置沒問題,就是顯示不出廣告。這時候,須要退出 Facebook 賬戶,前往設置重置 AAID,再登錄 Facebook。經過這一步驟,再請求時就能夠收到廣告。若是操做一次不可行的話,須要這樣多重複幾回。
以上是筆者在集成 Facebook 廣告 SDK 時遇到的問題,主要集中在調試廣告顯示在這一方面,可能會對剛集成 Facebook 廣告 SDK 的小夥伴比較有幫助。