Автоматическая проверка OTP в iOS?

Есть ли способ получить доступ к данным из iPhone inbox (SMS) в приложение ios, чтобы выполнить автоматическую проверку OTP, как в Android? Буду признателен за вашу помощь.

Ответ 1

В iOS 12 Apple представила функцию под названием " Security Code AutoFill.

Чтобы использовать это в своем приложении, все, что вам нужно сделать, это установить UITextField входные виды textContentType property oneTimeCode.

otpTextField.textContentType = .oneTimeCode

ПРИМЕЧАНИЕ. Код безопасности AutoFill будет работать только с System Keyboard, он не будет работать с пользовательской клавиатурой.

Видео WWDC

Когда вы получите OTP, он будет выглядеть примерно так:

enter image description here

Ответ 2

ОБНОВИТЬ

Начиная с iOS 12 Apple будет поддерживать автозаполнение паролей в UITextField, UITextView и любое пользовательское представление, которое принимает протокол UITextInput. Системная клавиатура установила для textContentType значение .oneTimeCode

1) Использование кода

singleFactorCodeTextField.textContentType =.oneTimeCode

2) Использование раскадровки /XIB

Выберите UITextField/UITextView в storyboard/XIB Нажмите "Инспектор атрибутов". Перейти к черту ввода текста, нажмите на тип контента и выберите один код времени и все готово.

Операционная система автоматически обнаружит коды подтверждения из сообщений с этим набором UITextContentType.

Предупреждение

Если вы используете пользовательское представление ввода для текстового поля ввода кода безопасности, iOS не сможет отобразить необходимый интерфейс автозаполнения.

WWDC 2018 iPhoneX Device

Для получения дополнительной информации вы можете проверить это на Apple, разработчик oneTimeCode

Кроме того, просмотрите сессию 204 WWDC 2018 - Автоматическое заполнение надежных паролей и кодов безопасности и перейдите к 24:28 для автоматического предварительного заполнения OTP.

Ответ 4

В Xamarin iOS, для> = iOS 12:

Прежде всего, в SMS необходимо указать ключевое слово "код" или "код доступа" в их сообщение и не использовать пробелы после кода. если вы получили SMS и у вас есть кнопка "Копировать код", тогда она будет работать

enter image description here

Затем вам нужно поместить это:

_txtField = new UITextField()
{
   UserInteractionEnabled = true,
};
if (UIDevice.CurrentDevice.CheckSystemVersion(12, 0))
{
  _txtField.TextContentType = UITextContentType.OneTimeCode;          
}
_txtFieldDelegate = new UITextFieldDelegate();
_txtField.Delegate = _txtFieldDelegate;
_txtField.BecomeFirstResponder();

ПРИМЕЧАНИЕ. Автозаполнение кода безопасности работает только с Системной клавиатурой (не обычным).

Ответ 5

вы можете легко установить это в раскадровке

Click on Attribute inspector. Go to text input trait, click on Content type and select one time code

Ответ 6

Вы можете получить OTP из вашего сообщения.

otptextField.textContentType = .oneTimeCode

Можете пожалуйста получить проект по его ссылке.

https://github.com/karthickkck315/Automatic-OTP

Ответ 7

Также важно, чтобы полученное текстовое сообщение содержало что-то с "кодом", например

.

"your passcode is:123456"

или

"12345 - ваш код для входа в систему"

что-то в этом роде.

НЕ!

Your App: 12345

Вы можете проверить, будет ли код в вашем текстовом сообщении работать с типом .oneTimeCode, нажав подчеркнутый код в вашем сообщении. Если всплывет диалоговое окно с надписью "скопировать код", вы можете идти. В противном случае вам может понадобиться изменить текст вашего сообщения.

Ответ 8

В iOS 12 можно

вам нужно изменить UITextField OTPs textContentType на.oneTimeCode.

yourOtpTextField.textContentType = .oneTimeCode

Этого также можно добиться с помощью раскадровки

Выберите UITextField в раскадровке /XIB щелкните Щелкните по инспектору атрибутов. Перейдите к черту ввода текста, выберите тип содержимого и выберите один временной код и выполните его.

* Защитный код работает только с Системной клавиатурой. Поэтому избегайте использования пользовательской клавиатуры.

Ответ 10

Также... на телефоне "Автозаполнение паролей" необходимо включить.

Ответ 11

if(server.google==server.connected)}{
   return server;
}

при подключении сделать лямбду ( e-> ""); !!

Ответ 12

Нет.

Поскольку это будет считаться проблемой конфиденциальности, вы не сможете получить доступ к входящим почтовым ящикам пользователей.