如何在iPhone上直接从用户的消息箱中填充OTP到应用程序?

6
我正在开发一款互联网交易应用程序,其移动端和 iPhone 应用程序已经推出。随着市场趋势的变化,我们正在考虑添加双因素认证功能。为此,我们将会向用户注册的手机号码发送一次性密码作为短信。
有没有方法可以让 iPhone 应用程序自动从用户的消息框中填充 OTP?我应该使用什么算法来使我的应用读取用户的消息框?
提前感谢 :)

该问题不包含有效和有用的答案。 - Yasha
什么是有效和有用的?无法通过编程方式读取短信已经得到确认。@rckoenes建议您可以寻找其他方法。 - Janak Nirmal
网站上的可能答案建议先越狱iOS。越狱iPhone就像特权升级一样,我的客户可能会做,也可能不会做。我不能强制要求客户为了使我的应用程序在其手机上平稳运行而必须进行越狱。 - Yasha
因此,我们在SO上有越狱标签,您还可以在问题中指定您也可以接受越狱的可能性。我建议使用“可能重复”而不是重复。 - Janak Nirmal
好的,是的,同意,但我只是想告诉你,我正在寻找比可能的重复建议更可行的选项。此外,我没有使用越狱标签,也没有使用这个术语,所以我想补充一下,我不愿意玩弄最终客户的手机。希望现在我表达清楚了。 - Yasha
请问如何通过手机将OTP作为短信发送到特定的手机号码? - SURESH SANKE
3个回答

8

简单明了的答案是不行

由于iOS中的应用程序是沙盒化的,这意味着你不能从用户的手机外部读取任何内容,因此目前无法以编程方式读取短信。


8
您不能访问用户的短信收件箱,这将是一个真正的隐私问题。
您可以注册自己的应用程序模式,并打开您的应用程序。然后您可以执行类似于 myApp://register/<OTP> 的操作,然后提取该网址中的 OTP 并使用它。只需在短信中使用该网址,iOS 将完成其余工作。
您可以在应用委托中的 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 方法中解析应用网址。

谢谢,但是我从另一个评论中了解到收件箱被沙盒化了,这会造成麻烦吗? - Yasha
还有,这在安卓手机上能用吗? - Yasha
不会有任何问题,而且您可以在Android上使用相同的应用程序URL。 - rckoenes
非常感谢,我会测试并在论坛上回复。 - Yasha
1
嗨,有一个疑惑。我已经向用户发送了OTP的短信,在我的代码中应该把myApp://register/<OTP>放在哪里?并且为了使iPhone/Android代码直接从短信中接受OTP而不需要用户手动输入,我需要做哪些更改? - Yasha
嗨@Yasha,我正在开发一个应用程序,在注册应用程序时会发送一条OTP。你能帮我做这个吗? - Rani

3
你可以从你的应用程序中访问短信。因此最好让用户输入他的联系电话并向他的手机发送短信。
-(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;
}

用户已经在他的手机上收到了短信,但我想为他简化这个过程。当用户收到短信时,OTP应该自动填充。 - Yasha
是的,我期待着一种可能性,即如果用户正在使用收到短信的同一手机上的应用程序,则该应用程序应能够自动从该短信中读取OTP并将其直接放入应用程序中。这是为了减少用户的工作量,避免他们需要最小化应用程序、阅读短信,然后返回应用程序输入OTP的步骤。 - Yasha
这是可以做到的。我在LoadLog应用程序中使用了相同的方法,但短信将由管理员发送。 - Charan Giri
我会发送代码。 - Charan Giri
是的,期待它的到来 :) - Yasha
显示剩余8条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接