2

我已经阅读了有关如何打开存储在应用程序中的 mobileconfig 文件的问题(无法在 Safari ios 设备中打开 mobileconfig 文件[已解决])我需要在我的应用程序中执行相同的操作,但我不知道如何使服务器运行在后台,我尝试过使用 CocoaHTTPServer 和 GCDWebServer,但在两者中我都需要 wifi 连接来创建服务器。我需要做一个本地服务器来模拟没有网络的 URL 来启动 .mobileconfig 如果有人可以帮助我,我将非常感激。谢谢!

4

3 回答 3

3

您可以在您的应用程序在后台运行服务器,但只能运行几分钟(iOS 仍然可以随时冻结您的应用程序)。

在 GCDWebServer 的情况下,将GCDWebServerOption_AutomaticallySuspendInBackground选项设置为NO并确保在您的应用程序发送到后台时启动后台任务。这将使您的应用程序保持活动状态,并且 GCDWebServer 也不会自动挂起。

如果您的应用程序在后台冻结,请务必停止 GCDWebServer 并在您的应用程序回到前台时重新启动它。

于 2015-09-09T15:21:04.950 回答
0

斯威夫特 4.0/斯威夫特 5.3 答案

替换您当前的服务器初始化代码,如下所示

webServer.start(withPort: 8080, bonjourName: "GCD Web Server")

使用下面的代码

let options:[String : Any] = ["Port" : 8080, "AutomaticallySuspendInBackground" : false]
try! webServer.start(options: options)

它只是用不同的方法初始化服务器。

描述 :

  • 它使用webServer.start(options: [String : Any])属性而不是webServer.start()用于初始化服务器的属性。
  • 正如@Pol 在这里和在GitHub 上所说,它做同样的事情(将GCDWebServerOption_AutomaticallySuspendInBackground选项设置为NO
  • 还要确保在您的info.plist, 您没有设置Application does not run in backgroundYES(如果您没有在 中分配任何类似的属性,它也将起作用info.plist
于 2020-10-08T04:54:53.197 回答
0

大概您希望这样做,以便 Safari 或 WebKit 浏览器(如 Chrome/Firefox)中的网站可以访问您在 iOS 上运行的服务器托管的信息。

虽然 Apple Review 不会让您在后台运行这样的进程超过几分钟,但从 iOS 15 开始,您将能够实现您想要的!

最后,Safari Web Extensions即将问世。以真正的 Apple 方式,它们将仅包含整个 Web 扩展标准的一个子集,但您将能够向它们移植相当多的内容。它们还包含一种从 Javascript 向您的应用程序发送消息的方法,反之亦然。也称为请求;-)

因此,您基本上可以让用户安装您的应用程序和 Safari Web 扩展程序,然后您的扩展程序可以与您的应用程序扩展程序进行通信:)

完成类似操作的另一种方法是Safari 中的 App Clips。他们将为您的应用显示一个横幅,该横幅可以下载并打开某些界面,而无需从应用商店安装。这是一种更笨拙的体验,但它甚至可以在您的应用尚未安装时使用!

于 2021-07-30T21:22:36.293 回答