昨天老大發來一個網頁鏈接,說是要讓對接一下一個SDK。跑去一看,是FireBase的,之前沒聽過,是做統計一類的,聽說數據統計還算可以,這里是GitHub上項目地址。既然老大都已經說了,那么就繼續往下做吧。
1.導入firebase庫
下了一個VPN,跑去看了看文檔,還行,上面說步驟不多。那就直接來吧,因為不是使用cocopads直接集成的,那就直接在官網手動下載SDK,然后拖進去。
按照最簡單的,直接導入頭文件,進行Firebase注冊。
當然,在Other Linker Setting中添加-ObjC,否則無法正常使用。
2.項目出問題
然后,讓人崩潰的事情就來了,項目報錯了。報錯不可怕,可怕的是我們要去找錯誤,然后更改。好吧,這就是日常生活必須的。
因為項目中集成的有谷歌廣告,而Firebase中也是有谷歌廣告的部分,我最開始想會不會他們之間起沖突。然后把firebase中的谷歌廣告部分的庫給去掉了,然而并沒有什么卵用。
忙活了一陣,也不知道具體在忙啥,然后就到晚上八點半了。暫時住在朋友家里,距離公司差不多有兩個小時左右到路程,沒辦法,只能第二天來了重新搞唄。
3.新建新項目,過流程
今天來了公司,接著搞昨天沒做完的事情。懷疑可能跟之前的項目有沖突,既然這樣的話,那就直接開一個新的空項目,集成sdk。
然后……還是報錯,好吧,你贏了。運行后會說
URL scheme needed for Google Sign-In not included in your app's Info.plist.
這里說info.plist中沒有谷歌登陸的URL scheme,怎么搞?郁悶了半天,看到東門兜的集成Firebase的Analytics功能這篇blog,在這篇文章的第五步中有一個需要添加系統庫:AddressBook.framework、libc++.tbd、libsqlite3.tbd。
好吧,既然需要添加,那就添加進去。錯誤變少了,不過對于之前的錯誤并沒有什么幫助。后來在stack overflow上看到一個類似的問題:Google Sign-In crashes on iOS 9 attempting to call canOpenURL,在其中看到一個人的回答,需要將GoogleService-info.plist文件中的REVERSED_CLIENT_ID對應的value和App的bundle Id添加到URL scheme,好吧,到此為止,終于知道需要添加誰進入scheme中了。
按照這個步驟來,項目基本上能夠正常跑起來,沒有什么問題了。
OK,正常的話,大家到這一步已經結束了。不過,因為我的項目中有一些其他的第三方存在,所以,爬坑的歷程還沒有結束。
4.轉回原項目,解決沖突
我在項目中集成firebase之后,如果不在other link中寫入-ObjC,那么項目不報錯,但是firebase無法真正的集成進去。一旦打開之后,一片錯誤。沒有辦法,只能一點點解決了。
首先,在CSDN上看到了yinxin2745154的博客,在其中介紹的
"_GCControllerDidDisconnectNotification", referenced from:
-[GCControllerConnectionEventHandler observerConnection:disconnection:] in libcocos2dx iOS.a(CCController-iOS.o)
跟我其中一項報錯一致,當我按照步驟將MediaPlayer.framework、GameController.framework添加進項目中后,果然這一條報錯消失了。
但是還是有很多錯誤存在:
Facebook的廣告部分出問題了,該怎么改?問了一下朋友,具體什么原因也不好多做猜測,沒辦法,還是只能靠自己查找答案了。
在CSDN中xiaotian9959的博客看到一篇文章,跟我的報錯類型比較類似。根據他的解決方法,添加了libxml2之后,這些錯誤都沒有了。
5.自己的作死
基本上到這里,大家的問題應該都解決了,剩下的就是我自己的作死了。我在接入極光推送的時候,不知道怎么多拉進來一個.a庫……在這里打開-ObjC之后,發現好多提示重復的東西。解決辦法很簡單,把多余的東西都刪除掉,然后一切OK!
6.集成完畢
OK,到這里一切問題都解決了,就等著老大安排其他任務了。簡單的寫了一遍自己的爬坑記錄,希望能夠幫助到大家。