iOS开发 如何跨系统传输文件 如:茄子快传、快牙
阿神
阿神 2017-04-17 16:07:35
[iOS讨论组]

最近需要做个APP,要实现iOS和Android数据互通(传输文件),实在没有头绪,希望有经验的前辈能给点提示,谢谢.

阿神
阿神

闭关修行中......

全部回复(3)
天蓬老师

0.分析

不管是不是跨平台,利用网络来传输数据,必须先规定好链接方式(网络)和通讯方式(协议)。
按照现在的应用场景,分析,其实需要实现的是一个点对点(P2P)交换数据的功能: 网络发现(两个设备相互找到对方)和文件传输
其实网络通讯传输数据的功能,设计好以后,不管是iOS对Android传输,还是iOS对iOS传输,甚至Android对Android传输,都可以使用一样的技术方案实现,所以不需要强调iOS传输文件给Android。

1.选择链接方式:

iOS和Android上都具备的链接能力,一个是Wifi,一个是蓝牙,还有一个是通讯卡流量。
蓝牙速率太低,传输文件的话一般不推荐选用;流量卡就更不用说了,不但需要服务器中转数据,用户还可能话费高额的流量费!剩下的最高速,方便的方式就是Wifi了。但是实际项目中还得按照需求去选择链接方式。

2.网络发现的基本思路:

我们都知道必须有IP地址才能进行网络通讯,那在网络中互相不知道IP地址的情况下怎么实现通讯呢?
答案是使用UDP的广播功能,他会向局域网中所有主机发送数据包。主机在收到UDP广播的数据包是,包内是附带了发送者的IP的,利用这个原理,就能实现网络发现功能:
所有客户端使用UDP的广播发送特定格式的消息A,消息中包含发送者的一些基本信息(如昵称、用户标示等)。定时发送消息A,对方通过判断规定时间内有没有收到下一个消息A来判断广播者有没有在线。
这样就实现了网络发现的功能了。

3.文件传输:

既然在一个局域网中,知道了对方的IP地址了,就可以给他传输文件了。
首先要做的是通知对方我要发送文件过去了,对方接受的话,就可以使用HTTP、FTP、等标准协议,或者自己定制一种协议来传输文件了。
文件传输需要实现两个部分,一个是发送部分,一个是接收部分,如果不考虑并发的情况,一个客户端同一个时间应该只执行发送部分或者只执行接收部分
1.A发送部分发送一个传输请求
2.B接收部分接收到文件传输请求,询问用户是否需要接收
3.如果B接受文件,A就发送文件数据给B(如果选用HTTP,那就应该是A讲文件下载链接发给B,由B主动下载)

end

里面细节太多就不再深入探讨,方式很多很灵活。上面我提到的实现思路也只是其中一种而已。方法总比问题多,大家一起努力!

PHPz

你好Italic text

怪我咯

同一个wifi环境下,可以由一个设备新建服务器(HTTP 或者别的),然后另外一个设备访问内网的这个服务。
或者走蓝牙

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号