如何直接在 iPhone 中将 OTP 从用户的消息框填充到应用程序? [复制]

Posted

技术标签:

【中文标题】如何直接在 iPhone 中将 OTP 从用户的消息框填充到应用程序? [复制]【英文标题】:How to populate OTP from user's message box to application directly in iPhone? [duplicate] 【发布时间】:2014-01-21 00:19:53 【问题描述】:

我正在开发一个互联网交易应用程序,它的移动和 iPhone 应用程序都可用。随着最近的市场趋势,我们正在努力包括两因素身份验证。为此,我们将在用户注册的手机号码上以短信形式发送一次性密码。

有没有办法让 OTP 从 iPhone 中的用户消息框自动填充到应用程序中?我应该使用什么算法让我的应用读取用户的消息框?

提前致谢:)

【问题讨论】:

该问题不包含有效且有用的答案。 在什么方面有效且有用?确认无法以编程方式读取短信。 @rckoenes 建议您可以期待的其他方式 网站上的可能答案建议首先越狱 ios。越狱 iPhone 就像我的客户可能会或可能不会做的特权升级。我不能要求我的客户强制越狱他的手机,以使我的应用程序在其上顺利运行。 因此,我们在 SO 上有越狱标签,您也可以在问题中指定您也对越狱的可能性持开放态度。我建议possible duplicate不要重复。 好吧,是的,同意,但我只是想告诉你,我正在寻找更可行的选项,然后在可能的副本中提出建议。另外,我没有使用越狱标签,也没有使用该术语,所以我想补充一下,我不喜欢玩终端客户的手机。我希望我现在清楚了。 【参考方案1】:

您可以从您的应用访问短信。所以最好让用户输入他的联系号码并将短信发送到他的手机

-(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;

【讨论】:

LoadLog(免费应用程序) 我开发的应用程序的全部信息将仅通过 SMS 发送。该应用程序没有使用任何服务器 用户已经在他的手机上收到了一条短信,但我想为他简化这个过程。 OTP 应在用户收到短信时自动填充。 @Yasha 这就是我所说的 OTP 将仅发送到 SMS(移动设备的唯一和最好的方式),您可以访问它们。你期待的不是短信吗? 是的,我期待一个可能性,如果用户在收到短信的同一部手机上使用应用程序,应用程序应该能够自动从该短信读取 OTP并将其直接放在应用程序上。这是为了减少用户最小化应用程序,阅读短信然后回到应用程序进入OTP的工作。 这是可以做到的。我在 LoadLog 应用程序中使用相同,但 SMS 将由管理员发送。【参考方案2】:

您无法访问用户的短信收件箱,这将是一个真正的隐私问题。

你可以做的是注册你自己的应用架构,你的应用就可以打开了。您可以执行myApp://register/&lt;OTP&gt; 之类的操作,然后您可以获取此 URL 并从 URL 中获取 OTP 并使用它。只需在您的 SMS 中使用 URL,其余的一切由 iOS 完成。

您可以在您的应用委托中解析- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 中的应用网址。

【讨论】:

谢谢,但我从另一条评论中了解到,收件箱是沙盒的,会不会造成麻烦? 还有,这在安卓手机上能用吗? 不,这不会造成任何麻烦,是的,您可以在 android 上使用相同的应用 URL。 非常感谢,我会测试它并返回论坛。 嗨,有这 1 个混淆。我已经向用户发送了 OTP 的短信,我应该将 myApp://register/ 放在我的代码中的什么位置?我必须在 iPhone/Android 代码中进行哪些更改才能使其直接从短信接受 OTP,而无需用户手动输入。【参考方案3】:

直接回答NO

目前无法以编程方式读取 SMS,因为 iOS 中的应用程序是 sandboxed,这意味着您无法在应用程序之外从用户手机中读取任何内容。

【讨论】:

以上是关于如何直接在 iPhone 中将 OTP 从用户的消息框填充到应用程序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iphone 应用程序开发中将数据从版本保存到版本?

如何验证用户从数据库中的浏览器输入的otp?

在 iPhone 中将视图从纵向切换到横向,就像 iPhone 中的计算器一样

如何在iphone编程中将位置从临时文件更改为高清

在 OTP/Erlang 中将 ID 映射到进程的惯用方式是啥?

如何在iphone中将值从一个标签栏传递到另一个标签栏