Notes de mise à jour

Product deprecation notice

Effective April 30th, 2026, Vonage In-App Messaging will no longer be available. Access for new users will be closed, and the service will be discontinued for all existing users.

If you have any questions regarding this product’s discontinuation, please contact your account manager or our support team.

4.1.3 - 15 septembre 2022

Fixe

  • Fixer NexmoMessage Traitement de la file d'attente pour les demandes reçues et livrées

4.1.2 - 10 août 2022

Fixe

  • Utiliser le niveau de journalisation de la configuration client pour la journalisation http

4.1.1 - 25 mai 2022

Fixe

  • Fixer NexmoMessage sérialisation
  • Correction de la gestion des erreurs dans NexmoClient.getConversation() lorsqu'il n'est pas membre.

4.1.0 - 11 mai 2022

Ajouté

  • Soutien aux call:transfer à l'intérieur NexmoCall
  • Ajouté NexmoLegTransferEvent contenant les détails de la conversation précédente et actuelle lorsqu'un appel est transféré
  • Ajouté CallEventListener recevoir NexmoLegTransferEvent avec de nouveaux membres lorsqu'un appel est transféré vers une nouvelle conversation.
   NexmoCallEventListener callEventListener = new NexmoCallEventListener() {
        @Override
        public void onLegTransfer(NexmoLegTransferEvent event, NexmoMember member) {
            Log.d(TAG, "Call Transferred");
        }
   };
  • Exposer pushNotificationTTL au NexmoClient.Builder() pour régler le dispositif enregistré Pousser TTL
  • Nouveaux événements publics NexmoSubmittedEvent, NexmoRejectedEvent et NexmoUndeliverableEvent pour les états des messages.
  • De nouveaux récepteurs d'état de message ont été ajoutés à NexmoMessageEventListener l'interface.
   NexmoCallEventListener messageEventListener = new NexmoMessageEventListener() {
        @Override
        public void onSubmittedReceipt(@NonNull NexmoSubmittedEvent event) {
            Log.d("onSubmittedReceipt", "Got [" + event + "] from:" + event.getFromMember());
        }
        @Override
        public void onRejectedReceipt(@NonNull NexmoRejectedEvent event) {
            Log.d("onSubmittedReceipt", "Got [" + event + "] from:" + event.getFromMember());
        }
        @Override
        public void onUndeliverableReceipt(@NonNull NexmoUndeliverableEvent event) {
            Log.d("onSubmittedReceipt", "Got [" + event + "] from:" + event.getFromMember());
        }
   };

4.0.4 - 14 avril 2022

Fixe

  • Modification de l'horodatage par défaut du fuseau horaire local en UTC

4.0.3 - 4 avril 2022

Fixe

  • Ajout d'une vérification pour s'assurer que l'utilisateur est connecté lors de la configuration de l'appel sortant préchauffé.
  • Modification de l'horodatage par défaut en UTC sans fuseau horaire.

4.0.2 - 9 mars 2022

Améliorations

  • Dépendance WebRTC mise à jour vers la version 84.0.22.

4.0.1 - 21 janvier 2022

Fixe

  • Ajout d'une vérification pour s'assurer que l'utilisateur est connecté avant que le SDK n'essaie de traiter l'événement "push".

4.0.0 - 7 décembre 2021

Ajouté

  • NexmoConversation.sendMessage(message, listener) à envoyer NexmoMessage à une conversation.
  • NexmoClient.uploadAttachment(attachment, listener) pour envoyer des NexmoAttachmentType.
  • NexmoMessage représente un message de EMessageEventType à envoyer.
  • EMessageEventType pour les messages de type text, image, audio, video, file, template, vcard, custom et location.
  • NexmoChannelType a ajouté des canaux de type sms, mms, whatsapp, viber et messenger.
  • NexmoAttachmentType pour télécharger un message en pièce jointe dans Vonage Media Service.
  • NexmoMessageEvent représente l'événement relatif à l'état du message du membre envoyé dans le système NexmoMemberMessageStatusEventListener.

Améliorations

  • Dépendance WebRTC mise à jour vers la version 84.0.0.

Déclassé

  • NexmoConversation.sendText(text, listener) méthode. Utiliser NexmoConversation.sendMessage(message, listener) à la place.
  • NexmoConversation.sendAttachment(file, listener) méthode. Utiliser NexmoClient.uploadAttachment(attachment, listener) et NexmoConversation.sendMessage(message, listener) à la place.

3.3.0 - 22 novembre 2022

