最近項(xiàng)目需求梭姓,需要接入華為的廣告及分析SDK仪搔,結(jié)果華為沒(méi)有封裝UNITY的插件忧换,所以需要手動(dòng)進(jìn)行相關(guān)封裝恬惯。這里面的坑實(shí)在過(guò)多,所以寫(xiě)了這篇文章分享給大家亚茬,我遇到過(guò)的坑希望能幫大家解決一下酪耳。
Ads-Lite的封裝
1.主要封裝工具:Android Studio
首先貼一下他們的文檔吧:https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/ads-sdk-version-update-v3
我在進(jìn)行封裝時(shí),參考的是IronSource以及AdTiming在UNITY層進(jìn)行的封裝方法碗暗。他們的封裝確實(shí)十分優(yōu)秀,一套流程接下來(lái)絕對(duì)能夠?qū)NITY與Android層的交互有更加深刻的理解言疗。
由于我們的項(xiàng)目需要的是Banner颂砸、Interstitial以及RewardAd 這幾種廣告洲守,所以接入的是Ads-lite,關(guān)于庫(kù)及依賴的引入可以根據(jù)他們的文檔來(lái)操作沾凄。需要注意的是需要自定義Activity以實(shí)現(xiàn)Unity的調(diào)用梗醇。BridgeActiviy類將作為我們的主線程存在撒蟀,需要注意的是在調(diào)用廣告在layer層AddView的一切操作都需要在主線程中進(jìn)行,網(wǎng)上有很多關(guān)于這部分的內(nèi)容保屯,我是通過(guò)Handler來(lái)傳遞參數(shù)實(shí)現(xiàn)的手负。
華為廣告的初始話方法不需要傳遞AppKey這些參數(shù),只需要根據(jù)當(dāng)前的Context來(lái)進(jìn)行初始化即可姑尺,所以可以在onCreate函數(shù)中竟终,我們獲取當(dāng)前Context來(lái)進(jìn)行廣告模塊的初始化
此時(shí)我們新建一個(gè)HuaWeiBridge.java的類來(lái)實(shí)現(xiàn)其廣告加載以及回調(diào)函數(shù)等相關(guān)方法统捶,這部分內(nèi)容相對(duì)比較流程化,比較關(guān)鍵的只有一個(gè)函數(shù)回調(diào)以及出現(xiàn)錯(cuò)誤時(shí)的相關(guān)方法設(shè)計(jì)喘鸟。
Ads-Lite的封裝在理解UNITY與Android層的交互過(guò)后還是相對(duì)比較容易進(jìn)行封裝的驻右。
但是,坑爹的是如果想上架華為堪夭,必須接入華為高級(jí)分析服務(wù)拣凹。
Analytics封裝
打點(diǎn)的方法還是比較好接的恨豁,畢竟只發(fā)送數(shù)據(jù)。需要注意的是初始化必須放在主線程圣絮,另外雕旨!Analytics的依賴是在華為HMS-Core,需要在App加載時(shí)手動(dòng)讀取一個(gè)叫做AgConnect-services.json的文件,如果是純Android開(kāi)發(fā)這個(gè)比較好解決棒搜,但是活箕!如果是Unity的話,現(xiàn)在我們又必須自定義Application去替代Unity的默認(rèn)Application育韩。這個(gè)我查了很久不確定是否能進(jìn)行自定義,嘗試了一下發(fā)現(xiàn)可以埃叭,最后我會(huì)貼出Unity工程中的manifest文件中需要替換的部分
這里我貼出整個(gè)方法:
Android基本搞定之后,就是Unity這邊的操作了壁袄,gradle文件按照需求解析配置即可,主要是AndroidManifest文件需要更改幾個(gè)地方:
再填個(gè)坑涩僻,華為廣告的主要業(yè)務(wù)在歐洲栈顷,歐洲對(duì)于廣告的推送有一個(gè)限制是部分區(qū)域需要向玩家展示協(xié)議并獲取其同意與否,而且要允許玩家可以隨時(shí)查看協(xié)議并重新確認(rèn)取消與否妨蛹。這部分本身是放在了高級(jí)設(shè)置中,本身并沒(méi)有要求是必須項(xiàng)狠半,但是就像我說(shuō)的噩死,華為廣告的主要業(yè)務(wù)區(qū)域在歐洲神年,所以,不接不行......另外這個(gè)東西也是巨坑無(wú)比:
1.因?yàn)槿A為并沒(méi)有提供標(biāo)準(zhǔn)化的展示界面以及展示內(nèi)容推送垛耳,所以所有UI界面是需要重新拼的,跳轉(zhuǎn)邏輯也需要自定義堂鲜。
2.這部分內(nèi)容也直接影響廣告推送的內(nèi)容护奈,所以邏輯上是與廣告SDK緊密聯(lián)系的。
需要指出來(lái)的一點(diǎn)是霉旗,他們的文檔里這部分:
最近被華為折磨的十分痛苦鸵闪,隨手把遇到的坑先記了下來(lái),之后再有什么我再補(bǔ)充