Dans ce didacticiel, vous découvrirez la nouvelle fonctionnalité intéressante de jeton SMS dans Android O. Vous apprendrez à générer un jeton spécifique à l’application qui déclenchera une intention en attente lorsque l’appareil recevra pour la première fois un message contenant ce jeton afin de pour vérifier le numéro de téléphone.
Veuillez noter qu’au moment de la rédaction de cet article, les API Android O sont toujours dans leur troisième aperçu pour les développeurs, bien qu’elles soient définitives. (Nous ne savons toujours pas ce que signifie O!)
Qu’est-ce qu’un jeton SMS?
Un jeton SMS ou un mot de passe à usage unique est un mécanisme de sécurité utilisé pour authentifier ou vérifier un utilisateur. L’utilisateur entre son numéro de téléphone et un jeton de durée de vie limité est généré spécifiquement pour cet utilisateur. L’utilisateur reçoit ensuite le jeton sous forme de SMS sur son téléphone. Dans le cas d’Android O au moment d’écrire ces lignes, ce jeton spécifique à l’application n’expire pas, mais devient à la place invalide lorsqu’un autre est généré.
Pourquoi utiliser le jeton SMS d’Android O?
L’une des principales raisons pour lesquelles vous pourriez envisager d’utiliser le mécanisme de jeton SMS d’Android O est qu’il améliore l’expérience utilisateur de l’application. L’utilisateur n’a pas besoin de copier et coller le jeton du client SMS à vérifier. Au lieu de cela, l’appareil Android détecte automatiquement le jeton envoyé à l’appareil de l’utilisateur, puis déclenche le composant d’application dans l’intention associée à votre application (nous y reviendrons sous peu).
Mieux encore, cette fonctionnalité ne nécessite pas READ_SMS permission ou toute autre. Ce mécanisme améliore également la sécurité de l’utilisateur de votre application, car aucune autre application ne peut lire le message contenant le jeton sur l’appareil.
Dans ce didacticiel, vous apprendrez à utiliser cette nouvelle fonctionnalité dans l’API SMS d’Android O. Vous apprendrez à générer un jeton SMS spécifiquement pour votre application et à l’envoyer à un appareil. Nous utiliserons l’émulateur Android Studio pour simuler ce processus.
Conditions préalables
Pour suivre ce didacticiel, assurez-vous d’avoir téléchargé la plate-forme SDK Android 8.0 (O) sur votre ordinateur et que vous disposez déjà d’un émulateur qui cible cette version.
1. Générer le jeton spécifique à l’application
Pour commencer, je vais vous montrer comment générer un jeton spécifique à l’application qui est unique à votre application sur l’appareil de l’utilisateur.
Créer un nouveau projet Android Studio
Lancez Android Studio et créez un nouveau projet avec une activité vide appelée MainActivity.
Modifier le fichier build.gradle
Apportez les modifications suivantes à votre module d’application construire.gradle fichier.
compileSdkVersion 'android-O' minSdkVersion 'o' targetSdkVersion 'o'
Modifier le MainActivity Classe
MainActivity ClasseDans l’extrait de code ci-dessous, nous obtenons le SMSManager class puis appelez la méthode createAppSpecificSmsToken(). Cela fait exactement ce qu’il dit: il crée le jeton SMS spécifique à l’application. Cette méthode nécessite un PendingIntent qui contient l’activité à déclencher lorsqu’un SMS contenant ce jeton (une chaîne de 11 caractères) est reçu par l’appareil.
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.telephony.SmsManager;
import android.util.Log;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = (TextView) findViewById(R.id.tv_token);
SmsManager smsManager = SmsManager.getDefault();
String appSmsToken = smsManager.createAppSpecificSmsToken(createSmsTokenPendingIntent());
textView.setText(appSmsToken);
Log.i("MainActivity", "sms token " + appSmsToken);
}
private PendingIntent createSmsTokenPendingIntent() {
return PendingIntent.getActivity(this, 1234,
new Intent(this, SmsTokenResultVerificationActivity.class), 0);
}
}
Sachez que, comme indiqué précédemment, le jeton généré est unique à votre application sur l’appareil de l’utilisateur. Si vous créez un autre jeton SMS, le second sera un jeton valide tandis que le premier sera ignoré.
Disposer l’écran
Voici un MainActivity fichier de mise en page configuré pour afficher le jeton SMS qui a été généré:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.chikeandroid.tutsplusandroidosmstoken.MainActivity"
android:orientation="vertical"
android:gravity="center_horizontal|center_vertical">
<TextView
android:text="APP SMS TOKEN GENERATED"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/black"/>
<TextView
android:id="@+id/tv_token"
android:layout_marginTop="12dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:textAppearanceLarge"
android:textColor="@android:color/holo_red_dark"/>
</LinearLayout>
L’exécution de l’application à ce stade affichera le jeton SMS généré.