Ajouté

  • NexmoClient.Builder's restEnvironmentHostPinning et environmentHostPinning ont été ajoutées pour permettre l'épinglage HTTP et SSL des sockets web.
  • NexmoPinningConfig.fromPublicKeys(...) pour créer une configuration d'épinglage basée sur une clé publique.
nexmoClient = new NexmoClient.Builder()
    .environmentHostPinning(NexmoPinningConfig.fromPublicKeys("publicKeyHash"))
    .build(context);
  • Nouveau ConnectionStatusReason cas SSL_PINNING_ERROR quand Disconnected en raison d'une clé publique invalide trouvée lors de la connexion au backend.
connectionStateListener = NexmoConnectionListener { status, reason ->
    when(status){
          NexmoConnectionListener.ConnectionStatus.DISCONNECTED-> {
              if (reason == NexmoConnectionListener.ConnectionStatusReason.SSL_PINNING_ERROR) {
                  // Notify UI
              }
          }
      }
}

3.2.0 - 19 octobre 2021

Ajouté

  • NexmoClient.Builder.autoMediaReoffer(autoMediaReoffer) pour permettre de reconnecter automatiquement les médias lorsque les interfaces réseau changent.
  • EMediaConnectionState énumérer.
  • NexmoMediaStatusListener pour recevoir une notification de changement d'état de la connexion média.
  • NexmoConversation.reconnectMedia() pour déclencher une reconnexion des médias.
  • NexmoClient.reconnectCall(conversationId, legId, listener) pour reconnecter un appel à partir d'un identifiant de conversation et d'un identifiant de segment.
  • NexmoClient.getUserSessions(userId, pageSize, order, listener) pour obtenir une liste paginée des sessions d'utilisateurs actives.

Version 3.1.1 - 18 octobre 2021

Ajouté

  • Changer la prise connectionListeners de HashSet à ArraySet.

Version 3.1.0 - 6 septembre 2021

Ajouté

  • NexmoClient.inAppCall(username, listener) pour effectuer des appels in-app.
  • NexmoClient.serverCall(callee, customData, listener) pour effectuer les appels au serveur, en spécifiant éventuellement customData.

Déclassé

  • NexmoClient.call(callee, callType, listener) méthode.
  • NexmoCallHandler énumérer.

Version 3.0.1 - 16 juin 2021

Améliorations

  • Correction d'un bogue dans l'envoi DTMF d'un rappel à la fonction event_url
  • Correction d'un bug qui empêchait de recevoir les événements de frappe du Web vers Android

Version 3.0.0 - 1er juin 2021

Ajouté

  • Ajouté NexmoMemberSummary renvoyée par conversation.getMembers(pageSize, order, listener) (paginé), représentant un sous-ensemble d'informations sur les membres.
  • Ajouté memberEvent.getInvitedBy() qui représente le nom de l'invitant, s'il existe.
  • Ajouté NexmoEventEmbeddedInfo à tous les événements renvoyés par event.getEmbeddedInfo() et contenant le NexmoUser liés à l'événement.
  • Ajouté conversation.getMember(memberId, listener) qui renvoie le membre en fonction de son identifiant.

Améliorations

  • Améliorer la documentation javadoc.
  • Améliorer callServer temps de préparation en préchauffant la jambe.
  • Désactiver le média après l'événement de raccrochage RTC.

Changements en cours

  • Supprimé NexmoCallMemberremplacée par NexmoMember.
  • Supprimé callMember.getCallStatus(), déplacé à call.getMemberCallStatus(member).
  • Supprimé callMember.mute(boolean, listener) s'est déplacé à member.enableMute(listener) et member.disableMute(listener).
  • Supprimé callMember.earmuff(boolean, listener) s'est déplacé à member.enableEarmuff(listener) et member.enableEarmuff(listener).
  • Supprimé conversation.getAllMembers() s'est déplacé à conversation.getMembers() (paginé).
  • Supprimé NexmoConversationListener.onMemberUpdatedremplacée par NexmoMemberEventListener qui fournissent onMemberInvited, onMemberAdded, onMemberRemoved souscrire par conversation.addMemberEventListener().
  • Renommé call.getCallMembers() à call.getAllMembers().
  • Renommé call.getMyCallMember() à call.getMyMember().
  • Les legs doit être incluse dans le acl chemins sur JWT la création de jetons.
"acl": {
  "paths": {
    ...,
    "/*/legs/**": {}
  }
}

Version 2.8.1 - 14 décembre 2020

