自动填充凭证
Android、iOS 和 Web 浏览器都内置了密码管理器,能够自动检测用户名和密码输入框,并安全地存储和调用这些凭证。
为了让 Apple 和 Google 能够自动填充和保存凭证,必须在你的网站和应用之间配置双向关联。在本指南中,我们将遵循与 深度链接 相同的步骤,但会增加 Capacitor 配置 和使用 autocomplete 属性的步骤。
编写应用代码
你的应用需要为用户名和密码设置 ion-input,并且必须使用 autocomplete 属性。示例如下:
- Angular
- Javascript
<form>
<ion-list>
<ion-item>
<ion-label>电子邮箱地址</ion-label>
<ion-input appAutofill type="email" name="email" autocomplete="email" [(ngModel)]="email" required email></ion-input>
</ion-item>
<ion-item>
<ion-label>密码</ion-label>
<ion-input appAutofill type="password" name="password" autocomplete="current-password" required [(ngModel)]="password"></ion-input>
</ion-item>
</ion-list>
<ion-button type="submit">提交</ion-button>
</form>
由于 ion-input 在自动填充字段时存在一个 webkit 漏洞,你需要一个变通方案,将 这个指令 复制到你的代码中。
这个 示例应用 使用了本指南中的技术,允许在 iOS、Android 和 Web 上自动填充凭证。
<form>
<ion-list>
<ion-item>
<ion-label>电子邮箱地址</ion-label>
<ion-input type="email" name="email" autocomplete="email" required email></ion-input>
</ion-item>
<ion-item>
<ion-label>密码</ion-label>
<ion-input id="pwd" type="password" name="password" autocomplete="current-password" required></ion-input>
</ion-item>
</ion-list>
<ion-button type="submit">提交</ion-button>
</form>
由于 ion-input 在自动填充字段时存在一个 webkit 漏洞,你需要以下变通代码:
document.getElementById('pwd').children[0].addEventListener('change', (e) => {
this.password = (e.target as any).value;
});
autocomplete 属性允许自动填充凭证类型,如 username、current-pasword、new-password。即使没有额外的配置,它也可以用于电话号码、一次性验证码、信用卡信息以及 更多 场景。
设置 Capacitor 服务器主机名
默认情况下,Capacitor 会使用 localhost 域名(在 iOS 上是 capacitor://localhost,在 Android 上是 http://localhost)。由于你希望密码管理器为你的应用建议已存储的凭证,你需要将配置从 localhost 改为 my-app.com(这是你与应用关联的域名)。
你可以在 capacitor.config.ts 或 capacitor.config.json 文件中进行设置:
const config: CapacitorConfig = {
...
server: {
hostname: 'my-app.com',
androidScheme: 'https',
}
};
iOS 配置
在 XCode 中配置
在 XCode 中打开你的项目,并导航到 Signing & Capabilities。

- 点击
+,添加Associated Domains能力。 - 在 Domains 部分点击
+,并填写applinks:my-app.com,其中my-app.com是你拥有并将为其创建应用关联文件的域名。 - 确保
Automatically manage signing已启用(否则你需要在 Apple 开发者门户 中配置 App Id、Capabilities 和 Profiles)。