ios - NEVPNManager 的 onDemandEnabled 标志

标签 ios vpn nevpnmanager

NEVPNProtocol 属性被服务器更新使得用户名和密码不再有效时,我们有办法处理这个问题吗?

比方说,如果我们为 NEVPNManager 打开 onDemandEnabled 标志,当服务器使凭证无效时(因为用户已被列入黑名单),有没有办法以编程方式切换它?从最终用户体验的角度来看,用户会等待很长时间才能加载网页失败。如果应用被终止,使用计时器的后台提取可能无法工作。

除了使用推送通知,有没有更好的方法来解决这个问题?

最佳答案

我自己没有尝试过,但是你应该做的是当你配置你的VPN并设置onDemandEnabled时,你需要定义onDemandRules。

这里有 NEOnDemandRuleDisconnect,它将阻止您的 VPN 启动,如果它已经处于事件状态,它将断开连接。

https://developer.apple.com/library/ios/documentation/NetworkExtension/Reference/NEOnDemandRuleDisconnectClassRef/index.html#//apple_ref/occ/cl/NEOnDemandRuleDisconnect

这样即使您的 VPN 处于事件状态,您也只会在规则仍然适用时使用它。

编辑:您还可以使用 onDemandRule - probeURL 。这样,在激活您的 VPN 之前,它会向您选择的服务器发送请求。如果您应该使用您的 VPN,服务器将返回一个答案。

关于ios - NEVPNManager 的 onDemandEnabled 标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35839491/

相关文章:

ios - 执行按钮操作后 UICollectionView rollToItemAtIndex

c# - 当 VPN 连接处于事件状态时,从 url 返回错误的 Content-Length

ios - 如何在 iOS Objective-C 中删除或更改 VPN 配置文件配置

ios - 在 iOS 上,是否可以仅为包含应用程序设置 NEPacketTunnelProvider VPN?

ios - 触摸并按住 TableViewCell 以显示(工具提示)弹出窗口在 iPhone 中是否可行?

ios - 如何修复 didSelectRowAt 返回错误的indexPath?

ios - 如何通过添加自定义 header 字段和参数来发出 HEAD 请求?

VPN 连接后无法访问 Vagrant 框

android - 如何以编程方式连接到已在 Android 手机中设置的 VPN

ios - NEVPNManager 停止使用 iOS 14 测试版