7

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

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

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

我的应用程序对 WiFi 系统没有任何作用,当我在设备上禁用 WiFi 时,消息消失。

虽然该消息似乎没有负面影响,但我很难理解忽略消息可能是一个坏主意。

谁能暗示我为什么会出现这条消息以及我能做些什么来抑制它?

4

3 回答 3

8

我已经设法在 iOS 13.3 上成功了。这是我的制作方法。(编辑 2020 年 8 月:我已经在 iOS 13.6 上对此进行了测试并且工作相同)

CNCopyCurrentNetworkInfo的官方文档说如果应用程序提供当前连接的真实 SSID/BSSID

  • 具有“访问 WiFi 信息权利”(请参阅​​此处)和
  • 是 1) 核心位置、2) 使用 NEHotspotConfiguration 连接当前 Wi-Fi 网络和 3) VPN 应用程序之一。

我已经配置了“访问WiFi信息权限”,所以只满足第一个要求。它适用于 iOS 13.1,但不适用于 iOS 13.3。为了满足后一个要求,我决定在我的 APP 中包含核心位置。我已经检查了这里的代码,但我必须在我的应用程序的 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。

于 2020-04-01T14:31:20.593 回答
5

最终结果是,我的应用程序使用的第三方框架启动了对 CNCopyCurrentNetworkInfo 的调用。

在我将此处所述的WiFi 访问功能添加到应用程序本身后,错误消息消失了

于 2019-11-22T17:46:54.170 回答
4

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

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

于 2019-11-12T12:28:36.517 回答