问题标签 [nwpathmonitor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2069 浏览

ios - 为什么网络状态没有迅速更新?

我正在使用 iOS 12 中引入的新“网络”库,但我无法弄清楚为什么在用户连接后网络状态没有更新为 .satisfied。

这是到目前为止的代码:

为了在模拟器中复制丢失的连接情况,我在视图加载之前关闭了 wifi 连接,当警报出现时,点击重试。令人惊讶的是,重试后的状态仍然是 .unsatisfied。为什么状态没有更新?

目标是点击“重试”,如果用户仍未连接,则继续显示警报,当用户连接时,点击重试警报应该被解除。

为了进行简单的网络监视器设置,您可以查看本教程: https ://medium.com/@rwbutler/nwpathmonitor-the-new-reachability-de101a5a8835

请注意,我在实例化 NWPathMonitor() 时没有指定网络类型,因此它会检测所有类型的连接。

0 投票
1 回答
331 浏览

ios - iOS14 上 NWPathMonitor 中的内存泄漏

NWPathMonitor我刚刚在 iOS14 上使用时发现了可重现的内存泄漏。也可以在 iOS13 上重现,我也怀疑 12,但只能测试 iOS 13。

要重现泄漏,您所要做的就是分配一个实例NWPathMonitor(无需持有对它的引用),一旦您这样做,您就会在使用 Leaks 模板在 Instruments 中调试时看到泄漏,或者使用 Xcode 内存图。这可以在模拟器和设备上重现。

0 投票
1 回答
661 浏览

swift - 为什么当路径满足时 NWPathMonitor 不给出路径更新?

我有一个名为NetworkPathMonitor的简单类,如下所示:

虽然pathUpdateHandler在我禁用和启用 WiFi 时调用,但结果并不总是可靠的。当我禁用 WiFi 时,当前路径是unsatisfied (No network route),但是当我再次启用 WiFi 时,它会pathUpdateHandler再次使用相同的路径调用unsatisfied (No network route)

但是在我的用户界面中,我有一个按钮,上面写着重试。当我按下它时,它将破坏当前的监视器并建立一个新的监视器。现在第一条消息说satisfied (Path is satisfied), interface: en0。这意味着,WiFi 建立网络路由可能需要一些时间,但是当网络确实可用时,它不会pathUpdateHandler再次调用。

0 投票
0 回答
303 浏览

ios - NWPathMonitor 的 pathUpdateHandler 块在应用程序后台到前台转换时被调用

预期的 NWPathMonitor 的 pathUpdateHandler 只会在网络活动发生变化时被调用(例如,蜂窝->wifi 或 wifi1->wifi2 或 wifi->无网络等...)。

我观察到的是,即使应用程序在后台运行 30 秒并进入前台,也会调用“pathUpdateHandler”块。这不是预期的。此外,当网络更改时,'pathUpdateHandler' 块会被多次调用。

这是预期的行为吗?或者这种行为有解决方法吗?我的设备是 iOS 13.7 这是我的代码片段

0 投票
1 回答
234 浏览

ios - NWEndPoint:从另一个VC获取网关IP地址时返回nil

我已经找到了这个问题的解决方案,请参见下面的答案。

我定义了一个函数getGatewayInfo()来获取网关 IP 地址并将其返回给调用者。print(NetworkUtility().getGatewayInfo())但是当我从其他 VC调用这个函数时viewDidLoad,它返回 nil。

从日志中,我可以看到gatewayIPAddress已从 中获取值NWEndpoint,即192.168.1.1. 但是,它返回 nil 并打印出“未找到网关 IP 地址!”。你能给我一些提示我哪里做错了吗?

0 投票
1 回答
161 浏览

ios - 如何确定 Wi-Fi 是否有互联网连接

我想知道 Wi-Fi 是否有互联网连接。有时我们的设备与 Wi-Fi 连接,但 Wi-Fi 没有互联网连接。

NWPathMonitor 或第三方连接。我试过了,但它不是万无一失的。

我知道我可以编写一个 ping 服务器的方法,但这是一件非常无效且成本高昂的事情。

有任何想法吗?

0 投票
1 回答
103 浏览

swift - 处理网络连接问题的最佳方法 - Swift 5

我试图使用 Apple 为我们提供处理网络问题的网络框架来实现网络连接。

我所做的是: 1.每当应用程序处于活动状态时 - 我开始监控网络 2.每当应用程序进入后台时 - 我取消监控以降低电池电量的影响

每当我进入后台并再次返回应用程序时,我都会遇到这个问题,它不会再次监视,因为我们无法再次分配监视器实例。我们需要创建新的监控实例来重新开始监控

我正在尝试尽可能地减少冗余代码

所以要实现所有的边缘情况

以下是我的方法:-

网络监视器文件

这是我要监控的视图:

这工作正常,但问题是每当我想在其他视图控制器中使用它时,我必须复制代码以在 appDidBecomeActive 中再次分配NetworkMonitorappMovedToBackground中使其为零。

所以请帮助我改进我的方法,这样我只需要在视图控制器中调用startMonitoring

0 投票
1 回答
89 浏览

ios - 在没有第三方库的情况下确定 iOS 14 Swift 5 中的网络类型

CTTelephonyNetworkInfo.currentRadioAccessTechnology在 iOS 12 中已弃用。那么是否有任何 api 来获取网络类型?我们可以使用 NWPathMonitor 知道 wifi、蜂窝、以太网类型,但不知道 3g、4g、5g 等。有没有完整的解决方案。

0 投票
0 回答
62 浏览

swift - 我正在尝试在我的应用程序中使用 NWPathMonitor,但如果我关闭互联网连接,它总是响应连接。有什么建议吗?

我正在尝试使用 NWPathMonitor 来检测互联网连接。我的网络设置只是一个连接到移动 4G 网络的路由器和一个通过以太网连接到路由器 LAN 端口之一的 Mac。我的代码如下:

我正在尝试做的是转到路由器Web界面并禁用4G。然后,我希望 NWPathMonitor 能够检测到缺乏互联网连接并再次触发更新关闭报告没有互联网,但这不会发生。如果我重新启动应用程序并断开 4G 连接,它总是报告互联网连接已满足。让我的代码检测到缺乏互联网的唯一方法是,如果我转到网络首选项并删除我的以太网接口。在这种情况下,代码会正确报告缺乏连接。我一定错过了一些重要的事情。我希望有更多专业知识的人能给我带来正确的方向。感谢您的关注。

0 投票
0 回答
163 浏览

ios - Swift、iOS:可达性 (NWPathMonitor) 与 Ping

我正在实现应用程序功能,这需要通过以下方式检查网络可达性:1/发送 http 请求 2/如果它因特定类型的错误而失败,计划在网络可达时重复请求 3/当请求成功完成时,填充视图的内容

可以使用 SCNetworkReachability 或 NWPathMonitor,但是,正如 Apple 所告知的那样,它可能会导致误报,并且没有办法处理它们。

问题是,为什么不多次 ping 服务器呢?同样在 Apple 的 SimplePing 示例中?这是一个好方法吗?

谢谢你。