FireBase爬坑记
昨天老大发来一个网页链接,说是要让对接一下一个SDK。跑去一看,是FireBase的,之前没听过,是做统计一类的,听说数据统计还算可以,这里是GitHub上项目地址。既然老大都已经说了,那么就继续往下做吧。
1.导入firebase库
下了一个VPN,跑去看了看文档,还行,上面说步骤不多。那就直接来吧,因为不是使用cocopads直接集成的,那就直接在官网手动下载SDK,然后拖进去。
按照最简单的,直接导入头文件,进行Firebase注册。
Firebase简单使用 打开调试,不需要的时候可以写-noFIRAnalyticsDebugEnabled当然,在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中了。
感谢josh的提问以及Eran Marom提供的回答按照这个步骤来,项目基本上能够正常跑起来,没有什么问题了。
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,到这里一切问题都解决了,就等着老大安排其他任务了。简单的写了一遍自己的爬坑记录,希望能够帮助到大家。