1

WKWebView を使用してネイティブ アプリに読み込む Web アプリケーションがあります。最初のナビゲーションはログイン画面で、ios バイオメトリクスでユーザーを認証する方法を探しています。あなたが私を助けることができるかどうか私に知らせてください.

4

1 に答える 1

0

WKWebViewのユーザー コンテンツ コントローラ にメッセージ ハンドラを追加します。self.webView.configuration.userContentController.add(self, name: "AuthHandler")

のクラスselfWKScriptMessageHandlerプロトコルに適合させて実装しfunc userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage)ます。
Web アプリで、クリックするとメッセージ ハンドラーを呼び出すボタンを追加します。

<button id="authButton" onClick="callAuthHandler()"/>

func callAuthHandler(){
    window.webkit.messageHandlers.AuthHandler.postMessage("authCallback");
}
func authCallback(status){
   console.log(status);
}

ネイティブ コードでは、

func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
   if message.name == "AuthHandler",let callBack = message.body as?
      String, LAContext().canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: nil){
      LAContext().evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "To authenticate") { (success, error) in
         self.webView.evaluateJavaScript(callBack+"(\(success))
      }
   }
}
于 2017-12-20T22:53:56.800 に答える