IOS 应用程序上的一次性密码 - 键盘上方未显示建议
One Time Password On IOS App - Suggestion not appearing above keyboard
我正在寻找在键盘顶部为 IOS 应用程序中的 OTP 条目提供 OTP 的建议。
phone 上的 IOS 版本是 12.2。
我的应用程序的 ISO SDK 版本是 12.1。
使用 Visual Studio (Windows) 2017 15.9.13
现在我做了以下事情......
- 创建了一个新控件 public class OTPEntry : Xamarin.Forms.Entry
- 为控件创建了一个渲染器,在此我做了 Control.TextContentType = UITextContentType.OneTimeCode;
- 然后我在具有正确命名空间等的 ContentPage 上使用此控件
所以,当我使用此控件在表单上时,我会使用 OTP 向 phone 发送文本。在 phone 上,如果我单击代码,它会提供 "Copy Code" 选项,因此它被识别为 OTP。
然而,对于我来说,当我点击控件调出键盘时,我没有按预期看到键盘顶部的代码。
我可能遗漏了什么?
看起来实现这个的步骤相对简单,但我似乎无法让它工作。
任何想法、指点将不胜感激。
下面的代码...
控制 - 在 Xamarin Forms 项目中
namespace XXXX
{
public class OTPEntry : Xamarin.Forms.Entry
{
public OTPEntry()
{
}
}
}
渲染器 - 在 IOS 项目中
namespace XXXX.YYYY.ZZZZ
{
public class OTPEntryRenderer : EntryRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
Control.TextContentType = UITextContentType.OneTimeCode;
}
...
...
}
}
}
用法 - Xamarin Forms 项目中的内容页面
<XXXX:OTPEntry x:Name="txtToken" Keyboard="Numeric" Placeholder="Two Factor Code" HeightRequest="50" WidthRequest="300" TextColor="#2A295B" BackgroundColor="White" Margin="0"/>
所以 - 在验证代码似乎没问题并且对其他人有效后,我开始认为我要疯了。
然后我查看了 phone 设置,发现 "Autofill Passwords" 已关闭。
一旦我打开它,这似乎按预期工作。
首先,OneTimeCode
在iOS12之后可用。0.So我建议在CustomRenderer
中添加以下代码
if (UIDevice.CurrentDevice.CheckSystemVersion(12, 0))
{
Control.TextContentType = UITextContentType.OneTimeCode;
}
发生的事情是,当 OTP 消息收到消息收件箱时,iOS 运行一个简单的文本匹配算法来确定该消息是否是有效的 OTP 消息,并根据该算法跟踪它在内存中,然后当用户单击应用程序中启用了 OTP 自动填充的文本字段时,iOS 键盘弹出该 OTP 作为键盘中的建议。这样您的用户就可以在应用程序中填写 OTP,而无需离开应用程序或返回消息应用程序。
您需要检查OTP格式是否正确。验证短信验证码格式是否合法的一种方法是在iPhone上打开[SMS],点击短信验证码,如果从call option底部copy captcha option, can表明可以;
并且别忘了在系统设置->账户和密码中打开自动填充密码。
我正在寻找在键盘顶部为 IOS 应用程序中的 OTP 条目提供 OTP 的建议。 phone 上的 IOS 版本是 12.2。 我的应用程序的 ISO SDK 版本是 12.1。 使用 Visual Studio (Windows) 2017 15.9.13
现在我做了以下事情......
- 创建了一个新控件 public class OTPEntry : Xamarin.Forms.Entry
- 为控件创建了一个渲染器,在此我做了 Control.TextContentType = UITextContentType.OneTimeCode;
- 然后我在具有正确命名空间等的 ContentPage 上使用此控件
所以,当我使用此控件在表单上时,我会使用 OTP 向 phone 发送文本。在 phone 上,如果我单击代码,它会提供 "Copy Code" 选项,因此它被识别为 OTP。 然而,对于我来说,当我点击控件调出键盘时,我没有按预期看到键盘顶部的代码。
我可能遗漏了什么? 看起来实现这个的步骤相对简单,但我似乎无法让它工作。
任何想法、指点将不胜感激。
下面的代码...
控制 - 在 Xamarin Forms 项目中
namespace XXXX
{
public class OTPEntry : Xamarin.Forms.Entry
{
public OTPEntry()
{
}
}
}
渲染器 - 在 IOS 项目中
namespace XXXX.YYYY.ZZZZ
{
public class OTPEntryRenderer : EntryRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
Control.TextContentType = UITextContentType.OneTimeCode;
}
...
...
}
}
}
用法 - Xamarin Forms 项目中的内容页面
<XXXX:OTPEntry x:Name="txtToken" Keyboard="Numeric" Placeholder="Two Factor Code" HeightRequest="50" WidthRequest="300" TextColor="#2A295B" BackgroundColor="White" Margin="0"/>
所以 - 在验证代码似乎没问题并且对其他人有效后,我开始认为我要疯了。
然后我查看了 phone 设置,发现 "Autofill Passwords" 已关闭。 一旦我打开它,这似乎按预期工作。
首先,OneTimeCode
在iOS12之后可用。0.So我建议在CustomRenderer
if (UIDevice.CurrentDevice.CheckSystemVersion(12, 0))
{
Control.TextContentType = UITextContentType.OneTimeCode;
}
发生的事情是,当 OTP 消息收到消息收件箱时,iOS 运行一个简单的文本匹配算法来确定该消息是否是有效的 OTP 消息,并根据该算法跟踪它在内存中,然后当用户单击应用程序中启用了 OTP 自动填充的文本字段时,iOS 键盘弹出该 OTP 作为键盘中的建议。这样您的用户就可以在应用程序中填写 OTP,而无需离开应用程序或返回消息应用程序。
您需要检查OTP格式是否正确。验证短信验证码格式是否合法的一种方法是在iPhone上打开[SMS],点击短信验证码,如果从call option底部copy captcha option, can表明可以;
并且别忘了在系统设置->账户和密码中打开自动填充密码。