移动应用:如何在不离开我的应用的情况下显示我的应用在popup窗口中发送的OTP?

我们必须编写基于OTP的身份validation代码。 我看过一些应用程序,比如我的银行应用程序,当它发送OTP时,它会立即快速popup刚刚到达的短信,这样我就可以在离开应用程序的情况下看到OTP。 我只记住数字,关闭popup窗口,继续在该应用程序内登录。

他们是怎么做到的? 是否有一些我应该关注的iOS / Android规范,它允许我们类似地popupOTP而无需用户必须转到SMS屏幕,然后回到我们的应用程序? 谢谢!

编辑:我有非常有用的Android建议。 现在正在寻找这些建议的iOS变体。 了解iOS有更严格的沙盒限制,所以“听众”可能会更复杂?

这是一步一步的描述,以实现您的要求

  1. 在AndroidManifest中声明接收器

         

    2在AndroidManifest中提供阅读短信权限

        

AndroidManifest.xml文件的完整代码:

                    

IncomingSms.java文件的完整代码:

 public class IncomingSms extends BroadcastReceiver { // Get the object of SmsManager final SmsManager sms = SmsManager.getDefault(); public void onReceive(Context context, Intent intent) { // Retrieves a map of extended data from the intent. final Bundle bundle = intent.getExtras(); try { if (bundle != null) { final Object[] pdusObj = (Object[]) bundle.get("pdus"); for (int i = 0; i < pdusObj.length; i++) { SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]); String phoneNumber = currentMessage.getDisplayOriginatingAddress(); String senderNum = phoneNumber; String message = currentMessage.getDisplayMessageBody(); Log.i("SmsReceiver", "senderNum: "+ senderNum + "; message: " + message); // Show Alert int duration = Toast.LENGTH_LONG; Toast toast = Toast.makeText(context, "senderNum: "+ senderNum + ", message: " + message, duration); toast.show(); } // end for loop } // bundle is null } catch (Exception e) { Log.e("SmsReceiver", "Exception smsReceiver" +e); } } } 

在您的活动中注册广播接收器,您将获得输出

对于Android,您需要使用@rushabh指出的SMSListener。 你可以在这里查看一个很好的例子

一些提示,以实现您的应用程序的提及任务。
步骤1创建一个包含用户名,密码和otp以及登录按钮等必填字段的登录活动。

步骤2当用户填写用户名和密码进行Web服务调用时。 使用输入参数(用户名和密码)validation值,如果为true则表示将您的OTP编号作为响应发送,否则响应错误消息。

步骤-3如果响应是数字意味着为Pop窗口创建AlertBuilder以在同一个Activity中显示您的OTP编号。

步骤4用户在登录活动本身中看到OTP并在opt区域输入OTP,即(EditText)。

步骤 – 5当用户点击登录按钮时,validationOTP值。 然后继续下一个活动。