Améliorations

  • Correction de l'incohérence des valeurs des attributs displayName et imageUrl pour NexmoUser objet.
  • Amélioration de la stabilité des appels sortants et des conversations.

Version 2.8.0 - 19 novembre 2020

Modifié

  • Renommé NexmoCallMemberStatus.CANCELED à NexmoCallMemberStatus.CANCELLED.

Améliorations

  • Notifié avec NexmoCallMemberStatus.CANCELLED sur l'auditeur onMemberStatusUpdated(NexmoCallMemberStatus memberStatus, NexmoCallMember callMember) pour raccrocher l'appel.

Version 2.7.1 - 27 octobre 2020

Améliorations

  • Amélioration de la stabilité des appels sortants.

Version 2.7.0 - 24 septembre 2020

Ajouté

  • Exposer la raison NETWORK_ERROR sur l'état de la connexion DISCONNECTED pour l'auditeur onConnectionStatusChange(ConnectionStatus status, ConnectionStatusReason reason).

Version 2.6.5 - 24 août 2020

Améliorations

  • Amélioration de la mise en œuvre des journaux SDK et de la stabilité des connexions de socket.

Version 2.6.4 - 19 mai 2020

Nouveau

  • Nous avons scindé nos artefacts à partir de cette version, donc un dépôt maven personnalisé doit être ajouté au projet :
    //Groovy - build.gradle
    allprojects {
        repositories {

            maven {
                url "https://artifactory.ess-dev.com/artifactory/gradle-dev-local"
            }
        }
    }
    // Kotlin Gradle script  - build.gradle.kts
    allprojects {
        repositories {

            maven("https://artifactory.ess-dev.com/artifactory/gradle-dev-local")
        }
    }

Améliorations

  • Amélioration du rapport sur la version du SDK de l'agent utilisateur.

Version 2.6.3 - 4 mai 2020

Fixe

  • Modification de la visibilité des Nexmo.page.isPrevPageExist() à public.

Version 2.6.2 - 29 avril 2020

Fixe

  • Potentiel NullPointerException lors du traitement des notifications push pendant la connexion du client.

Version 2.6.1 - 22 avril 2020

Ajouté

  • Exposer l'interface NexmoDTMFEventListener pour s'abonner aux événements DTMF sur NexmoConversation.

Version 2.6.0 - 20 avril 2020

Ajouté

  • Afficher l'état de la connexion isConnected en NexmoClient.
    NexmoClient.get().isConnected()

Fixe

  • Évitez d'invoquer login plusieurs fois lorsque l'utilisateur est déjà connecté.

Version 2.5.1 - 20 avril 2020

Améliorations

  • Amélioration de la mise en œuvre de la collecte des candidats à la CIE unique.

Version 2.5.0 - 25 mars 2020

Ajouté

  • Ajouter useFirstIceCandidate paramètres à NexmoClient.Builder
    nexmoClient = new NexmoClient.Builder().useFirstIceCandidate(true/false).build(context);

Version 2.4.0 - 3 mars 2020

Ajouté

  • Ajouter un filtre par état à getConversationsPage en NexmoClient.
    NexmoClient.get().getConversationsPage(50, NexmoPageOrderDesc, "JOINED", new NexmoRequestListener<NexmoConversationsPage>(){
        void onError(@NonNull NexmoApiError error){

        }
        void onSuccess(@Nullable NexmoConversationsPage result){
            //Get the current page conversations -Sync
            Collection<NexmoConversation> conversations = result.getData()
            //Get the next page -Async
            result.getNext(new NexmoRequestListener<NexmoConversationsPage>(){
                void onError(@NonNull NexmoApiError error){

                }
                void onSuccess(@Nullable NexmoConversationsPage result){

                }
            })

            //Get the previous page -Async
            result.getPrev(new NexmoRequestListener<NexmoConversationsPage>(){
                void onError(@NonNull NexmoApiError error){

                }
                void onSuccess(@Nullable NexmoConversationsPage result){

                }
            })
        }
    });

Version 2.3.0 - 11 février 2020

Ajouté

  • Ajouter updateAsDelivered et UpdateAsSeen à NexmoAttachmentEvent et NexmoTextEvent comme méthode d'aide pour mettre à jour l'événement localement après markAsSeen ou markAsDelivered a été couronnée de succès.
  NexmoTextEvent.markAsDelivered(object: NexmoRequestListener<Any>{
       override fun onSuccess(result: Any?) {
       Log.d(TAG, TAG + "onTextEvent.markAsDelivered():onSuccess with: " + result.toString())

            NexmoTextEvent.updateAsDelivered(my_member_id, Date.now())

       }
   })

