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

e37o9pze  于 2023-07-01  发布在  iOS
关注(0)|答案(4)|浏览(200)

我的应用程序在后台使用定位服务进行跟踪和地理围栏。
现在在iOS 13.2中,我每秒钟都会在控制台中看到以下消息:

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

我的应用程序对WiFi系统没有任何作用,当我禁用设备上的WiFi时,消息消失。
虽然这条信息似乎没有什么负面影响,但我从痛苦的经历中了解到,忽视这条信息可能是个坏主意。
有没有人能提示我为什么这个消息会来,我能做些什么来抑制它?

ffscu2ro

ffscu2ro1#

我已经在iOS 13.3上实现了。我是这么做的。(2020年8月编辑:我已经在iOS 13.6上测试过了,效果也一样)
CNCopyCurrentNetworkInfo的官方documentation表示,该功能是提供当前连接的真实的SSID/BSSID,如果应用程序

  • 具有“访问WiFi信息权利”(参见here),并且
  • 是1)核心位置,2)使用NEHotspotConfiguration连接当前Wi-Fi网络和3)VPN应用程序之一。

我已经配置了“访问WiFi信息权限”,因此只满足第一个要求。它可以在iOS 13.1上运行,但不能在iOS 13.3上运行。为了满足后一个要求,我决定在我的应用程序中包括核心位置。我已经检查了here中的代码,但我必须在我的应用程序的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而不会出错。

ao218c7q

ao218c7q2#

查看WWDC 19会话713,它发生是因为在iOS13中,为了获得WiFi详细信息,您应该允许位置权限,每次您尝试从CNCopySupportedInterfaces数组中提取CNCopyCurrentNetworkInfo数据时,您都会获得此日志。
愚蠢的解决方案可能是尝试启用位置权限,这样您就不会再收到此错误

6ioyuze2

6ioyuze23#

最终证明,我的应用程序使用的第三方框架启动了对CNCopyCurrentNetworkInfo的调用。
在我将WiFi接入功能添加到应用程序本身后,错误消息消失了

ldxq2e6h

ldxq2e6h4#

作为user784625 mentioned这个视频解决了我的问题。我没有意识到,如果使用NEHotspotConfiguration,您只能在活动网络是您在NEHotspotConfiguration中配置的网络时才能返回值。如果您只需要确认已连接到配置的网络,则这比请求位置权限更可取。
Link to the WWDC session/timestamp

相关问题