移动应用程序:如何显示我的应用程序在不离开我的应用程序的情况下popup的OTP?

我们必须编写一个基于OTP的authentication。 我曾经看过一些应用程序,比如我的银行的应用程序,当它发送OTP的时候,也会立即popup刚刚到达的短信,所以我可以在离开应用程序的情况下看到OTP。 我只是记住这个数字,closurespopup窗口,然后继续使用该应用程序中的login。

他们如何做到这一点? 是否有一些iOS / Android的规格,我应该看看,这使得我们可以类似地popupOTP,而无需用户进入短信界面,然后回到我们的应用程序? 谢谢!

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

这是一步一步的描述,以达到您的要求

  1. 在AndroidManifest中声明接收器

    <receiver android:name=".IncomingSms"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver> 

    2在AndroidManifest中给予读短信权限

      <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> <uses-permission android:name="android.permission.READ_SMS" /> 

AndroidManifest.xml文件的完整代码:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.androidexample.broadcastreceiver" android:versionCode="1" android:versionName="1.0" > <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.androidexample.broadcastreceiver.BroadcastNewSms" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name="com.androidexample.broadcastreceiver.IncomingSms"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver> </application> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> <uses-permission android:name="android.permission.READ_SMS" /> </manifest> 

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创build一个必要的字段,如用户名,密码和otp和loginbutton的login活动。

步骤-2当用户填写用户名和密码进行Web服务呼叫。 用input参数(用户名和密码)validation值,如果是真意味着发送您的OTP号码作为响应else响应错误消息。

如果响应是数字,则步骤-3意味着创buildAlertBuilder for Pop窗口以在同一活动中显示您的OTP号码。

第4步用户在login活动本身中看到了OTP,并在可选区域(即EditText)中input了OTP。

步骤-5当用户点击loginbuttonauthentication的OTP值。 并继续下一个活动。