iOS 13.2信息:nehelper发送了无效的结果代码[1]以获取Wi-Fi信息请求。

9

我的应用程序在后台使用位置服务进行跟踪和地理围栏。

现在在iOS 13.2中,我每秒钟都会在控制台看到以下消息:

Anchorwatch nehelper sent invalid result code [1] for Wi-Fi information request

我的应用程序与WiFi系统无关,当我在设备上禁用WiFi时,该消息就会消失。

虽然这个消息似乎没有什么不良影响,但我从经验中学到忽略这个消息可能是一个坏主意。

有人能提示我为什么会出现这个消息,我可以做什么来抑制它吗?

4个回答

12

我已经成功在iOS 13.3上运行。以下是我实现的方法。(2020年8月更新:我测试了iOS 13.6,也可以使用)

CNCopyCurrentNetworkInfo的官方文档表示,如果应用程序满足以下条件:

  • 具有“访问WiFi信息”权限(请参见此处),并且
  • 属于以下三种情况之一:1)核心定位;2)使用NEHotspotConfiguration连接当前Wi-Fi网络;或者3)VPN应用。

则此函数提供当前连接的真实SSID/BSSID。

我已经配置了“访问WiFi信息”权限,因此只需要满足第一个要求。它可以在iOS 13.1上工作,但在iOS 13.3上无法工作。为了满足后面的要求,我决定将核心定位包含在我的应用程序中。我检查了这里的代码,但我必须将下面的常量添加到我的应用程序的Info.plist中以避免错误。

    <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
    <string>Application requires user’s location for better user experience.</string>
    <key>NSLocationAlwaysUsageDescription</key>
    <string>Application requires user’s location for better user experience.</string>
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>Application requires user’s location for better user experience.</string>

在用户首次启动应用程序时,我还需要调用

manager.requestWhenInUseAuthorization()

之后才能调用

manager.requestAlwaysAuthorization()

弹出对话框以请求许可。

用户需要在第一次启动时允许权限。如果允许“始终”访问,则应用程序可以无错误地使用CNCopyCurrentNetworkInfo。


6

请查看WWDC 19会话713,这是因为在iOS13中,为了获取WiFi详细信息,您需要允许位置权限。每次尝试从CNCopySupportedInterfaces数组中提取CNCopyCurrentNetworkInfo数据时,都会出现此日志。

一个愚蠢的解决方案可能是尝试启用位置权限,然后您将不再收到此错误。


1
是的,我知道。但是我的应用程序已经使用了位置服务,因此当然具有位置权限。我的应用程序并没有直接调用networkinfo,但似乎位置服务确实这样做了。 - Michael Konz
在我的情况下,我给了位置权限后它就正常工作了! - Mario Kurzweil

6
最终结果表明,我的应用程序使用的第三方框架会调用CNCopyCurrentNetworkInfo函数。
在我按照此处所述的方式向应用程序添加了WiFi访问权限后,错误信息消失了。

0

正如user784625提到的,这个视频解决了我的问题。我之前没有意识到,如果使用NEHotspotConfiguration,只有在活动网络是你在NEHotspotConfiguration中配置过的网络时,才能获取返回值。这比请求位置权限更可取,如果你只需要确认是否连接到配置的网络。

WWDC会议/时间戳的链接


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接