5

アプリ内で支払いを処理しているAndroidアプリがあります。支払いには3d-secure確認が必要な場合もあります。したがって、これには、コードの入力など、適切なアクションを実行できる Web ページにユーザーをリダイレクトする必要があります。私の場合、このアプリはスウェーデンのユーザーを対象としており、bank IDこの検証を実行するには、同じデバイスまたは別のデバイスで別の " " アプリを開く必要があるページにユーザーをリダイレクトします。

私たちのiOSアプリでは、この機能は期待どおりに機能します。ユーザーが検証を実行すると、ブラウザはコールバックを受け取り、それを使用してアプリを適宜更新できますが、使用しAndroidWebViewいる には通知されません。そのため、これまでのところ、ユーザー検証イベントを処理できません。

これまたは同様のユースケースの経験がある人はいますか? どんな助けでも大歓迎です。

4

1 に答える 1

9

Android WebView の Nordea の 3D セキュア ページで同様の問題が発生しました。ローカル ストレージにアクセスしようとしているページに行き着きました。アプリを機能させるために、以下のコードをアプリに追加しました。

mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setDatabaseEnabled(true);

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
  mWebView.getSettings().setDatabasePath("/data/data/" + 
    mWebView.getContext().getPackageName() + "/databases/");
}

mWebView.setWebViewClient(new WebViewClient(){
  @Override
  public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if(url.startsWith("intent:")){
      Intent intent = new Intent();
      intent.setPackage("com.bankid.bus");
      intent.setAction(Intent.ACTION_VIEW);
      intent.addCategory(Intent.CATEGORY_BROWSABLE);
      intent.addCategory(Intent.CATEGORY_DEFAULT);
      intent.setType("bankid");
      intent.setData(Uri.parse("bankid://www.bankid.com?redirect=null")) ;
      startActivityForResult(intent, 0);
      return true;
    }

    // your existing override code goes here probably "return false"  
    // to stop webview redirects to browser.
  }
});
mWebView.loadUrl(url);
于 2016-03-30T13:26:23.277 に答える