Tutoriel sur le chat textuel (Android)

Vue d'ensemble

L'API de signalisation OpenTok vous permet d'échanger des données entre les clients connectés à une session OpenTok. Vous pouvez envoyer un message de signalisation à tous les participants à la session ou à un client spécifique.

Dans ce tutoriel, nous allons utiliser l'API de signalisation OpenTok pour mettre en place un chat textuel. Vous commencerez avec une version complète du projet et découvrirez le code qui permet son fonctionnement.

Étape 1 : Pour commencer

Le code correspondant à cette section est disponible dans le projet « Signaling » de la vonage-android-sdk-samples repo. Si vous ne l'avez pas encore fait, vous devrez cloner le repo dans un répertoire local. Sur la ligne de commande, exécutez :

git clone git@github.com:opentok/opentok-android-sdk-samples.git

Ouvrir le Signalisation dans Android Studio.

Vous devrez saisir vos identifiants d'authentification (clé API, identifiant de session et jeton) dans OpenTokConfig fichier. Vous trouverez ces valeurs dans votre Tableau de bord Opentok.

Étape 2 : Interface utilisateur du chat textuel

Pour afficher nos messages de chat, nous utilisons un android.widget.ListView objet. Cela permet à l'application d'afficher plusieurs messages à la fois. Nous ajoutons le code suivant dans le onCreate() méthode permettant de charger notre mise en page et d'obtenir des références à ses vues.

setContentView(R.layout.activity_main);

messageEditTextView = findViewById(R.id.message_edit_text);
messageHistoryListView = findViewById(R.id.message_history_list_view);

// Attach data source to message history
messageHistory = new SignalMessageAdapter(this);
messageHistoryListView.setAdapter(messageHistory);

Une fois que nous avons initialisé nos vues de mise en page Android et que nous avons associé messageHistory à la messageHistoryListView, et configurer notre éditeur de messages pour qu'il envoie un message lorsque l'on appuie sur la touche Entrée du clavier.

messageEditTextView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_DONE) {
            InputMethodManager inputMethodManager = (InputMethodManager) v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
            inputMethodManager.hideSoftInputFromWindow(v.getWindowToken(), 0);
            sendMessage();
            return true;
        }
        return false;
    }
});

messageEditTextView.setEnabled(false);

Étape 3 : Envoi de signaux

Si vous revenez à l'étape 2, le sendMessage La méthode est appelée lorsque l'utilisateur appuie sur la touche Entrée du clavier. sendMessage crée un SignalMessage objet issu du texte visible dans le EditTextView

private void sendMessage() {
    Log.d(TAG, "Send Message");

    SignalMessage signal = new SignalMessage(messageEditTextView.getText().toString());
    session.sendSignal(SIGNAL_TYPE, signal.getMessageText());

    messageEditTextView.setText("");
}

Ce signal est ensuite transmis à tous les clients connectés à la session. sendSignal() Il s'agit de la méthode OpenTok permettant d'envoyer un signal. Elle comporte deux paramètres :

  • type (Chaîne) — Paramètre facultatif pouvant servir de filtre pour les types de signaux.

  • data (Chaîne) — Les données à envoyer avec le signal.

Nous avons défini le type du signal vers SIGNAL_TYPE (une chaîne que nous avons décidé de définir comme « texte-signal »). Nous verrons plus loin dans le onSignalReceived() méthode, qui permet de vérifier si le signal reçu est de ce type. Bien que, dans cette application, il s'agisse de notre seul type de signal, vous avez la possibilité d'utiliser plusieurs types de signaux différents.

Étape 4 : Configuration du SignalListener

Nous devons maintenant définir le signalListener propriété SignalListener. Dans le onCreate() méthode de MainActivity Dans cette classe, nous avons ajouté :

session.setSignalListener(signalListener);

Cela définit le signalListener objet en tant qu'implémenteur de la SubscriberKit.SignalListener interface. Cette interface définit la onSignalReceived(session, type, data, connection) méthode, qui est appelée lorsque le client reçoit un signal de la session :

Étape 5 : Réception des signaux avec onSignalReceived

Dans le corps du onSignalReceived)() Dans cette méthode, nous souhaitons tout d'abord faire la distinction entre les signaux envoyés par le client Android local et ceux provenant d'autres clients connectés à la session. Bien que cette vérification ne soit pas nécessaire pour toutes les applications, la nôtre est une application de chat textuel, et nous voulons établir clairement quels messages ont été envoyés et lesquels ont été reçus.

Pour ce faire, nous examinons l'objet `Connection`. L'objet `Connection` passé en argument à la méthode provient du client à partir duquel le signal a été envoyé. Il ne correspondra qu'à l'objet `Connection` renvoyé par mSession.getConnection() (qui renvoie la connexion du client local) si le signal a été envoyé par le client local. Le remote la variable est définie sur true si le signal provient d'une connexion autre que la nôtre ; sinon, il est défini sur false.

@Override
public void onSignalReceived(Session session, String type, String data, Connection connection) {

    boolean remote = !connection.equals(session.getConnection());
    if (type != null && type.equals(SIGNAL_TYPE)) {
        showMessage(data, remote);
    }
}

Ensuite, nous appelons la showMessage(messageData, remote) en passant par la méthode remote. En aval, le SignalMessageAdapter par exemple, messageHistoryListView Cela permettra de positionner la vue contenant les données du signal à droite si celui-ci était envoyé, et à gauche s'il était reçu.

private void showMessage(String messageData, boolean remote) {
    SignalMessage message = new SignalMessage(messageData, remote);
    messageHistory.add(message);
}

Pour plus d'informations sur les classes Android utilisées dans cette implémentation de chat textuel, consultez la documentation de référence Android relative à la ArrayAdaptor et Liste

Félicitations ! Vous venez de terminer le tutoriel sur le chat textuel pour Android.
Vous pouvez continuer à tester et à modifier le code que vous avez développé ici, ou consulter le Prochaines étapes ci-dessous. Pour plus d'informations sur la signalisation, consultez le Guide du développeur sur la signalisation OpenTok.

Prochaines étapes

Une fois que vous aurez terminé cette étape, poursuivez le développement et l'amélioration de votre application OpenTok à l'aide des ressources utiles suivantes :