如何使用http / ftp上传文件到iphone / ipad? (如ifile,goodreader)
有什么好的build议上传文件到设备? 我见过很多应用程序在80或8080上创build一个HTTP服务器来上传文件。 这是否意味着我也必须实现一台服务器?
有没有第三方库? (最好是开源和非GPL)
编辑:我打算升级在公司环境中的特定设备的应用程序中的文件,所以从中央服务器的iPad拉文件也是一种替代scheme。 但是我不得不发送消息到这些ipad来告诉他们去获取这些文件。
我假设你想要的是一种自动更新 。 一个应用程序按顺序从服务器执行某些操作,而无需用户手动操
我不知道iOS的企业许可证特定function。 但我相信没有这样的企业特定的API。 而据我所知, 自动更新几乎是不可能的。 因为,
- 没有对自动更新的系统级支持。 (然而?)
- 所以消息和获取function应该在应用程序中实现。
- 但是没有应用程序保证长时间在后台运行。
- 而且用户也可以随时closures任何应用程序。
- 没有办法发送消息到未运行的应用程序。
- 即使你可以发送,也无法解决每个客户端构成服务器的问题。
如果你的应用程序正在运行,发送消息或命令他们获取或做任何事情只是一个简单的工作。 问题是没有固定的办法来迫使他们永远活着。 即使在操作系统重启或exception终止的情况下。
然而,还有一个select。 只需将应用程序注册为Skype等VOIP应用程序即可。 操作系统不会让应用程序也运行,但会监视特定的套接字端口,并会在套接字收到一些消息时唤醒您的应用程序。 有关更多详细信息,请参阅此处: http : //developer.apple.com/library/ios/documentation/iphone/conceptual/iphoneosprogrammingguide/BackgroundExecution/BackgroundExecution.html#//apple_ref/doc/uid/TP40007072-CH5-SW15
在AppStore中,使用VOIP作为自动更新等其他用途的应用程序将不会被传递,但您无需担心。
和其他方式发送消息到设备没有运行应用程序是推送通知 。 这是系统级支持的function。 但这不是为了指挥应用程序。 这是旨在发送文字信息。 所以如果你的应用程序没有运行,消息将显示给用户。 但是,您可以通过发送推送通知来指导用户启动应用程序。
作为最后的select,您可以向企业环境要求Apple的某些function。 如果您的公司足够大以获得企业许可证,苹果将认真考虑您的function要求。
如果您决定使用VOIP方式,我很抱歉无法再帮助您。 我没有实施这种应用程序的经验。 但不应该这么难。
然而困难的部分是服务器。 它绝对需要定制的服务器程序,保持TCP / IP连接。 普通的HTTP服务器不能使用。 由于HTTP本身被devise为不保持TCP / IP连接。 你必须从头开始构build这种服务器。 您将不得不处理较低级别的TCP / IP传输。
这种服务器有一些解决scheme(免费/商业),但没有一种stream行,因为这种服务器经常需要完全定制。 所以没有什么可以重复使用或分享。
不过,我相信这是您的应用程序最适合的实施。
如果只有在应用程序运行时才能满足自动更新,则可以通过定期从客户端轮询服务器状态来对其进行存档。
这很容易实现,因为您可以使用常规的HTTP服务器。 客户端定期连接并从中央服务器下载最新的更新。 如果有新的更新,只要抓取并做你想做的。 而应用程序启动,只是首先检查更新。 防止所有操作,直到更新应用。
这是常规的方式。 大多数应用程序都是用这种方法构build的。 在这种情况下,你不需要实现服务器或硬件。
然而,更新的速度取决于轮询周期。
(编辑)
我可以不关心私人API。 因为你的app不适合AppStore,所以你可以自由的使用私有API。 (这与监狱破坏是不同的, 隐藏的function太多了)我不知道私有API,但可能有一些API支持应用程序的保持活动。 但是,这种逆向工程是非常痛苦的,除非你天生就是黑客。
但是我不得不发送消息到这些ipad来告诉他们去获取这些文件。
推送通知编程指南
或者用自定义URLscheme发送邮件来启动你的应用程序。
iOS应用程序编程指南 – 实现自定义URLscheme
您可以尝试在您的项目中使用以下开源代码:
苹果在他们的网站上有一些示例代码,详细说明了你要找的东西:
http://developer.apple.com/library/mac/samplecode/CocoaHTTPServer/CocoaHTTPServer.zip
所以你有几个select:
-
您可以在您的组织内无线分发您的应用程序,并将新内容作为应用程序更新推出。 苹果公司向他们的企业开发者提供了这个选项
无线应用分发
iPhone使企业能够通过Wi-Fi和3G安全地主持和无线分发内部应用程序给员工。 应用程序可以更新,而不需要用户连接到他们的电脑。 内部应用程序可以托pipe在任何可供用户访问的Web服务器上。 用户只需点击一个URL即可无线安装应用程序,而无需连接到他们的电脑。
-
另一种方法是将应用程序configuration为获取更新的数据。 您描述了向iOS设备添加HTTP服务器,但是当应用程序不运行时服务器无法接收数据。 考虑到你的需求,它可能会更好地embedded在你的应用程序的Web客户端。
如果我在你的鞋子(和选项#1没有工作),我会使用ASIHTTPRequest检查服务器在启动/每天。 如果有新的更新,则应用程序可以提示用户有新的数据文件要下载,或者可以静默地在后台线程中下载。
更新:也许我应该更清楚如何做#2。 您可以configuration下载,使其在用户退出应用程序时不会中断(您不需要执行Voip破解)。 在iOS编程指南的背景部分查看完成有限长度任务 。
有来自Apple和开源社区的http服务器示例代码 ,如cocoahttpserver TouchHTTPD。 你可以上传文件到http服务器上。
这里有一个关于运行cocoahttpserver和上传文件到iPhone的博客和屏幕截图。
Python CGIHTTPServer允许您在0行代码中创build一个服务器:
jcomeau@intrepid:~/rentacoder/bin2txt$ python -m CGIHTTPServer Serving HTTP on 0.0.0.0 port 8000 ...
实际上实现脚本来parsinginput并保存文件需要花费更多的精力。
[稍后]好的,所以忘了这一点,苹果不允许它。 至less请参阅iPad上的本地服务器 。