现在,我已经使用适用于iOS 11+的网络扩展API实现了一个简单的Packet Tunnel扩展。我希望将其设置为“仅应用程序” VPN,以便可以通过我们的VPN和代理通过“我的应用程序”传输流量。所以,我的问题是
-(void)applicationWillResignActive:(UIApplication *)application
或-(void)applicationDidEnterBackground:(UIApplication *)application
。 -(void)applicationWillTerminate:(UIApplication *)application
,但是当我尝试运行它有时无法正常工作时。请针对上述情况提出适当的解决方案或解决方法。这将对我有很大的帮助。
答案 0 :(得分:0)
我认为您无法在应用程序中以编程方式可靠地实现期望的目标。
您可以将VPN设置为Per-App VPN,并且仅将您的应用与VPN关联。这应该满足您的大多数要求。这样做的限制是只能通过移动设备管理(MDM)解决方案进行部署。
另一种选择是将VPN作为标准VPN运行并通过其建立所有隧道,但是在VPN网络扩展中使用NEPacketTunnelFlow::readPacketObjects(),从NEFlowMetaData获取NEPacket响应,然后使用sourceAppUniqueIdentifier参数来标识您的应用。然后,您可以在网络扩展中对数据包处理进行编码,以便随后可以通过VPN和代理发送来自应用程序的数据,然后可能会将所有其他接收到的数据包转发给其预期的收件人。