如何使用http/ftp将文件上传到iphone/ipad?(例如,ifile,goodreader)

Tia*_*HUo 8 iphone file-upload objective-c ios

将文件上传到设备有什么好的建议吗?我见过很多应用程序在80或8080上创建一个http服务器来上传文件.这是否意味着我必须实现服务器?

有没有第三方图书馆?(最好是开源和非GPL)

编辑:我将在应用程序中为企业环境中的特定设备升级文件,因此从中央服务器拉取文件的ipad也是另一种选择.但我必须向这些ipad发送消息,告诉他们获取这些文件.

Eon*_*nil 2

我假设您想要的是一种自动更新。应用程序按照服务器的命令执行某些操作,无需用户手动操作。

我不知道 iOS 的企业许可证特定功能。但我相信不存在这样的企业专用 API。据我所知,自动更新几乎是不可能的。因为,

  1. 没有系统级的自动更新支持。(然而?)
  2. 因此消息传递和获取功能应该在应用程序中实现。
  3. 但没有任何应用程序可以保证长时间在后台运行。
  4. 用户还可以随时关闭任何应用程序。
  5. 无法向未运行的应用程序发送消息。
  6. 即使您可以发送,也无法从服务器寻址每个客户端。

如果您的应用程序正在运行,发送消息或命令它们获取或执行任何操作只是一项简单的工作。问题是没有常规的方法来迫使它们始终保持活力。即使在操作系统重新启动或异常终止等情况下也是如此。

然而还有一个替代方案。只需将应用程序注册为 VOIP 应用程序(例如 Skype)即可。操作系统也不让应用程序保持运行,但会监视特定的套接字端口,并在套接字收到某些消息时唤醒您的应用程序。有关更多详细信息,请参阅此处:http://developer.apple.com/library/ios/documentation/iphone/conceptual/iphoneosprogrammingguide/BackgroundExecution/BackgroundExecution.html#//apple_ref/doc/uid/TP40007072-CH5-SW15

在AppStore中,使用VOIP用于自动更新等其他用途的应用程序不会被通过,但您无需担心。

在不运行应用程序的情况下向设备发送消息的其他方式是推送通知。这是系统级支持的功能。但这并不是为指挥应用程序而设计的。这是为了发送短信而设计的。因此,如果您的应用程序未运行,该消息将显示给用户。但是,您可以通过发送推送通知来引导用户启动应用程序。

作为最后的选择,您可以向 Apple 请求企业环境的某些功能。如果你的公司足够大,能够获得企业许可证,苹果会认真考虑你的功能请求。


如果您决定使用 VOIP 方式,很抱歉我无法再为您提供帮助。我没有实施此类应用程序的经验。但这不应该那么难。

然而困难的部分是服务器。它肯定需要自定义服务器程序来保持 TCP/IP 连接。无法使用常规 HTTP 服务器。因为HTTP本身被设计为不保持TCP/IP连接。你必须从头开始自己构建这种服务器。您必须处理较低级别的 TCP/IP 传输。

对于这种服务器有一些解决方案(免费/商业),但没有一个很受欢迎,因为这种服务器通常需要完全定制。所以没有什么可以重复使用或共享的。

不过我相信这是最适合您的应用程序的实现。


如果只能满足应用运行时自动更新,可以通过客户端定期轮询服务器状态的方式进行归档。

这很容易实现,因为您可以为此使用常规 HTTP 服务器。客户端定期连接并从中央服务器下载最新更新。如果有新的更新,只需获取并执行您想要的操作即可。应用程序已启动,只需首先检查更新即可。在应用更新之前阻止所有操作。

这是常规方式。大多数应用程序都是用这种方法构建的。在这种情况下,您不需要实现服务器或困难的事情。

然而,更新的应用速度取决于轮询周期。


(编辑)

我不关心私有 API。因为您的应用程序不是针对AppStore的,所以您可以自由地使用私有API。(这与越狱不同。文档中排除了很多隐藏功能)我不知道私有 API,但可能有一些 API 可以支持应用程序的保持活动。然而,这种逆向工程工作非常痛苦,除非你天生擅长黑客攻击。