如何试用Teamtalk iOS端源码
什么是Teamtalk?
首先,我想向Teamtalk开源团队致敬,感谢你们的开源精神!致敬!
什么是Teamtalk?Teamtalk是蘑菇街开源的一套即时通讯系统。通俗的说,就是可以拿它来做即时通讯,而且跨平台做的比较好。
为什么写这篇文章?
因为,在使用过程中遇到很多麻烦。踩着坑过来,现在我是来填坑的。希望帮助到一些人,能让大家按照修改,快速用起来。不过还是希望官方能够处理掉啊,毕竟也算是大公司了。
怎么用?
首先,下载Teamtalk
开源代码。
Github下载地址:https://github.com/mogujie/TeamTalk
iOS端代码在TeamTalk-master/ios
目录下。进入这个目录,先执行下
1 | $ pod update |
没安装CocoaPods
的同学需要先装下。
然后,打开项目。注意,此时项目是跑不起来的。
首先,需要注释掉AppDelegate.m
里面的以下引用:
1 | //#import <Fabric/Fabric.h> |
以及以下代码
1 | // [Fabric with:@[CrashlyticsKit]]; |
因为,我们不需要这些。不得不吐槽下iOS
代码,需要各种改才能跑起来。
仅仅做了上面的工作,你会发现项目还是运行不起来的。报错信息:
ld: warning: directory not found for option ‘-L/Users/zcx/Downloads/TeamTalk-master/ios/TeamTalk/Exist/MobClick’
ld: framework not found Fabric
clang: error: linker command failed with exit code 1 (use -v to see invocation)
信息显示是跟Fabric
这个库有关。
在Linked Frameworks and Libraries
下面找到Fabric.framework
和Crashlytics.framework
,将这个两个framework删掉。
然后,继续报错。
…/Library/Developer/Xcode/DerivedData/TeamTalk-clkdsersjrkmjkgcqvhwkdgktpoc/Build/Intermediates/TeamTalk.build/Debug-iphonesimulator/TeamTalk.build/Script-817CB3AD1B3BC68D0004AFEA.sh: line 2: ./Fabric.framework/run: No such file or directory
此错误信息还是跟Fabric
有关,不过这时候可以看到一个单词Script
。于是去Build Phases
下找了下,发现Run Script
有以下脚本:
1 | ./Fabric.framework/run c85ad901eb0173a488b631e90f5913415f7424d1 bcd847cf6b15b2605cfff9400a4da335ce5ea3a0ac481dd143db404b55a09e73 |
将其删除。
另外,Info.plist
文件里面包含一个Fabric
字典,这个也可以删除掉,不过删不删没啥影响。
到此,项目就可以正常的运行起来了,运行起来的坑算是解决了。不过,要想用好这些东西,后面的坑还多着呢。
如果你搭建好了Teamtalk
服务器。
回到iOS
端代码,注释掉以下代码:
1 | // userName = @"铸剑"; |
偷懒也不带这样的吧,可以给输入框赋默认值啊。提交代码更不该这么做吧,很多人会看你写的东西呢。
然后,修改
1 | #define SERVER_ADDR @"http://61.153.100.221:8080/msg_server" |
这个宏,换成你自己配的。
再然后,进到LoginAPI.m
这个文件,将if (loginResult != 0)
改成if (loginResult == 0)
或者直接去掉这个判断直接交给外界处理,这个错误怎么说呢… 完全就不想你看到登录成功呀!!!
另外,给result
字典添加键值@"code":@(loginResult)
,如下
1 | result = @{@"serverTime":@(serverTime), |
后面明明用到了code
,你却不传给我…
处理到这里,基本可以登录上了。如果不行,看看服务端配的是否正确。另外,登录账号输入框提示写的内网花名,实际却是真名…
另外,你需要将bubble.bundle
添加到项目中,否则文本和语音会崩。这个文件在Resource/Bundle
目录下面,拖到项目中即可。
开启日志打印:
1 | #define NEED_OUTPUT_LOG 1 |
小结
看完文章,想必大家也看到了很多的问题。不过代码还是值得研究的,熟悉了底层通讯、PB的使用、如何在客户端增加接口等,你就可以开始彻底的改造源码了。
原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0