После входа пользователя go обратно в приложение (WebKit, swift, json) - PullRequest
1 голос
/ 12 июля 2020

Я пытаюсь закрыть браузер WebKit после аутентификации пользователя. Я построил API рельсов бэк-энда, к которому мой быстрый интерфейс делает запросы. Мой API-интерфейс rails отвечает учетными данными пользователя.

struct LoginView: UIViewRepresentable {

  let request: URLRequest

  func makeUIView(context: Context) -> WKWebView {
     return WKWebView()
  }

  func updateUIView(_ uiView: WKWebView, context: Context) {
      uiView.load(request)
  }
   
  func webViewDidFinishLoad(_ uiView: LoginView) {
     if let text = uiView.request.url?.absoluteString{
         print("THIS IS THE URL \(text)")
     }
  }

}

Мой API возвращает JSON с ключом учетных данных (содержит токен), и если в ответе есть ключ учетных данных, я хотел бы вернуть обратно в мое приложение, так как пользователь войдет в систему.

1 Ответ

0 голосов
/ 12 июля 2020

Вы можете использовать следующий метод делегата WKWebView, чтобы получить обратный вызов и вернуться в приложение.

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping ((WKNavigationActionPolicy) -> Void)) {
      if let url = navigationAction.request.url {
              print(url.absoluteString)
              if url.absoluteString.hasPrefix("your_url"){
                  // Authenticated, remove webview and back to app
                  self.stopLoading()
           }
      }
      decisionHandler(.allow)
   }

    func stopLoading() {
        webView.removeFromSuperview()
        //Move to view controller
        // Load & push/present your view controller here
    }

Сообщите мне, решит ли он вашу проблему. Рад помочь больше.

...