Как заполнить OTP из окна сообщения пользователя в приложение прямо в iPhone?

Я работаю над приложением для интернет-торговли с доступными приложениями для мобильных устройств и iPhone. Учитывая недавнюю рыночную тенденцию, мы работаем над включением двухфакторной аутентификации. Для этого мы будем отправлять одноразовый пароль в виде смс на зарегистрированный номер мобильного телефона пользователя.

Есть ли способ, чтобы OTP мог автоматически заполняться в приложении из окна сообщения пользователя в iPhone? Какой алгоритм я должен использовать, чтобы мое приложение читало окно сообщения пользователя?

Заранее спасибо:)


person Yasha    schedule 03.01.2014    source источник
comment
Этот вопрос не содержит действительного и полезного ответа.   -  person Yasha    schedule 03.01.2014
comment
действительный и полезный с точки зрения чего? нет возможности прочитать смс программно подтверждается. Другой способ, которым вы можете смотреть вперед, предлагает @rckoenes.   -  person Janak Nirmal    schedule 03.01.2014
comment
Возможные ответы на сайте предполагают сначала взломать ios. Взлом iPhone похож на повышение привилегий, которое мой клиент может делать, а может и не делать. я не могу попросить своего клиента обязательно сделать джейлбрейк своего телефона, чтобы мое приложение работало на нем без сбоев.   -  person Yasha    schedule 03.01.2014
comment
Для этого у нас есть тэг джейлбрейка здесь, на SO, а также вы можете указать в своем вопросе, что вы также открыты для возможностей джейлбрейка. И я предложил possible duplicate не дублировать.   -  person Janak Nirmal    schedule 03.01.2014
comment
Хорошо, да, согласен, но я просто хотел сказать вам, что ищу более осуществимые варианты, чем предложенные в возможном дубликате. Кроме того, я не использовал тег джейлбрейка и не использовал этот термин, поэтому я хотел бы добавить, что я не готов играть с телефоном конечного клиента. Я надеюсь, что теперь я ясно.   -  person Yasha    schedule 03.01.2014
comment
Могу ли я узнать, как отправить OTP с мобильного на определенный номер мобильного телефона в виде SMS.   -  person SURESH SANKE    schedule 30.09.2015


Ответы (3)


