Aplicación para móviles: ¿cómo mostrar el OTP que mi aplicación envía en una ventana emergente sin salir de mi aplicación?

Hemos tenido que codificar una autenticación basada en OTP. He visto algunas aplicaciones, como la aplicación de mi banco, que cuando se envía el OTP también inmediatamente hace un rápido popup del SMS que acaba de llegar, para que pueda ver la OTP sin salir de la aplicación. Acabo de memorizar el número, cerrar el popup, y seguir con el inicio de sesión dentro de esa aplicación.

¿Cómo lo hacen? ¿Hay alguna especificación de iOS / Android que debería estar viendo, lo que nos permite similar popup la OTP sin que el usuario tenga que ir a la pantalla de SMS, a continuación, volver a nuestra aplicación? ¡Gracias!

EDIT: Tengo sugerencias de Android muy útiles. Ahora buscando variaciones de iOS de estas recomendaciones. Entiende que iOS tiene limitaciones mucho más estrictas de sandboxing, por lo que el "oyente" puede ser más complejo?

Aquí está la descripción paso a paso para alcanzar su requisito

  1. Declare el receptor en AndroidManifest

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

    2 Dar permiso de lectura de SMS en AndroidManifest

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

Código completo para AndroidManifest.xml Archivo:

 <?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> 

Código completo para el archivo 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); } } } 

Regístrese por encima del receptor de la transmisión en su actividad y obtendrá su salida

Para android usted necesita utilizar SMSListener como señalado por @rushabh. Usted puede comprobar en un gran ejemplo aquí

Algunos consejos para lograr su tarea de mención para su aplicación.
Paso – 1 crear una actividad de inicio de sesión con el campo necesario como nombre de usuario, contraseña y otp y botón de inicio de sesión.

Paso – 2 Cuando el usuario llena el nombre de usuario y la contraseña, haga una llamada al servicio web. Con parámetros de entrada (nombre de usuario y contraseña) autenticar los valores si es verdad significa enviar su número de OTP como mensaje de error de respuesta de respuesta.

Paso -3 si la respuesta es número significa crear AlertBuilder para la ventana Pop para mostrar su número de OTP en la misma actividad.

Paso – 4 usuario vio la OTP en la actividad de inicio de sesión en sí y entra en la OTP en el área de opt es decir (EditText).

Paso – 5 Cuando el usuario pulse el botón de inicio de sesión autenticar el valor de OTP. Y proceda a la siguiente Actividad.

  • ¿Cuál es la biblioteca FFT más rápida para dispositivos iOS / Android ARM?
  • Android equivalente de NSUserDefaults en iOS
  • Push notificaciones en las 3 plataformas (android, ios, windows phone)
  • Archivo GIF en la pantalla de inicio Ionic
  • ¿Hay algún evento javascript disparado cuando se abre el teclado en pantalla en safari móvil o cromo?
  • OpenMP en iOS / Android
  • Encriptación AES en iOS y Android, y descifrado en C # .NET
  • ¿Cómo cambiar la imagen y el color del texto al hacer clic en reaccionar-nativo?
  • ¿Es posible, en JavaScript, detectar cuándo se apaga la pantalla en los navegadores de Android y iOS
  • MAILTO Enlace en el correo electrónico para iniciar un nuevo correo electrónico
  • Phonegap - Soporte para notificaciones push
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.