Fixe

  • Fixer markAsSeen et markAsDelivered pour NexmoTextEvent et NexmoAttachmentEvent

Modifié

  • Mise à jour des bibliothèques de dépendances à ajouter à votre build Gradle
android {
    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_1_8.toString()
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

Version 2.2.0 - 31 janvier 2020

Ajouté

  • Ajout de la prise en charge des notifications push personnalisées, à l'aide de processNexmoPush() ,processPushNotification() est obsolète
if (NexmoClient.isNexmoPushNotification(message!!.data)) {
    val pushListener = object : NexmoPushEventListener {
            override fun onIncomingCall(nexmoCall: NexmoCall?) {
                Log.d(TestAppMessagingService.TAG, "$TAG:TestAppMessagingService:onIncomingCall() with: $nexmoCall")
            }
            override fun onError(nexmoError: NexmoApiError?) {
                Log.d(TestAppMessagingService.TAG, "$TAG:TestAppMessagingService:onError() with: $nexmoError")
            }
            override fun onNewEvent(event: NexmoEvent?) {
                Log.d(TestAppMessagingService.TAG, "$TAG:TestAppMessagingService:onNewEvent() with: $event")
            }
        }
    NexmoPushPayload nexmoPushPayload = nexmoClient.processNexmoPush(message!!.data, pushListener)
    when(nexmoPushPayload.pushTemplate){
        Default ->
            // you can use nexmoPushPayload.eventData if needed
        Custom ->
            // got nexmo custom push. 😀
            // you should parse nexmoPushEvent.customData your backend had defined.
    }
}
  • Ajouter markAsDelivered() à la méthode NexmoTextEvent et NexmoAttachmentEvent
  NexmoTextEvent.markAsDelivered(object: NexmoRequestListener<Any>{
       override fun onSuccess(result: Any?) {
       Log.d(TAG, TAG + "onTextEvent.markAsDelivered():onSuccess with: " + result.toString())
       }
       override fun onError(error: NexmoApiError) {
       Log.d(TAG, TAG + "onTextEvent.markAsDelivered():onError with: " + error)
        }
   })
  • Ajouter markAsSeen() à la méthode NexmoTextEvent et NexmoAttachmentEvent
  NexmoAttachmentEvent.markAsSeen(object: NexmoRequestListener<Any>{
       override fun onSuccess(result: Any?) {
       Log.d(TAG, TAG + "onAttachmentEvent.markAsSeen():onSuccess with: " + result.toString())
       }
       override fun onError(error: NexmoApiError) {
       Log.d(TAG, TAG + "onAttachmentEvent.markAsSeen():onError with: " + error)
        }
   })

Version 2.1.2 - 12 janvier 2020

Ajouté

  • Ajouter l'annotation de PermissionRequired pour les fonctions qui démarrent les médias : NexmoClient.call , NexmoCall.answer , NexmoConvesation.enableMedia
    class MyAcitivity MakeCallActivity extends Activity {
        @Override public void onCreate(Bundle savedInstanceState){
            //Call requires permission which may be rejected by user:
            //code should explicitly check to see if permission is available (with 'checkPermission')
            //or explicitly handle a potential 'SecurityException'
            NexmoClient.get().call("1234567890", NexmoCallHandler.SERVER, new NexmoRequestListener<NexmoCall>(){
                @Override
                void onError(NexmoApiError error) {
                    Log.d("NexmoCallListener", "onError call:" + error.toString())
                }

                @Override
                void onSuccess(NexmoCall call) {
                    Log.d("NexmoCallListener", "onSuccess call:" + cal.toString())

                }
            });
        }
    }

Supprimé

  • Supprimer l'obligation d'autorisation PROCESS_OUTGOING_CALLS
  • Supprimer l'obligation d'autorisation READ_PHONE_STATE

Version 2.1.0 - 01 janvier 2020

Ajouté

  • Ajouter clearNexmoEventsListeners méthode en NexmoConversation pour effacer tous les auditeurs
    class MyActivity extends Activity{
        NexmoConversation myConversation;

        @Override public void onStart(){
            //Add listener to events
            myConversation.addMemberEventListener(new NexmoMemberEventListener(){
                    //implement functions
                }
            });

            myConversation.addCustomEventListener(new NexmoCustomEventListener(){
                    //implement functions
            });
            //Add more listeners
        }

        @Override public void onStop(){
            //Clear all listeners
            myConversation.clearNexmoEventsListeners();
        }
    }
  • Ajouter clearMemberEventListeners méthode en NexmoConversation pour effacer tous les NexmoMemberEventListener auditeurs
    class MyActivity extends Activity{
        NexmoConversation myConversation;

        @Override public void onStart(){
        //Add listener to NexmoMemberEvent
            myConversation.addMemberEventListener(new NexmoMemberEventListener(){

            });
        }

        @Override public void onStop(){
            myConversation.clearMemberEventListeners();
        }
    }
  • Ajouter clearCustomEventListeners méthode en NexmoConversation pour effacer tous les NexmoCustomEventListener auditeurs
    class MyActivity extends Activity{
        NexmoConversation myConversation;

        @Override public void onStart(){
        //Add listener to NexmoCustomEvent
            myConversation.addCustomEventListener(new NexmoCustomEventListener(){

            });
        }

        @Override public void onStop(){
            myConversation.clearCustomEventListeners();
        }
    }
  • Ajouter clearLegStatusEventListeners méthode en NexmoConversation pour effacer tous les NexmoLegStatusEventListener auditeurs
    class MyActivity extends Activity{
        NexmoConversation myConversation;

        @Override public void onStart(){
        //Add listener to NexmoLegStatusEvent
            myConversation.addLegStatusEventListener(new NexmoLegStatusEventListener(){

            });
        }

        @Override public void onStop(){
            myConversation.clearLegStatusEventListeners();
        }
    }
  • Ajouter clearDTMFEventListeners méthode en NexmoConversation pour effacer tous les NexmoDTMFEventListener auditeurs
    class MyActivity extends Activity{
        NexmoConversation myConversation;

        @Override public void onStart(){
        //Add listener to NexmoDTMFEvent
            myConversation.addDTMFEventListener(new NexmoDTMFEventListener(){

            });
        }

        @Override public void onStop(){
            myConversation.clearDTMFEventListeners();
        }
    }
  • Ajouter clearMessageEventListeners méthode en NexmoConversation pour effacer tous les NexmoMessageEventListener auditeurs
    class MyActivity extends Activity{
        NexmoConversation myConversation;

        @Override public void onStart(){
        //Add listener to NexmoMessageEvent
            myConversation.addMessageEventListener(new NexmoMessageEventListener(){

            });
        }

        @Override public void onStop(){
            myConversation.clearMessageEventListeners();
        }
    }
  • Ajouter clearNexmoConversationListeners méthode en NexmoConversation pour effacer tous les NexmoConversationListener auditeurs
    class MyActivity extends Activity{
        NexmoConversation myConversation;

        @Override public void onStart(){
        //Add listener to NexmoConversation
            myConversation.addNexmoConversationListener(new NexmoConversationListener(){

            });
        }

        @Override public void onStop(){
            myConversation.clearNexmoConversationListeners();
        }
    }
  • Ajouter clearTypingEventListeners méthode en NexmoConversation pour effacer tous les NexmoTypingEventListener auditeurs
    class MyActivity extends Activity{
        NexmoConversation myConversation;

        @Override public void onStart(){
        //Add listener to NexmoTypingEvent
            myConversation.addTypingEventListener(new NexmoTypingEventListener(){

            });
        }

        @Override public void onStop(){
            myConversation.clearTypingEventListeners();
        }
    }
  • Ajouter NexmoMember au paramètre NexmoMemberEvent en ce qui concerne les NexmoMember agi par :
    NexmoConversation myConversation;
    myConversation.addMemberEventListener(new NexmoMemberEventListener{
        void onMemberInvited(@NonNull final NexmoMemberEvent event){
            //The invitee member
            event.getMember()
            //the inviter member
            event.getFromMember()
        }
    });

