如何让应用支持 Android 8.0 自动填充?
自从 Android Oreo 发布以来,自动填写功方便了用户在 App 内提交信息,例如信用卡、登陆信息、地址等等。现在 App 内的表格都可以自动填写,而且用户也无须费力记住复杂的密码,也免去了一次次填写的麻烦。
用户可以自行选择多种自动填写服务 (过程类似选择输入法)。在默认情况下,Google(服务)支持自动填写,不过用户也可以自行添加任何三方自动填写 App ,过程如下:
设定 -> 系统 -> 语言 -> 高级选项 -> 自动填写服务
自动填写现支持项目
现在,Google(服务)下的自动填写功能支持的项目包括:信用卡信息、地址、登陆信息、姓名和电话号码。当用户首次登陆或者创建账号时,自动填写功能同时允许用户保存该账号的认证信息。即使 App 内通过 WebViews 完成登陆 —— 用于打开登陆页面的内置浏览器控件 —— 用户依旧可以享用自动填写功能带来的方便,前提是设备内装有 Chrome 61 或者更高版本。
自动填写 API 完全开放,任何想要将该服务内嵌到自己 App 的开发者都可以下载该 API。现在我们正在和 1Password, Dashlane, Keeper 以及 LastPass 积极合作,加**者在 Android 平台上的认证。同时我们将会认证密码管理器(password manager)并将其添加到 Google Play 中,用户可以通过 “添加服务” 按钮跳转链接到 Google Play 中的页面。
开发者应该怎么做?
如果您是 App 开发者,只须要完成以下几个简单步骤,就可以在 App 中轻松添加自动填写功能:
对 App 进行测试,如有必要需要标注视图:
大部分情况下,让 App 支持自动填写功能不需要额外操作。但是为了保证行为一致性,我们建议开发者通过 android:autofillHints attribute 或者 setAutofillHints ( ) method 向框架提供关于字段内容的显式提示信息(explicit hint)。
如果 App 使用 WebViews,那么开发者可以通过 HTML Autocomplete Attributes 提供字段提示信息。有一点要注意,设备须要将 Chrome 浏览器升级至 61 或以上版本,WebViews 才能支持自动填写功能。即使您的 App 采用自定义视图,开发者也可以通过定义元数据来添加自动填写功能。
了解更多:https://developer.android.google.cn/guide/topics/text/autofill.html#custom_views_with_standard_view_structure
那么像是 Captcha(验证码)或者消息对话框这类完全不适用自动填写的应该怎么操作呢?开发者只需要将视图参数设定为 IMPORTANT_FOR_AUTOFILL_NO(或者将视图层次根设定为 IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS)。开发者得负责地使用该字段,牢记用户可以随时绕过这一步骤,只要长按输入框(EditText)并选定悬浮菜单中的自动填写就行了。
关联网站和移动端 App
Google 自动填写功能够无缝分享网站和移动端 App 之间的登陆信息,即是说 Chrome 浏览器保存的密码亦可以应用在原生 App 上。但是如何保证三方 App 也能分享信息呢?这须要开发者在网站和移动端 App 之间构建明确联系,步骤如下:
第一步:在 yourdomain.com/.well-known/assetlinks.json 中托管 JSON 文件
如果之前接触过类似 App Link或者 Google Smart Lock 的技术,那么您可能听说过数字资产链接(DAL)文件。DAL 采用 JSON 文件的形式保存在您的网络服务器 .well-known 目录中,用于公开声明与此网站关联的其他 App 或者网站。
请参阅 Smart Lock for Passwords 指南,按照指南中的步骤在服务器上正确创建并且托管 DAL 文件。就用户登录 App 来说,Smart Lock 虽然更为高级,但是我们的自动填写功能其实采用的是相同的基础架构来验证 App 和网站之间的关联信息。而且,因为 DAL 文件是完全公开的,第三方自动填写服务开发者也可以使用关联信息来保障实现安全性。
第二步:根据相同信息更新 App 的清单文件(Manifest)
同样地,请根据 Smart Lock for Passwords 指南中《声明 Android App 关联项》条目,完成此步骤。
开发者须要根据 asset_statements 资源更新 App 的清单文件,该资源能够链接到托管 assetlinks.json 文件的 URL 地址。完成操作之后,开发者需要重新上传 App 到 Google Play,并且填写 “关联提交表格”(Affiliation Submission Form),届时关联才正式生效。
Android Studio 3.0 中 App Links Assistant 能够帮开发者自动生成上述所有信息。打开 DAL 生成器工具(工具 -> App Links Assistant -> 打开数字资产链接文件生成器),确保启用名为 “支持 App 和网站之间共享认证信息” 的新复选框。
然后点击 “生成数字资产链接文件”,将预览信息复制到 DAL 文件中,并将文件托管在服务器和 App 上。记得核实选定域名和证书是否正确。
Android 自动填写功能还在初级阶段,不论用户是通过 Google 还是三方密码管理器来使用该功能,我们都将继续努力,改善体验。
展望未来
我们的主要努力方向是:
-
Google 自动填写:我们希望用户从一开始就能够有很好的体验,因此所有 Android Oreo 设备都支持 Google 自动填写功能。一直以来,我们不断改善字段检测和数据质量,同时扩大支持范围,增加保存数据类别。
-
WebView 支持:从 Chrome 61 开始,我们引进了对 WebViews 表单填写支持,同时我们会继续测试、加固并且改善该集成,因此即使您的 App 采用WebViews,同样可以享受到自动填写功能。
-
第三方 App 支持:我们正在和生态圈伙伴紧密合作,确保 App 能够完美构建在自动填写基础框架上。强烈建议开发者试着在 Android Oreo 上发布自己的 App ,看看能否如期支持自动填写。详细信息请参阅以下链接中的《自动填写框架》完整版文档。
自动填写框架:https://developer.android.google.cn/guide/topics/text/autofill.html
如遇任何问题或有任何宝贵意见,欢迎您通过留言等方式与我们联系,帮助我们进一步改进产品。
推荐阅读:
Android Oreo 常见问题
2.0 | Android 开发者 FAQ Vol.9
正式发布 Android 架构组件 1.0 稳定版 | 附带中文介绍视频
https://developer.android.google.cn/guide/topics/te