问题
我使用的是React Native 0.59.9(本文发布时的最新版本),并且在我的移动应用中有一个登录屏幕,我希望 iOS 12 的自动填充功能能够为新用户获取并保存密码。根据我的设置,该应用程序显示带有自动填充选项的键盘,但永远不会弹出新用户凭据的“保存密码”。
键盘自动填充现在的样子:https : //imgur.com/6gVpGbU
一些背景信息
在 React Native 的文档中,他们现在在 TextInput 组件中公开 textContentType。要为 iOS 11 自动填充设置它,用户名 textContentType 将设置为“username”,密码 textContentType 将设置为“password”。
RN textContentType 文档:https ://facebook.github.io/react-native/docs/textinput#textcontenttype
对于 iOS 12 自动填充,现在应该也将“保存密码”功能引入移动应用程序(以前仅限网站),密码配置不同。
密码 textContentType 将改为设置为“newPassword”。但这不起作用,实际上它似乎有问题并破坏了应用程序,因为它建议使用此设置的密码字段的用户名...
执行
我试图在 React Native 中实现 iOS 12 的自动填充功能:
<TextInput
placeholder={'Enter username'}
autoCapitalize={'none'}
autoCorrect={false}
textContentType={'username'}
/>
<TextInput
placeholder={'Enter password'}
autoCapitalize={'none'}
autoCorrect={false}
secureTextEntry={true}
textContentType={'newPassword'}
/>
在移动设置中,我确保启用关联域作为权利。(通过 Apple Developer 网站完成)。
在我的域(例如 www.mydomain.com)中,具有以下内容的文件 apple-app-site-association(无扩展名)已放入根目录并公开可用(支持 https)。
{
"webcredentials": {
"apps": [
“ZT978FY6AB.com.company.my.app”,
]
}
}
在 XCode 中,我设置了关联域以指向该域。例子:
webcredentials:www.mydomain.com
输出
实现这一点的预期输出是当新用户输入他们的凭据时,iOS 会弹出“保存密码”对话框。
弹出对话框应该是什么样子:https : //imgur.com/GH4hfP8
相反,它永远不会弹出。用户在成功登录后直接进入应用程序,而不会出现保存密码的对话框。这基本上意味着我的用户都不能将他们的凭据保存到他们选择的密码管理器(甚至 iCloud 钥匙串)。
由于此功能似乎无法在模拟器上进行测试,因此我一直在安装了 iOS 12.3.1 并在设置中启用自动填充的 iPhone 7 Plus 上对其进行测试,如下图所示。
任何想法我做错了什么,或者如果我错过了一步?