我的应用程序在后台使用定位服务进行跟踪和地理围栏。
现在在iOS 13.2中,我每秒钟都会在控制台中看到以下消息:
Anchorwatch nehelper sent invalid result code [1] for Wi-Fi information request
我的应用程序对WiFi系统没有任何作用,当我禁用设备上的WiFi时,消息消失。
虽然这条信息似乎没有什么负面影响,但我从痛苦的经历中了解到,忽视这条信息可能是个坏主意。
有没有人能提示我为什么这个消息会来,我能做些什么来抑制它?
4条答案
按热度按时间ffscu2ro1#
我已经在iOS 13.3上实现了。我是这么做的。(2020年8月编辑:我已经在iOS 13.6上测试过了,效果也一样)
CNCopyCurrentNetworkInfo的官方documentation表示,该功能是提供当前连接的真实的SSID/BSSID,如果应用程序
我已经配置了“访问WiFi信息权限”,因此只满足第一个要求。它可以在iOS 13.1上运行,但不能在iOS 13.3上运行。为了满足后一个要求,我决定在我的应用程序中包括核心位置。我已经检查了here中的代码,但我必须在我的应用程序的Info.plist中添加一些常量以避免错误。
我还需要打电话
manager.requestWhenInUseAuthorization()
之前
manager.requestAlwaysAuthorization()
当用户第一次启动应用程序时弹出对话框。
用户需要在第一次启动时允许该权限。如果允许为“始终”,则应用可以使用CNCopyCurrentNetworkInfo而不会出错。
ao218c7q2#
查看WWDC 19会话713,它发生是因为在iOS13中,为了获得WiFi详细信息,您应该允许位置权限,每次您尝试从CNCopySupportedInterfaces数组中提取CNCopyCurrentNetworkInfo数据时,您都会获得此日志。
愚蠢的解决方案可能是尝试启用位置权限,这样您就不会再收到此错误
6ioyuze23#
最终证明,我的应用程序使用的第三方框架启动了对CNCopyCurrentNetworkInfo的调用。
在我将WiFi接入功能添加到应用程序本身后,错误消息消失了
ldxq2e6h4#
作为user784625 mentioned这个视频解决了我的问题。我没有意识到,如果使用
NEHotspotConfiguration
,您只能在活动网络是您在NEHotspotConfiguration
中配置的网络时才能返回值。如果您只需要确认已连接到配置的网络,则这比请求位置权限更可取。Link to the WWDC session/timestamp