Вы можете получить доступ к SMS из вашего приложения. Так что лучше попросите пользователя ввести свой контактный номер и отправить SMS на свой мобильный

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    if (!url) {
        UIApplication * yourapplication =[UIApplication sharedApplication];
        NSString *outputpath =@"appname://data/";
        NSURL *url =[NSURL URLWithString:outputpath];
        [yourapplication openURL:url];
        return NO;
    }

    NSUserDefaults *defaultString =[NSUserDefaults standardUserDefaults];
    NSString * commonString =[url absoluteString];
    if (commonString.length<=15) {
        //
    }
    else
    {
        [defaultString setObject:commonString forKey:@"urlString"];
    }
         //send info to the screen you need and can navigate
    return YES;
}
person Charan Giri    schedule 03.01.2014
comment
LoadLog (бесплатное приложение) Я разработал это приложение, в котором вся информация будет отправляться только через SMS. Для этого приложения сервер не используется - person Charan Giri; 03.01.2014
comment
Пользователь уже получает смс на свой мобильный, но я хочу облегчить ему этот процесс. OTP должен автоматически заполняться, когда пользователь получает его в виде sms. - person Yasha; 03.01.2014
comment
@Yasha, это то, что я сказал, OTP будет отправляться только в SMS (единственный и лучший способ для мобильных телефонов), и вы можете получить к ним доступ. Вы ожидаете чего-то кроме смс? - person Charan Giri; 03.01.2014
comment
Да, я с нетерпением жду возможности, где, если пользователь использует приложение на том же телефоне, на который приходит смс, приложение должно быть способно автоматически считывать одноразовый пароль из этого смс и помещать его прямо в приложение. Это сделано для того, чтобы уменьшить работу пользователя по сворачиванию приложения, чтению смс, а затем возврату в приложение для ввода одноразового пароля. - person Yasha; 03.01.2014
comment
Это можно сделать. Я использовал то же самое в приложении LoadLog, но SMS будет отправлено администратором. - person Charan Giri; 03.01.2014
comment
хорошо, тогда я администратор, я буду отправлять смс пользователю, теперь мое приложение должно иметь возможность читать это смс. КАК это сделать, вот в чем вопрос. - person Yasha; 03.01.2014
comment
я отправлю код для него - person Charan Giri; 03.01.2014
comment
да..ты..с нетерпением жду этого :) - person Yasha; 03.01.2014
comment
В Plist вам нужно добавить ‹Key›CFBundleURLTypes‹/Key› ‹array›‹dict›‹Key›CFBundleURLName‹/key›‹string›yourbundleidentifier‹/string›‹Key›CFBundleURLSchemes‹/Key›‹array›yourappname‹/ массив›‹/словарь›‹/массив› - person Charan Giri; 03.01.2014
comment
ваше SMS должно быть похоже на appname://data/OTP ex: appname://data/1234 - person Charan Giri; 03.01.2014
comment
@CharanGiri Мне также нужно такое же поведение, я отправляю номер телефона на свой веб-сервис, и они отправляют сообщение OTP, например, ваш запрошенный OTP равен 123 и действителен до ....... Итак, как я могу его прочитать? из Моего приложения. Не могли бы вы объяснить мне некоторые шаги .. - person siva krishna; 26.11.2015
comment
@sivakrishna просто отправьте OTP-сообщение как appname://OTP-действителен до времени/ как SMS... как только вы получите сообщение, просто нажмите на SMS, оно будет перенаправлено в ваше приложение. Теперь важная часть: вам нужно проверить/написать некоторый фрагмент кода, чтобы разделить OTP и сделать его действительным до временной метки. как только вы разделите его, вы готовы использовать OTP. В приведенном выше коде попробуйте посмотреть, что у вас есть в commonString, отсюда начинается ваша логика разбиения - person Charan Giri; 27.11.2015
comment
@CharanGiri Спасибо за ответ, но я надеюсь, что это неправильный способ. Пока пользователь не нажмет на SMS, мы не сможем получить OTP. Я думаю, что должен быть другой способ, как это сделал WhatsApp. Дайте мне знать, если какая-либо процедура .. - person siva krishna; 30.11.2015

Прямой ответ NO

На данный момент невозможно программно читать SMS, так как приложения в iOS sandboxed, что означает, что вы не можете ничего читать с телефона пользователя за пределами вашего приложения.

person Janak Nirmal    schedule 03.01.2014

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

Что вы можете сделать, так это зарегистрировать собственную схему приложения, и ваше приложение может быть открыто. Вы можете сделать что-то вроде myApp://register/<OTP>, затем вы можете взять этот URL-адрес, взять OTP из URL-адреса и использовать его. Просто используйте URL-адрес в своем SMS, а iOS сделает все остальное.

Вы можете проанализировать URL-адрес приложения в - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation в своем делегате приложения.

person rckoenes    schedule 03.01.2014
comment
Спасибо, но, как я узнал из другого комментария, почтовый ящик изолирован, не создаст ли это проблем? - person Yasha; 03.01.2014
comment
А также, это работает в телефонах Android? - person Yasha; 03.01.2014
comment
Нет, это не создаст никаких проблем, и да, вы можете использовать тот же URL-адрес приложения на Android. - person rckoenes; 03.01.2014
comment
Спасибо большое, проверю и вернусь на форум. - person Yasha; 03.01.2014
comment
Привет, была эта 1 путаница. Я уже отправляю смс пользователю для OTP, где мне разместить myApp://register/‹OTP› в моем коде? И какие изменения мне нужно будет внести в код iPhone/Android, чтобы он принимал OTP напрямую из смс без ручного ввода пользователем. - person Yasha; 03.01.2014
comment
привет @Yasha, я разрабатываю приложение, в котором при регистрации в приложении отправляется otp. Не могли бы вы помочь мне в этом? - person Rani; 14.05.2014