【问题标题】:Create an iOS App that runs as Web Server in background创建一个在后台作为 Web 服务器运行的 iOS 应用程序
【发布时间】:2013-12-20 07:17:23
【问题描述】:

我想制作一个 iOS 应用程序(专门针对 iPad),它的行为类似于 Web 服务器。 我看到了 COCOAHTTPSERVER 附带的示例,但我不明白。

我的应用程序是否可以在后台接收来自在同一设备上运行的另一个应用程序的请求?

如果可以的话,我该怎么做?

否则,如果不可能的话,一个Web服务器应用程序是什么意思,不能在后台运行?

我的确切问题如下:我需要一个 iOS 应用程序,它可以接收来自 javascript 应用程序的请求,在 safari 上运行,在同一设备上。我可以在后台创建一个类似于 Web 服务器的应用程序(因为 safari 必须在前台),还是有其他方法可以实现?

【问题讨论】:

标签: ios cocoahttpserver


【解决方案1】:

可以在 iOS 上在后台运行 Web 服务器,但不幸的是只能在有限的时间内(最多 10 分钟)并且操作系统可以随时停止它。有关详细信息,请参阅此技术说明 [1]。

如果您可以接受该限制,您应该使用现有的 Web 服务器,例如为您处理后台模式的 GCDWebServer [2]。

[1]https://developer.apple.com/library/ios/technotes/tn2277/_index.html

[2]https://github.com/swisspol/GCDWebServer#gcdwebserver--background-mode-for-ios-apps

【讨论】:

  • 实际上新的限制(在ios 9之后?)是3分钟
【解决方案2】:

这个库可以让你的任务更轻松。

https://github.com/swisspol/GCDWebServer

【讨论】:

    【解决方案3】:

    不,iOS 不支持在后台运行的 Web 服务器。

    Apple 这样做的原因是 Web 服务器必须侦听入站网络请求。侦听入站网络请求要求无线电始终处于活动状态。有源无线电会耗尽电池电量。

    【讨论】:

    • 我成功地在 iOS 12+ 及更早版本的后台运行了我的服务,这是可行的。但是对于新的 iOS,Apple 将弃用的关键部分作为 api 并建议使用 BGTaskSheduler。我希望有适用于 iOS 13 的方法,但目前还没有找到解决方案。
    猜你喜欢
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多