2. Recevez le jeton SMS
Ensuite, nous allons créer l’activité à déclencher lorsque notre appareil reçoit un message contenant le jeton SMS. Rien de spécifique aux jetons SMS ne se produit ici.
import android.app.Activity;
import android.os.Bundle;
public class SmsTokenResultVerificationActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sms_token_result);
}
}
Disposer l’écran
Ici, nous créons la mise en page de l’activité que nous avons créée ci-dessus qui ne contient qu’un seul TextView.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal|center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Token Result Activity"
android:textColor="@android:color/holo_purple"
android:textAppearance="?android:textAppearanceLarge" />
</LinearLayout>
Ensuite, nous testerons cette fonctionnalité à l’aide de l’émulateur Android Studio.
3. Testez le jeton SMS
Configurer l’émulateur pour envoyer des messages SMS
Vous pouvez utiliser votre émulateur pour simuler la réception d’un message SMS, mais vous devrez effectuer une petite configuration. Ouvrez votre émulateur, cliquez sur le dernier bouton de la barre de navigation de droite pour ouvrir la boîte de dialogue de contrôle étendu, puis sélectionnez le bouton de contrôle du téléphone.

À partir de cette interface, vous pouvez simuler la réception d’un appel téléphonique ou d’un SMS par votre appareil depuis un autre téléphone.
Envoyez le jeton
Assurez-vous d’avoir configuré votre émulateur qui cible Android 8.0 (O). Générez un jeton et entrez un message texte qui le contient. Cliquez ensuite sur le Envoyer le message bouton.

Enfin, l’activité que nous avons spécifiée dans l’intention en attente est déclenchée immédiatement! Essayez à nouveau d’envoyer le message et voyez que cette fois, il apparaîtra dans le client SMS de l’appareil à la place, car ce n’est plus un jeton valide.

Utilisation d’un serveur
Pour une application de production, le jeton SMS sera généralement envoyé par un serveur principal. Ainsi, lors de l’utilisation d’un serveur, le client (votre application) doit faire une demande au serveur, y compris le jeton généré par l’application et le numéro de téléphone. Votre serveur recevra alors cette demande et renverra le jeton non modifié sous forme de message texte sur le téléphone de l’utilisateur. Votre application recevra alors ce jeton et lancera le composant enregistré dans l’intention en attente. Ce composant peut alors informer le serveur que la vérification du numéro de téléphone ou l’authentification de l’utilisateur a réussi.
Conclusion
Dans ce didacticiel, vous avez découvert l’impressionnante fonctionnalité de jeton SMS introduite dans Android O: qu’est-ce que c’est, ses avantages et comment l’utiliser dans une application Android.
Pour en savoir plus sur les API de SMS et de téléphone Android, y compris sur la façon de passer des appels depuis votre application, consultez mon didacticiel associé ici sur Envato Tuts +.
Et découvrez quelques-uns de nos autres cours et tutoriels sur le développement d’applications Android!
Soutenez notre effort ❤️
Si vous avez apprécié cet article, pensez à laisser un pourboire pour nous aider à continuer à publier du contenu de qualité.




















