Прямо сейчас я реализовал простое расширение пакетного туннеля с помощью API-интерфейсов сетевого расширения для iOS 11+. Я хочу сделать это VPN только для приложений, чтобы трафик из Моего приложения можно было туннелировать через нашу VPN и прокси. Итак, мои вопросы
- Как остановить туннелирование при переключении пользователя на другие приложения. Один из вариантов - использовать методы делегирования приложения
-(void)applicationWillResignActive:(UIApplication *)application
или-(void)applicationDidEnterBackground:(UIApplication *)application
. - Если Пользователь напрямую завершает работу приложения с помощью принудительного выхода, тогда также следует отключить VPN - мы можем использовать
-(void)applicationWillTerminate:(UIApplication *)application
, но когда я пытался, иногда это не работало должным образом. - Что реализовать, чтобы справиться с тем же случаем, когда приложение вылетает. - В качестве обходного пути я думал реализовать что-то вроде механизма пинг-понга, где, если приложение активно, оно должно продолжать пинговать или обновлять любые общие данные, к которым будет обращаться расширение Packet Tunnel. Таким образом, в случае, если приложение остановится или завершится, Tunnel узнает о неактивности приложения и прекратит туннелирование самостоятельно.
- Чтобы поддерживать VPN-туннелирование активным, нам необходимо периодически обновлять токен, поэтому есть ли способ обновить настройки VPN и немедленно отразить изменения без перезапуска (остановки и повторного запуска) туннеля.
Пожалуйста, предложите правильные решения или обходной путь для вышеуказанных сценариев. Это было бы мне большим подспорьем.