【发布时间】:2019-10-24 17:45:59
【问题描述】:
问题
我正在使用 React Native 0.59.9(在本文发布时最新),并且在我的移动应用程序中有一个登录屏幕,我希望 iOS 12 的自动填充功能能够使用并保存新用户的密码。根据我的设置,该应用会显示带有自动填充选项的键盘,但不会弹出新用户凭据的“保存密码”。
键盘自动填充现在的样子: https://imgur.com/6gVpGbU
一些背景信息
在 React Native 的文档中,它们现在在 TextInput 组件中公开了 textContentType。要将其设置为 iOS 11 自动填充,用户名 textContentType 将设置为“用户名”,密码 textContentType 将设置为“密码”。
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 开发者网站完成)。
在我的域(例如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 上对其进行测试,如下图所示。
知道我做错了什么,或者我错过了一步吗?
【问题讨论】:
标签: ios reactjs xcode react-native