我读过有关如何打开应用中存储的mobileconfig文件的问题(无法在Safari ios设备中打开MobileConfig文件[已解决])我需要在应用程序中执行相同的操作,但是我不知道如何使服务器在后台运行,我尝试使用Cocoahttpserver和gcdwebserver尝试过,但是在这两个我都需要WiFi Connection中以制作服务器。我需要进行本地服务器来模拟无网络的URL来lauch .mobileconfig如果有人能帮助我,我将非常感谢。谢谢!
您可以在应用程序在后台时运行服务器,但只能持续几分钟(iOS仍然可以随时冻结您的应用程序)。
在GCDWebserver的情况下,将GCDWebServerOption_AutomaticallySuspendInBackground
选项设置为NO
,并确保在将应用发送到后台时启动背景任务。这将使您的应用程序保持活力,并且GCDWebserver也不会自动暂停自己。
如果您的应用在后台冻结,请确保在您的应用回到前景时停止GCDWeberver并重新启动。
swift 4.0/swift 5.3答案
替换当前服务器ritialisation_code,该code应该像以下
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 background
值YES
(如果您在info.plist
中没有分配任何类似的属性,它也将有效)
大概是您要执行此操作,以便Safari或Webkit浏览器中的网站(如Chrome/Firefox)将访问您在iOS上运行的服务器托管的信息。
虽然Apple评论不允许您在后台进行类似的过程超过几分钟,但从iOS 15开始,您将能够实现所需的目标!
最后,Safari Web扩展即将出现。以真正的Apple方式,它们仅包含整个Web扩展标准的子集,但是您可以向它们移植很多。它们还包含一种将消息从JavaScript发送到您的应用程序的方法,反之亦然。也称为请求; - )
因此,您基本上可以让用户安装您的应用程序和Safari Web扩展名,然后您的扩展程序可以与应用程序扩展程序进行通信:)
在Safari中使用的应用程序剪辑是另一种完成类似方法的方法。他们将为您的应用显示横幅,该横幅可以下载并打开一些接口,而无需从应用商店安装。这是一次更笨拙的体验,但是当您的应用程序没有安装时可用!