现在我已经使用 iOS 11+ 的网络扩展 API 实现了一个简单的数据包隧道扩展。我想让它成为仅限应用程序的 VPN,以便来自我的应用程序的流量可以通过我们的 VPN 和代理进行隧道传输。所以,我的问题是
- 如何在用户切换到其他应用程序时停止隧道 - 一种选择是使用应用程序委托方法
-(void)applicationWillResignActive:(UIApplication *)application
或-(void)applicationDidEnterBackground:(UIApplication *)application
. - 如果用户通过强制退出直接终止应用程序,那么 VPN 也应该关闭 - 我们可以使用
-(void)applicationWillTerminate:(UIApplication *)application
但当我尝试时它有时无法正常工作。 - 当应用程序崩溃时,如何处理相同的情况。- 作为一种解决方法,我正在考虑实现类似乒乓机制的东西,如果应用程序处于活动状态,那么它应该继续 ping 或更新将由数据包隧道扩展访问的任何共享数据。因此,如果应用程序停止或退出,Tunnel 会知道应用程序的不活动状态,它会自行停止隧道。
- 为了保持 VPN 隧道处于活动状态,我们需要定期更新令牌,因此有什么方法可以更新 VPN 首选项并立即反映更改而无需重新启动(停止并重新启动)隧道。
请针对上述情况提出适当的解决方案或解决方法。这对我会有很大的帮助。