Fixe

  • envoi NexmoAttachmentEvent en ce qui concerne NexmoConversation
    NexmoConversation myConversation;
    myConversation.addNexmoMessageEventListener(new NexmoMessageEventListener(){

        void onAttachmentEvent(@NonNull final NexmoAttachmentEvent attachmentEvent){
            //handle attachment event
        }
    });
  • envoi NexmoMediaEvent en ce qui concerne NexmoConveration
  • envoi NexmoMediaActionEvent en ce qui concerne NexmoConveration
  • faire NexmoDTMFEvent l'héritage NexmoEvent
  • NexmoTextEvent.equals à utiliser super.equals
  • NexmoConversation.getCreationDate pour revenir Date objet java
  • NexmoEvent.getCreationDate fixer IllegalArgumentException

2.0.0 - 2019-12-22

Ajouté

  • Ajouter un filtre par EventType en NexmoConversation.getEvents
    NexmoConversation myConversation
    //Get all text event for a specifc conversation
    myConversation.getEvents(10, NexmoPageOrderDesc, "text", new NexmoRequestListener<NexmoEventsPage> {
        void onError(@NonNull NexmoApiError error){
        }

        void onSuccess(@Nullable NexmoEventsPage result){
            Collection<NexmoEvent> textEvents =  result.getData()
        }
    });
    //Get all member event for a specifc conversation
    myConversation.getEvents(10, NexmoPageOrderDesc, "member:*", new NexmoRequestListener<NexmoEventsPage> {
        void onError(@NonNull NexmoApiError error){
        }

        void onSuccess(@Nullable NexmoEventsPage result){
            Collection<NexmoEvent> memberEvents =  result.getData()
        }
    });

