7

我正在开发一个 Cordova (~PhoneGap, ~Ionic) 应用程序,我遵循Apple 指南,并在我的 HTML 登录表单中添加了自动完成属性,以询问用户在尝试注册时是否要保存他们的凭据。

在 Android 上,会出现询问用户是否要正确存储其凭据的弹出窗口,并且我可以在下次尝试登录时选择我存储的凭据。但在 iOS 上并非如此

我首先想到的可能会阻止 webview 关联 iOS 的密码和域的事实是,我为后者使用了自定义域(例如 iosapp://)。

我无法更改正在使用的自定义域,有没有办法让它提示用户保存他们的凭据?


可以通过这种方式重现此问题:

  1. 插件 cordova-plugin-ionic-webview添加到 Cordova 应用程序 (cordova-ios 5.1.0)
  2. 添加<preference name="Hostname" value="somescheme" />到您的 config.xml 为您的应用程序指定一个自定义主机名(默认主机名是 ionic:// 我相信也会有同样的问题)
  3. onDeviceReady 重定向到我的 PoC(适用于所有其他浏览器):
  window.location.href = 'https://gabriele-sacchi.github.io/pocs/biometric';

在 Android Cordova 中工作的 PoC:


gitlab问题

4

1 回答 1

1

无法从您的 web 视图触发 iCloud 钥匙串提示。cordova-plugin-ionic-webview使用 iOS 上的类WKWebView,它似乎不支持 iCloud 钥匙串。它与您设置的自定义应用程序主机名无关。正如共享网络凭据的文档中提到的那样:“在 Safari 中登录网站时,用户经常将用户名和密码保存在他们的 iCloud 钥匙串中”

这就是为什么对于 iOS,我必须使用 safari 让我的用户从 web 视图进行身份验证并允许他们保存密码。有一个很棒的 cordova 插件可以用 Safari ( cordova-plugin-safariviewcontroller ) 打开 webviews。如果你使用的是 Ionic,还有一个 Ionic 原生支持这个插件:safari-view-controller

我尝试使用 实现您的链接cordova-plugin-safariviewcontroller,并且正确触发了 iCloud 钥匙串。事实是您需要更改应用程序中的一些逻辑,因为通过 using 进入 webviewwindow.location.href=https://your.url仅适用于 Android。您将需要检测平台,然后正确重定向用户。

在此处输入图像描述

于 2021-02-19T00:27:42.597 回答