Настройте кэш браузера в SFSafariViewController, используя Swift iOS - PullRequest
0 голосов
/ 16 января 2020

В моем приложении я реализую функцию, в которой для какой-то части мне нужно открыть свой сайт с помощью SFSafariViewController. Для этого я не хочу, чтобы пользователь снова входил в веб-приложение, поэтому, прежде чем открыть SFSafariViewController, я хочу передать токен, почту и другую необходимую информацию. Так что это возможно и позволит мне использовать кеш браузера.

1 Ответ

2 голосов
/ 18 января 2020

SFSafariViewController очень ограничен в настройках, как видно из документации: https://developer.apple.com/documentation/safariservices/sfsafariviewcontroller. Apple намеренно хранит файлы cookie и конфигурацию сафари отдельно от приложений, которые используют его в целях безопасности и конфиденциальности.

Я не знаю, если это именно то, что вы видите, но я столкнулся с аналогичной проблемой, когда, если пользователь вошел в систему через SFSafariViewControler, а затем вышел из системы (не используя SFSafariViewController), затем войдя снова, он не будет запрашивать логин / пароль, потому что он все еще кэшируется в браузере.

Практически единственными двумя вариантами для этого являются:

  1. Порядок выхода из системы происходит в пределах SFSafariViewController, чтобы вы могли таким образом удалить файлы cookie.
  2. У Apple есть новый класс потока аутентификации ASWebAuthenticationSession (документы здесь ), который имеет новое свойство, которое вы можете установить, под названием prefersEphemeralWebBrowserSession, которое, по сути, открывает браузер в приватном режиме. Это предотвращает сохранение любых файлов cookie в браузере. Единственный недостаток - свойство prefersEphemeralWebBrowserSession доступно только в iOS 13+.

Если это та же проблема, с которой вы столкнулись, и вы можете ограничить ваше приложение iOS 13+, то я бы предложил маршрут ASWebAuthenticationSession, в противном случае вам может понадобиться найти другое решение ,

...