У меня есть быстрое приложение WKWebView с аутентификацией пользователя, приложение позволяет пользователям регистрировать свои устройства, собирая идентификатор поставщика устройства. Когда пользователь запускает мобильное приложение, оно проверяет, зарегистрировано ли мобильное устройство, а затем проверяет данные для входа, связанные с зарегистрированным устройством. Пока все хорошо.
Моя проблема в том, что по истечении сеанса PHP пользователи будут перенаправлены на страницу входа. Если пользователь закроет приложение и снова откроет его, он зарегистрирует пользователя без повторного ввода данных для входа. PHP тайм-аут сеанса не может быть изменен из-за политики компании.
Я хотел бы знать, смогу ли я обнаружить изменение URL-адреса страницы входа и отправить идентификатор поставщика устройства с URL-адресом страницы входа, аналогичным процесс запуска приложения. Итак, по истечении сеанса PHP пользователи будут автоматически входить в систему без необходимости повторно вводить свои учетные данные.
Вот текущий код, который я использую, и это мое первое приложение IOS , и у меня очень ограниченный опыт в области мобильного программирования, и последние пару дней я безуспешно искал. Мы высоко ценим образцы кодов.
import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {
var webView: WKWebView!
override func loadView() {
let webConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.uiDelegate = self
webView.navigationDelegate = self
view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
// get device vendor id
let mystring = UIDevice.current.identifierForVendor!.uuidString
let webUrl = "https://www.mydomain/login/" + mystring
let myURL = URL(string: webUrl)
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
}
func webView(_ webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo,
completionHandler: @escaping (Bool) -> Void) {
let alertController = UIAlertController(title: nil, message: message, preferredStyle: .actionSheet)
alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action) in
completionHandler(true)
}))
alertController.addAction(UIAlertAction(title: "Cancel", style: .default, handler: { (action) in
completionHandler(false)
}))
present(alertController, animated: true, completion: nil)
}
}