2 In-Band Bytestreams(ibb) 对应的协议是XEP-0047
socks5 Bytestreams方法的优点是效率高,但是跨网段传输时需要一个文件代理。像openfire服务器就自带有文件代理,所以这个容易实现。
同网段传输可以直接连接,一般的实现是发起端建一个socks5服务。实际使用该方法时还需要使用XEP-0095协议来初始化流。XMPPFramework
未包含XEP-0095这个协议的实现,需要自己定义。
In-Band Bytestreams的优点是实现简单,但是效率手激不高。XMPPFramework也没有包含XEP-0047协议的实现。
还有另一个更高级的方毕简袜法 -- Jingle,相关的协议是XEP-0166。该方法是google发明并公布的。该方法目前还未普及,XMPPFramework也没有
包含相应的实现,这是个很大的协议,实现起来应该很有咐兄难度。
如果使用XMPPFramework进行开发,那么对于文件传输最容易实现的方法应该是sock5 Bytestreams。
实现的时候主要就是认真看XEP-0095和XEP-0065这个两个协议文档
两种处理方式1、将获取到的音频尺老文件通过base64加密直接通过xmpp的消息体发送过去,然后解码;2、樱旅通过脊困凳http请求的方式将音频文件上传到服务器,然后将音频文件的下载地址通过xmpp消息体发送过去,另外一个客户端下载。音频文件建议转码为amr,这种格式的音频文件比较小。方法如下:
第一部分 XMPP的下载
首先,得从XMPP的官网下载好对应的XMPP框架,
1. XMPP的官网地址
2.进入官网之后,点击XMPP softWare选择第三个libraries,如下图所示:
3. 点击libraries,进入下面的界面:
4. 然后找到所需要的支持iOS的xmppframework:
点击右边的网站域名,进入到下载界面:
6.点击右下角的下载按迅孙钮,就OK了。
下载完成之后 ,解压之后可以看到一个名为XMPPFramework-master文件夹:
打开之后,可看到如下界面:
这就是XMPP解压之后所包含的东西
第二部分 框架的导入
好了,下载完之后,正式进入XMPP框架的导入;
1. 打开Xcode,新建一个名为:“XMPP框架导入”工程,当然在这里可以任意命名,当然,为了好理解,将它命名为“XMPP框架导入”,接下来就是创建文件夹。点击左下角的“加号”:
2. 选中蓝色条框,之后选择new folder,将其命名为classes,然后点击”add”添加就OK了。
3. 之后按照上述步骤,新建文件夹,次序依次为:classes,lib ,xmpp,建好之后如下图所示:
注意!!亩祥链这三个不是平行的关系,而是包含的关系!!不要添加错了!!
4. 然后在XMPP文件夹下面,还是按照上面的步骤新建一个叫vendor 文件夹,将刚下载下来的XMPP文件夹的vendor拖进去,如图:
注意勾选第一个选项!点击finish即可
5. 每次导入一个文件夹都编译一下,看有没有错误。如果没有红色错误,那就表明没有致命错误,可以继续导入下面的文件。
在导入网络底层框架,实现异步socket网络通讯,其文件夹的名字为:CocoaAsyncSocket,将文件夹CocoaAsyncSocket导入XMPP下,
编译,无误后,便可进行下面 *** 作。
6. 接下来需要导入KissXML框架,该框架用于解析XML,再导入之前,需要做两件事:
一 添加libxml2.dylib框架依赖
选择第二个,单击add即可
二 需要指定如下编译选项:other linker flags 和 Header Search Paths=/usr/include/libxml2
在此基础上,继续添加libidn文件夹到vendor文件夹下,编译一下,看是否通过。没有红色感叹号,则继续。
7. 然后导入以下四个文件夹到xmpp这个文件夹下面去:
之后还必须添加动态库:
选择第二个。然后编译,如果出现下面错误:
说明还没有导入这个头文件,回到下载好的宴塌XMPP文件夹下,找到下面的头文件:
8. 导入到工程的XMPP这个组下,将前面的sample_去掉。如下图
然后编译,如果没有错误,就算完成了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)