如何让iOS 12自动填充请求在React本机应用程序中保存密码? 问题
我使用的是React Native 0.59.9(本文发布时最新版本),在我的移动应用程序中有一个登录屏幕,我希望iOS 12的自动填充功能能够为新用户获取并保存密码。根据我的设置,该应用程序会显示带有自动填充选项的键盘,但不会弹出新用户凭据的“保存密码” 键盘自动填充现在的样子: 一些背景资料 在React Native的文档中,它们现在在TextInput组件中公开textContentType。要为iOS 11自动填充设置它,用户名textContentType将设置为“username”,密码textContentType将设置为“password” RN textContentType文档: 对于iOS 12 autofill,它应该将“保存密码”功能也引入到移动应用程序中,现在(以前仅限于网站),密码的配置有所不同 密码textContentType将改为“newPassword”。这是不工作,但事实上,它似乎是错误的,并打破了应用程序,因为它建议用户名的密码字段与此设置 实施 我试图在React Native中实现iOS 12的自动填充功能:如何让iOS 12自动填充请求在React本机应用程序中保存密码? 问题,ios,reactjs,xcode,react-native,Ios,Reactjs,Xcode,React Native,我使用的是React Native 0.59.9(本文发布时最新版本),在我的移动应用程序中有一个登录屏幕,我希望iOS 12的自动填充功能能够为新用户获取并保存密码。根据我的设置,该应用程序会显示带有自动填充选项的键盘,但不会弹出新用户凭据的“保存密码” 键盘自动填充现在的样子: 一些背景资料 在React Native的文档中,它们现在在TextInput组件中公开textContentType。要为iOS 11自动填充设置它,用户名textContentType将设置为“username
<TextInput
placeholder={'Enter username'}
autoCapitalize={'none'}
autoCorrect={false}
textContentType={'username'}
/>
<TextInput
placeholder={'Enter password'}
autoCapitalize={'none'}
autoCorrect={false}
secureTextEntry={true}
textContentType={'newPassword'}
/>
在XCode中,我设置了关联的域以指向该域。
例如:
输出
实现此功能的预期结果是,当新用户输入其凭据时,iOS会弹出“保存密码”对话框
弹出对话框应该是什么样子的:
相反,它永远不会弹出。用户只要在成功登录后直接进入应用程序,就不会出现保存密码的对话框。这本质上意味着我的任何用户都不能将其凭据保存到他们选择的密码管理器(甚至连iCloud keychain都不能)
由于这项功能似乎无法在模拟器上测试,因此我一直在安装了iOS 12.3.1并在设置中启用自动填充的iPhone7 Plus上进行测试,如下图所示
你知道我做错了什么,或者我错过了一步吗?成功了!下面是我为让它工作所做的 台阶
{
"webcredentials": {
"apps": [
"ZT978FY6AB.com.company.my.app",
]
}
}
需要澄清的是,此解决方案适用于仅为应用程序的应用程序。无需登录的网站,无需将凭据从网站带入应用程序,无需webview登录设置。当我阅读有关自动填充的文档时,这一点并不明显。主持苹果应用程序网站协会的网站不需要任何登录或任何类似的内容,它可以是一个简单的网站,包含一些信息(可能是关于应用程序或制作应用程序的公司的信息)。感谢Yusuf的精彩概述!我正在尝试使用与您在iOS中为用户保存用户名和密码相同的功能设置我的应用程序,但我有一个快速的问题,因为我有点迷路了。我正在使用我在Heroku上托管的节点RESTAPI后端。我会使用我的Heroku URL的基础,例如www.myapp.h吗
webcredentials:www.mydomain.com
<TextInput
placeholder={'Enter username'}
autoCapitalize={'none'}
autoCorrect={false}
textContentType={'username'}
/>
<TextInput
placeholder={'Enter password'}
autoCapitalize={'none'}
autoCorrect={false}
secureTextEntry={true}
textContentType={'password'}
/>
webcredentials:www.example.com
https://www.example.com/apple-app-site-association
{
"webcredentials": {
"apps": [
“ZT978FY6AB.com.company.my.app”,
]
}
}
{
"webcredentials": {
"apps": [
"ZT978FY6AB.com.company.my.app",
]
}
}