首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过主机应用程序的终止关闭我的包隧道扩展

如何通过主机应用程序的终止关闭我的包隧道扩展
EN

Stack Overflow用户
提问于 2018-12-11 18:11:19
回答 1查看 702关注 0票数 0

现在,我已经使用iOS 11+的网络扩展API实现了一个简单的包隧道扩展。我想让它只应用VPN,以便我的应用程序的流量可以通过我们的VPN和代理隧道。所以,我的问题是

  1. 如何在用户切换到其他应用程序时停止隧道操作--一种选择是使用应用程序委托方法-(void)applicationWillResignActive:(UIApplication *)application-(void)applicationDidEnterBackground:(UIApplication *)application
  2. 如果用户通过强制退出直接终止应用程序,也应该关闭VPN -我们可以使用-(void)applicationWillTerminate:(UIApplication *)application,但当我尝试时,有时它不能正常工作。
  3. 当应用程序崩溃时,应该实现什么来处理相同的情况。-作为一种解决办法,我正在考虑实现类似乒乓机制,如果应用程序是活动的,那么它应该保持点击或更新任何共享的数据,这些数据将通过包隧道扩展来访问。因此,如果应用程序停止或退出,隧道将了解应用程序的无动于衷,并将停止隧道本身。
  4. 为了保持VPN隧道活动,我们需要定期更新令牌,因此是否有任何方法可以更新VPN首选项并立即反映更改,而无需重新启动(停止并重新启动)隧道。

请为上述方案提出适当的解决方案或解决办法。这对我会有很大的帮助。

EN

回答 1

Stack Overflow用户

发布于 2019-01-01 23:28:23

我认为您无法在应用程序中以编程方式可靠地实现您所期望的目标。

您可以将您的VPN设置为Per-App VPN,并且只将您的应用程序与VPN关联起来。这应该能满足你的大部分要求。这方面的限制是,它只能通过移动设备管理(,MDM)解决方案部署。

另一种选择是将VPN作为标准VPN运行,并让所有应用程序通过它进行隧道化,但是在VPN网络扩展中使用NEPacketTunnelFlow::readPacketObjects(),从NEPacket响应中获取NEFlowMetaData,并使用sourceAppUniqueIdentifier参数标识应用程序。然后,您可以在网络扩展中对您的数据包处理进行编码,这样您的应用程序中的数据就可以通过您的VPN和代理发送,并且所有其他接收到的数据包都可能被转发到它们的预期收件人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53730019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档