在iOS14中进行iOS UI测试时启用本地网络访问

问题描述 投票:0回答:1

我们正在构建一个使用蓝牙连接到设备的 iOS 应用程序。为了测试此应用程序的不愉快的流程场景,我们希望使用物联网电源开关来重新启动我们正在连接的设备,该开关使用 WiFi(Shelly Plug-S)连接到本地网络。

在 iOS13 上的测试代码中,我能够对电源开关的 IP 地址进行本地 HTTP 调用,并使用其 REST 接口触发电源周期。在 iOS 14 中,这不再可能,可能是由于未经许可的本地网络使用的新限制(请参阅:https://developer.apple.com/videos/play/wwdc2020/10110/)。

在 iOS14 中运行测试并尝试对电源开关进行本地网络调用时,出现以下错误:

Task <D206B326-1820-43CA-A54C-5B470B4F1A79>.<2> finished with error [-1009] Error Domain=NSURLErrorDomain Code=-1009 "The internet connection appears to be offline." UserInfo={_kCFStreamErrorCodeKey=50, NSUnderlyingError=0x2833f34b0 {Error Domain=kCFErrorDomainCFNetwork Code=-1009 "(null)" UserInfo={_kCFStreamErrorCodeKey=50, _kCFStreamErrorDomainKey=1}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <D206B326-1820-43CA-A54C-5B470B4F1A79>.<2>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <D206B326-1820-43CA-A54C-5B470B4F1A79>.<2>"), NSLocalizedDescription=The internet connection appears to be offline., NSErrorFailingURLStringKey=http://192.168.22.57/relay/0?turn=on, NSErrorFailingURLKey=http://192.168.22.57/relay/0?turn=on, _kCFStreamErrorDomainKey=1}

外部网络调用(到 google.com)在测试中运行良好。

我尝试通过将以下条目添加到我的 UI 测试目标的 Info.plist 来修复此问题:

<key>NSLocalNetworkUsageDescription</key>
<string>Local network access is needed for tests</string>
<key>NSBonjourServices</key>
<array>
    <string>_http._tcp</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

但是,这没有任何效果。

我还尝试将这些条目添加到我的应用程序目标的 Info.plist 中,看看这是否会产生影响,但事实并非如此。我也不想将这些条目添加到我的应用程序的 Info.plist 中,因为该应用程序不需要本地网络访问。只有测试可以。

有谁知道如何在iOS14的iOS UI测试期间启用本地网络访问?

ios testing networking permissions xctest
1个回答
0
投票

看起来这是一个开放雷达:https://openradar.appspot.com/FB983096

© www.soinside.com 2019 - 2024. All rights reserved.