GCDWebServer:使用真正的iPhone时无法打开主页



我有一个旧的应用程序,使用GCDWebServer的GCDWebUploader将文件上传到应用程序中。我将实现代码复制到一个新项目中。

问题是:在这个新项目中,GCDWebServer的主页可以在iOS模拟器中打开,但无法在真正的iPhone中连接。

环境:Xcode 12.2,iOS 14CocoaPods

这很奇怪,因为我已经有了一个工作应用程序。所以我做了一些检查:

  • 首先,旧的应用程序是工作的。意味着可以打开主页
  • 所有设备都在同一个wifi下
  • 尝试在浏览器中打开http://192.168.1.5/http://192.168.1.5:80;无法打开页面,因为服务器没有响应";,但是我可以在终端中成功地ping192.168.1.5
  • 重新启动我的iPhone
  • 比较两个项目之间的info.plist

没有结果!你们能给我一些建议吗?也许Xcode中的一些配置允许HTTP通信,或者启用一些功能?

控制台中的内容:

[DEBUG] Did open IPv4 listening socket 3
[DEBUG] Did open IPv6 listening socket 4
[INFO] GCDWebUploader started on port 80 and reachable at http://192.168.1.5/
Visit http://192.168.1.5/ in your web browser

代码:

import GCDWebServer
import Foundation
class MyWebUploader {
// move webuploader to outside of init func to fix app crash issue.
let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
lazy var webUploader = GCDWebUploader(uploadDirectory: self.documentsPath)

func initWebUploader() -> String {
var ipAddress = String()

webUploader.start()
webUploader.allowedFileExtensions = ["mp3", "aac", "m4a", "wav"]
if webUploader.serverURL != nil {
// retrieve IP address from URL
let str = webUploader.serverURL!.absoluteString
let start = str.index(str.startIndex, offsetBy: 7)
let end = str.index(str.endIndex, offsetBy: -1)
let range = start..<end
let mySubstring = str[range]
ipAddress = String(mySubstring)
print("Visit (webUploader.serverURL!) in your web browser")
} else {
ipAddress = "No Wifi connected"
}
return ipAddress
}

func stopWebUploader() {
webUploader.stop()
}
}

此问题是由iOS 14to find and connect to devices on your local network中的新权限引起的。

要修复它,我们需要在info.plist中添加以下信息

<key>NSLocalNetworkUsageDescription</key>
<string>Reason for using Bonjour that the user can understand</string>
<key>NSBonjourServices</key>
<array>
<string>_http._tcp</string>
<string>_http._udp</string>
</array>

更多详细信息,请参阅NSNetServiceBrowser未搜索错误-iOS 14 上的72008

相关内容

  • 没有找到相关文章

最新更新