【发布时间】:2019-07-29 01:17:50
【问题描述】:
我正在使用苹果提供的网络扩展开发一个 vpn 应用程序。为了实现自动重连vpn的功能,我使用了扩展的“按需连接”功能,这样即使手机有一段时间没有网络,如果网络恢复,它也会自动重新连接到我的vpn服务器。
但是,当我的应用程序使用蜂窝 (4G) 连接到 vpn 并尝试打开 wifi 时,我发现该应用程序一直在使用蜂窝连接到 vpn 但不使用 wifi。请问连接vpn时如何将网络从蜂窝切换到wifi?
有些网站说在PacketTunnelProvider的defaultPath添加观察者可以观察到网络状态的变化,添加如下代码重启vpn隧道。这样手机就可以使用wifi重新连接我的vpn服务了。
NSLog("Network Environment Changed")
let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(1 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
self.startTunnelWithOptions(nil){_ in}
}
但是,即使我使用上面的代码,当网络状态从蜂窝变为 wifi 时,我的应用程序也无法重新启动 vpn 隧道。
希望任何人都可以回答我的问题。谢谢。
【问题讨论】:
标签: ios swift vpn networkextension