Modifié

  • NexmoDeliveredEvent supprimer InitialEvent et ajouter InitialEventId
  • NexmoSeenEvent supprimer InitialEvent et ajouter InitialEventId

Fixe

  • Prise en charge de DTLS dans WebRTC
  • NexmoConversationsPage.getPrev() renvoie les conversations du curseur de droite

2.0.0 - 2019-12-22

Ajouté

  • Ajouter un filtre par EventType en NexmoConversation.getEvents
    NexmoConversation myConversation
    //Get all text event for a specifc conversation
    myConversation.getEvents(10, NexmoPageOrderDesc, "text", new NexmoRequestListener<NexmoEventsPage> {
        void onError(@NonNull NexmoApiError error){
        }

        void onSuccess(@Nullable NexmoEventsPage result){
            Collection<NexmoEvent> textEvents =  result.getData()
        }
    });
    //Get all member event for a specifc conversation
    myConversation.getEvents(10, NexmoPageOrderDesc, "member:*", new NexmoRequestListener<NexmoEventsPage> {
        void onError(@NonNull NexmoApiError error){
        }

        void onSuccess(@Nullable NexmoEventsPage result){
            Collection<NexmoEvent> memberEvents =  result.getData()
        }
    });

Modifié

  • NexmoDeliveredEvent supprimer InitialEvent et ajouter InitialEventId
  • NexmoSeenEvent supprimer InitialEvent et ajouter InitialEventId

Fixe

  • Prise en charge de DTLS dans WebRTC
  • NexmoConversationsPage.getPrev() renvoie les conversations du curseur de droite

1.2.0 - 2019-12-16

Ajouté

  • Ajouter un filtre par EventType en NexmoConversation.getEvents
    NexmoConversation myConversation
    //Get all text event for a specifc conversation
    myConversation.getEvents(10, NexmoPageOrderDesc, "text", new NexmoRequestListener<NexmoEventsPage> {
        void onError(@NonNull NexmoApiError error){
        }

        void onSuccess(@Nullable NexmoEventsPage result){
            Collection<NexmoEvent> textEvents =  result.getData()
        }
    });
    //Get all member event for a specifc conversation
    myConversation.getEvents(10, NexmoPageOrderDesc, "member:*", new NexmoRequestListener<NexmoEventsPage> {
        void onError(@NonNull NexmoApiError error){
        }

        void onSuccess(@Nullable NexmoEventsPage result){
            Collection<NexmoEvent> memberEvents =  result.getData()
        }
    });

Fixe

  • Prise en charge de DTLS dans WebRTC

Version 1.1.0 - 2019-12-04

Changements

  • Ajouter iceServerUrls paramètres à NexmoClient.Builder
    nexmoClient = new NexmoClient.Builder().iceServerUrls(new String[]{"stun/turn servr url"}).build(context);

Fixe

  • Correction du problème de l'appel entrant de la notification push

Version 1.0.3 - 2019-11-20

