自动填充凭据
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-password、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 Developer Portal 中配置 App Id、Capabilities 和 Profiles)。
Apple App Site Association 文件
创建名为 apple-app-site-association 的站点关联文件,如下所示,将 TEAMID.BUNDLEID 替换为你自己的 Apple Team ID 和应用 Bundle ID(例如:8L65AZE66A.com.company.myapp)。
{
"applinks": {
"details": [
{
"appID": "TEAMID.BUNDLEID",
"paths": ["*"]
}
]
}
}
注意:虽然是 JSON 文件,但不要保存文件扩展名。
将该文件上传到你网站的 .well-known 文件夹(必须通过 HTTPS 托管)。URL 应遵循以下格式:https://my-app.com/.well-known/apple-app-site-association
验证
在你的 iOS 设备上可以验证应用站点关联文件是否正确。
前往 设置 > 开发者 > 通用链接 -> 诊断。输入 URL(例如 https://my-app.com),将显示类似以下的验证结果:

绿色勾号表示验证配置成功,而黄色警告表示存在问题。
其他验证工具
Apple 提供了一个工具来验证关联。注意:它在正确的配置上似乎也会失败。
Branch 提供了一个工具,用于验证链接、content-type 和 JSON 结构。但是,它会在无效的 JSON 模式上显示误报。