NEVPNManager 的 onDemandEnabled 标志

NEVPNManager's onDemandEnabled flag

当服务器更新 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 之前,它会向您选择的服务器发送请求。服务器将 return 回答您是否应该使用 VPN。