###Changes

  • modifier la signature de NexmoClient.login(), supprimer NexmoRequestListener<NexmoUser> paramètre :
    nexmoClient = new NexmoClient.Builder().build(context);
    nexmoClient.setConnectionListener(new NexmoConnectionListener() {
          @Override
          public void onConnectionStatusChange(ConnectionStatus connectionStatus, ConnectionStatusReason connectionStatusReason) {
              switch (connectionStatus){
                case CONNECTED:
                    //the client is connected to the server - the login successed
                case DISCONNECTED:
                case CONNECTING:
                case UNKNOWN:
                    //the client is not connected to the server - the login failed/not yet successed
            }
          });
    NexmoClient.login("MY_AUTH_TOKEN")
  • modifier la signature de NexmoPushEventListener.onIncomingCall(), supprimer MemberEvent paramètre :
    override public void onMessageReceived(@Nullable RemoteMessage message) {
    if (NexmoClient.isNexmoPushNotification(message.getData())) {
                handleNexmoPushForLoggedInUser(message)
            }
    }
    nexmoClient.processPushNotification(message.getData(), new NexmoPushEventListener(){
        public void onIncomingCall(NexmoCall nexmoCall){
        }
        public void onNewEvent(NexmoEvent event){
        }
        public void onError(NexmoApiError error){
        }
    })

Fixe

  • fixer NexmoConversation.sendAttachment insecte
  • fixer NexmoAttachmentEvent reçu du backend
  • Correction d'un bogue de condition de course provoquant l'abandon d'appels
  • Correction d'un bug dans la notification push

Version 1.0.2 - 2019-11-11

Changements

  • Renommer GetConversationsPage à GetConversations
  • Renommer GetEventsPage à GetEvents
  • NexmoClient.GetConversations par défaut pageSize est de 10
  • NexmoConversation.GetEvents par défaut pageSize est de 10

Version 1.0.1

Nouveau

  • Ajouter getConversationsPage en NexmoClient
    NexmoClient.get().getConversationsPage(50, NexmoPageOrderDesc, new NexmoRequestListener<NexmoConversationsPage>(){
        void onError(@NonNull NexmoApiError error){

        }
        void onSuccess(@Nullable NexmoConversationsPage result){
             //Get the current page conversations -Sync
             Collection<NexmoConversation> conversations = result.getData()
             //Get the next page -Async
             result.getNext(new NexmoRequestListener<NexmoConversationsPage>(){
             void onError(@NonNull NexmoApiError error){

                }
                void onSuccess(@Nullable NexmoConversationsPage result){

                }
             })

             //Get the previous page -Async
             result.getPrev(new NexmoRequestListener<NexmoConversationsPage>(){
             void onError(@NonNull NexmoApiError error){

                }
                void onSuccess(@Nullable NexmoConversationsPage result){

                }
             })
        }
    });
  • Ajouter getEventsPage en NexmoConversation
    NexmoConversation myConversation;
    ...
    myConversation.getEventsPage(50, NexmoPageOrderDesc, new NexmoRequestListener<NexmoEventsPage>(){
        void onError(@NonNull NexmoApiError error){

        }
        void onSuccess(@Nullable NexmoEventsPage result){
            //Current event page data -Sync
            Collection<NexmoEvent> events = result.getData();
            //Get the next page -Async
            result.getNext( new NexmoRequestListener<NexmoEventsPage>(){
                 void onError(@NonNull NexmoApiError error){

                        }
                void onSuccess(@Nullable NexmoEventsPage result){
                }
            }
            );

            //Get the previous page -Async
            result.getPrev( new NexmoRequestListener<NexmoEventsPage>(){
                 void onError(@NonNull NexmoApiError error){

                        }
                void onSuccess(@Nullable NexmoEventsPage result){
                }
            }
            );
        }
    );

Supprimé

  • supprimer conversation.getEvents()

Fixe

  • NexmoConversation Parcelable fixe

Version 1.0.0 - 2019-09-05

Modifié

  • NexmoClient est un singleton et n'obtient que le contexte comme paramètre obligatoire. Pour initialiser NexmoClient:
    NexmoClient nexmoClientInstance = NexmoClientBuilder.Builder().build(context);
  • Pour définir NexmoConnectionListener:
    NexmoConnectionListener myConnectionListener = new NexmoConnectionListener{
    void onConnectionStatusChange(ConnectionStatus status, ConnectionStatusReason reason){
      Log.i("onConnectionStatusChange","status:" + status + " reason:" + reason);
    }
  }
  nexmoClientInstance.setConnectionListener(myConnectionListener);
  • NexmoClient La fonction d'appel reçoit un seul nom d'utilisateur ou un seul numéro de téléphone :
//IN APP CALL:
NexmoClient.get().call(callee, NexmoCallHandler.IN_APP, new NexmoRequestListener<NexmoCall>() {
    void onError(@NonNull NexmoApiError error){
    }
    void onSuccess(@Nullable NexmoCall result){
    }
});

//SERVER CALL:
NexmoClient.call(callee, NexmoCallHandler.SERVER, new NexmoRequestListener<NexmoCall>() {
    void onError(@NonNull NexmoApiError error){
    }
    void onSuccess(@Nullable NexmoCall result){
    }
});
  • Supprimé NexmoCallMember.getMember()et a ajouté des getters :
NexmoCallMember someCallMember;
NexmoUser user = someCallMember.getUser();
String memberId = someCallMember.getMemberId();
NexmoCallStatus statues = someCallMember.getStatus();
NexmoChannel channel = someCallMember.getChannel();

Nouveau

  • Android minSDK a maintenant 23 ans.
  • CustomEvents soutien en NexmoConversation:
//NexmoCustomEvent:NexmoEvent:
    String                  getCustomType()
    HashMap<String, Object> getData()
  • NexmoMedia ajouté à NexmoConversationpour la prise en charge des fonctions audio au sein d'un NexmoConversation contexte :
    NexmoMember someMember;
    NexmoMedia media = someMember.media;
    media.getEnabled();
    media.getMuted();
    media.getEarmuffed();
  • getNemxoEventType() en NexmoEvent est publique

Fixe

  • NexmoCallMember.status reflète l'état actuel de la jambe.
  • Ajout d'un garde à NexmoClient pour empêcher les appels lorsque l'utilisateur n'est pas connecté.
  • Mise à jour NexmoUser les valeurs manquantes après la connexion.

Supprimé

  • Supprimé conversation.getUser(). Il est possible d'accéder à l'utilisateur actuel avec : NexmoClient.getUser().

Ajouté

  • NexmoConversation envoyer et recevoir CustomEvents
  • NexmoCustomEvent:NexmoEvent: String getCustomType() HashMap<String, Object> getData()
  • NexmoChannel S'opposer à NexmoMember.
    NexmoMember someMember;
    NexmoChannel channel = someMember.channel;

Version 0.3.0 - 4 juin 2019

Cette version contient de nombreuses petites corrections de bugs et des améliorations de la stabilité. Les principaux changements sont les suivants :

Ajouté

  • NexmoChannel a été ajouté à NexmoMemberpour exposer les données du canal lorsqu'elles existent. Les NexmoChannel L'objet comprend to et from avec les données de la destination et de l'origine du canal.

Rupture des changements

Supprimé

  • NexmoMember.ChannelType - doit être remplacé par NexmoMember.Channel.from.type

  • NexmoMember.ChannelData - doit être remplacé par NexmoMember.Channel.from.data

Modifié

  • NexmoLoginListener a été améliorée et son interface mise à jour :

  • onLoginStateChange() et onAvailabilityChange() étaient supprimée

  • onConnectionStatusChange(ConnectionStatus status, ConnectionStatusReason reason) a été ajoutée, en tant que version agrégée et améliorée des méthodes susmentionnées.

Ajouté

  • Prise en charge de l'analyse syntaxique de l'élément MemberId qui a initié un appel.

Fixe

  • Améliorations pour les appels inter-plateformes dans l'application

  • Crash lors du traitement des notifications push sans initialisation du SDK

  • Crash lors de l'envoi markAsDelivered événement



Version 0.3.0 - 4 juin 2019

Cette version contient de nombreuses petites corrections de bugs et des améliorations de la stabilité. Les principaux changements sont les suivants :

Ajouté

  • NexmoChannel a été ajouté à NexmoMemberpour exposer les données du canal lorsqu'elles existent. Les NexmoChannel L'objet comprend to et from avec les données de la destination et de l'origine du canal.

Rupture des changements

Supprimé

  • NexmoMember.ChannelType - doit être remplacé par NexmoMember.Channel.from.type

  • NexmoMember.ChannelData - doit être remplacé par NexmoMember.Channel.from.data

Modifié

  • NexmoLoginListener a été améliorée et son interface mise à jour :

  • onLoginStateChange() et onAvailabilityChange() étaient supprimée

  • onConnectionStatusChange(ConnectionStatus status, ConnectionStatusReason reason) a été ajoutée, en tant que version agrégée et améliorée des méthodes susmentionnées.

Ajouté

  • Prise en charge de l'analyse syntaxique de l'élément MemberId qui a initié un appel.

Fixe

  • Améliorations pour les appels inter-plateformes dans l'application

  • Crash lors du traitement des notifications push sans initialisation du SDK

  • Crash lors de l'envoi markAsDelivered événement


Version 0.2.67 - 17 avril 2019

Ajouté

Fixe

  • Bugs lors de la mise à jour CallMember statuts