实战是学习一门技术最快的捷径,之前大欢老师视频教学仿映客app的ios教学。但是因为时间比较久,映客应该做过一次改版,按照大欢老师的视频已经没有效果了,所以我就参考着大欢老师的教学视频,再根据最新的接口和界面,新仿了一遍映客app,在这里通常工作中使用到的ios控件效果大部分都有了,非常值得做为学习参考。
特别声明:本代码仅学习使用,如果涉及侵权,可删!
使用git从inke-demo主页下载项目
git clone https://github.com/shawn-tangsc/inke-demo
从终端进入项目Podfile
所在的文件夹,然后执行初始化命令
pod install
播放直播视频和普通视频是稍微有点不同的,ios自带的视频播放是无法播放直播地址的视频,所以要导入bilibili的ijkplayer,由于framework 太大了,所以我就不上传了,可以按照下面路径学习一下,或者到我指定的百度云盘去下载(密码:q1us)。
- 从github上面下载控件
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
- 进入目标文件夹
cd ijkplayer-ios
- 执行两个脚本
./init-ios.sh
./init-ios-openssl.sh
- 进入该文件夹下的ios文件夹
cd ios
- 执行4个脚本
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
./compile-openssl.sh clean
./compile-openssl.sh all
-
再进入该目录下的IJKMediaPlayer目录,双击.xcodeproj文件,然后选择IJKMediaPlayerFrameworkWithSSL,点击run生成IJKMediaPlayerFrameworkWithSSL.framework.
-
将此frameword放到inke-demo文件夹下,或者自行到inke-demo的项目中去改IJKMediaPlayerFrameworkWithSSL.framework的路径
这里使用的是LFLiveKit,但是因为没有合适和直播推流的测试服务器地址,而且抓包映客的直播服务器可以连接,但是不能播放,所以该功能先只做到这里,待以后继续开发。
大欢老师视频教学里面的友盟版本已经比较低了,所以我根据最新的友盟文档完成了第三方登录的功能(因为一些key的原因,我暂时只做了微信登录的功能,其他的根据文档可以自行开发)。 其中,我因为没明白视频里面的sdk集成方式,所以我还是用了传统的pod的方式集成的。
pod 'UMengUShare/UI'
# 集成新浪微博 【友盟官网技术文档这里标点符号有错,导入的时候记得更改】
pod 'UMengUShare/Social/Sina'
# 集成微信
pod 'UMengUShare/Social/WeChat'
# 集成QQ
pod 'UMengUShare/Social/QQ'
如果是真机的话可以使用微信登陆看效果,我也为模拟器登陆做了一个登陆后门,点微博登陆就可以了
双击inke-demo下的.xcworkspace 应该就可以run了。
如果执行的时候在socketIO报错
Swift Compiler Error
SocketIOClient.Swift line 82
private lazy var logType = "SocketIOClient{(nsp)}"
(Cannot use instance member 'nsp' within property initializer; property initializers run before 'self' is available)
SocketEngine.Swift line 199
if let data = Data(base64Encoded: noPrefix, options: .ignoreUnknownCharacters) {
(Value of optional type 'String?' not unwrapped; did you mean to use '!' or '?'?)
SocketEngine.Swift line 663
func setConnected(_ value: Bool) {
(Method 'setConnected' with Objective-C selector 'setConnected:' conflicts with setter for 'connected' with the same Objective-C selector)
是因为你的swift版本过时,需要更新。点击Xcode顶部的Edit => Convert => TO Current Swift Syntas,选择SocketIO.framework,Starscream.framework和你的项目名.framework 然后covert。
用第三方库Socket.IO-Client-Swift 做了一个聊天室,这个聊天室的后台是用nodejs的socket.io搭建的,而且我也已经上传github了。
- 联调
1.启动node服务器
node服务器的启动我已经在node-socket-chat写过了。这里就不再赘述了。
2.修改ip地址
请到 XX/inke-demo/Class/Other/property.plist 修改socketIP就可以了
同样,我做了判断,如果不需要联调后端的,也一样可以看效果。
在开发的时候,我碰到了几个问题,一直没思路,有的还放着未开发,有的想办法绕过去了,如果有大神知道怎么解决,非常感谢能给个思路!可以直接加我qq(344509434),或者直接发我邮箱tangscsh@icloud.com, 非常感谢!!
-
我使用最新版Socket.IO-Client-Swift 13.1.0 版本的时候,怎么都调用不通我后台node的socketio,最后只能退版本绕过去。
-
直播引流的时候,是怎么做到像映客这样,可以分屏(小屏还可拖动)播放的,直播流的源只有一个啊。