Notas de publicación

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 de septiembre de 2022

Fijo

  • Fijar NexmoMessage procesamiento de colas vistas y entregadas

4.1.2 - 10 de agosto de 2022

Fijo

  • Usar config cliente logLevel para registro http

4.1.1 - 25 de mayo de 2022

Fijo

  • Fijar NexmoMessage serialización
  • Corrección del tratamiento de errores en NexmoClient.getConversation() cuando no sea miembro.

4.1.0 - 11 de mayo de 2022

Añadido

  • Apoyo a call:transfer en NexmoCall
  • Añadido NexmoLegTransferEvent que contiene detalles de la conversación anterior y actual cuando se transfiere una llamada
  • Añadido CallEventListener recibir NexmoLegTransferEvent con nuevos miembros cuando se transfiere una llamada a una nueva conversación.
   NexmoCallEventListener callEventListener = new NexmoCallEventListener() {
        @Override
        public void onLegTransfer(NexmoLegTransferEvent event, NexmoMember member) {
            Log.d(TAG, "Call Transferred");
        }
   };
  • Exponga pushNotificationTTL en el NexmoClient.Builder() nivel para configurar el dispositivo registrado Push TTL
  • Nuevos actos públicos NexmoSubmittedEvent, NexmoRejectedEvent y NexmoUndeliverableEvent para los estados de mensajes.
  • Se han añadido nuevos escuchadores de estado de mensaje a NexmoMessageEventListener interfaz.
   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 de abril de 2022

Fijo

  • Cambio de la zona horaria local por defecto a UTC.

4.0.3 - 4 de abril de 2022

Fijo

  • Se ha añadido una comprobación para garantizar que el usuario ha iniciado sesión durante la configuración de la llamada saliente de precalentamiento.
  • Se ha cambiado la fecha y hora por defecto a UTC sin zona horaria.

4.0.2 - 9 de marzo de 2022

Mejoras

  • Dependencia de WebRTC actualizada a la versión 84.0.22.

4.0.1 - 21 de enero de 2022

Fijo

  • Se ha añadido una comprobación para asegurar que el usuario ha iniciado sesión antes de que el SDK intente procesar el evento push.

4.0.0 - 7 de diciembre de 2021

Añadido

  • NexmoConversation.sendMessage(message, listener) enviar NexmoMessage a una conversación.
  • NexmoClient.uploadAttachment(attachment, listener) para enviar NexmoAttachmentType.
  • NexmoMessage representa un mensaje de EMessageEventType tipo a enviar.
  • EMessageEventType para mensajes de tipo text, image, audio, video, file, template, vcard, custom y location.
  • NexmoChannelType canales añadidos de tipo sms, mms, whatsapp, viber y messenger.
  • NexmoAttachmentType para cargar un mensaje adjunto al servicio multimedia de Vonage.
  • NexmoMessageEvent representa el evento de estado del mensaje de miembro enviado al NexmoMemberMessageStatusEventListener.

Mejoras

  • Dependencia de WebRTC actualizada a la versión 84.0.0.

Obsoleto

  • NexmoConversation.sendText(text, listener) método. Utilice NexmoConversation.sendMessage(message, listener) en su lugar.
  • NexmoConversation.sendAttachment(file, listener) método. Utilice NexmoClient.uploadAttachment(attachment, listener) y NexmoConversation.sendMessage(message, listener) en su lugar.

3.3.0 - 22 de noviembre de 2022

Añadido

  • NexmoClient.Builder's restEnvironmentHostPinning y environmentHostPinning métodos añadidos para habilitar HTTP y web-socket SSL pinning.
  • NexmoPinningConfig.fromPublicKeys(...) para crear una configuración de pinning basada en clave pública.
nexmoClient = new NexmoClient.Builder()
    .environmentHostPinning(NexmoPinningConfig.fromPublicKeys("publicKeyHash"))
    .build(context);
  • Nuevo ConnectionStatusReason caso SSL_PINNING_ERROR cuando Disconnected debido a que se ha encontrado una clave pública inválida en la conexión backend.
connectionStateListener = NexmoConnectionListener { status, reason ->
    when(status){
          NexmoConnectionListener.ConnectionStatus.DISCONNECTED-> {
              if (reason == NexmoConnectionListener.ConnectionStatusReason.SSL_PINNING_ERROR) {
                  // Notify UI
              }
          }
      }
}

3.2.0 - 19 de octubre de 2021

Añadido

  • NexmoClient.Builder.autoMediaReoffer(autoMediaReoffer) para permitir la reconexión automática de los medios cuando cambien las interfaces de red.
  • EMediaConnectionState enumerar.
  • NexmoMediaStatusListener para recibir la notificación de cambio de estado de la conexión multimedia.
  • NexmoConversation.reconnectMedia() para activar una reconexión de medios.
  • NexmoClient.reconnectCall(conversationId, legId, listener) para volver a conectar una llamada dado un identificador de conversación y un identificador de tramo.
  • NexmoClient.getUserSessions(userId, pageSize, order, listener) para obtener una lista paginada de las sesiones de usuario activas.

Versión 3.1.1 - 18 de octubre de 2021

Añadido

  • Cambiar enchufe connectionListeners de HashSet a ArraySet.

Versión 3.1.0 - 6 de septiembre de 2021

Añadido

  • NexmoClient.inAppCall(username, listener) para realizar llamadas dentro de la aplicación.
  • NexmoClient.serverCall(callee, customData, listener) para realizar llamadas al servidor, especificando opcionalmente customData.

Obsoleto

  • NexmoClient.call(callee, callType, listener) método.
  • NexmoCallHandler enumerar.

Versión 3.0.1 - 16 de junio de 2021

Mejoras

  • Se ha corregido un error en el envío DTMF de una devolución de llamada a event_url
  • Corregido un error de no recepción de eventos de escritura desde Web a Android

Versión 3.0.0 - 1 de junio de 2021

Añadido

  • Añadido NexmoMemberSummary devuelto por conversation.getMembers(pageSize, order, listener) (paginado), que representa un subconjunto de información de los miembros.
  • Añadido memberEvent.getInvitedBy() que representa el nombre del invocador, si existe.
  • Añadido NexmoEventEmbeddedInfo a todos los eventos devueltos por event.getEmbeddedInfo() y que contiene el NexmoUser vinculada al acontecimiento.
  • Añadido conversation.getMember(memberId, listener) devolviendo el miembro dado su identificador.

Mejoras

  • Mejora de la documentación javadoc.
  • Mejorar callServer tiempo de preparación precalentando la pierna.
  • Desactivar medios tras evento de cuelgue de RTC.

Cambios de última hora

  • Eliminado NexmoCallMembersustituido por NexmoMember.
  • Eliminado callMember.getCallStatus(), se trasladó a call.getMemberCallStatus(member).
  • Eliminado callMember.mute(boolean, listener) trasladado a member.enableMute(listener) y member.disableMute(listener).
  • Eliminado callMember.earmuff(boolean, listener) trasladado a member.enableEarmuff(listener) y member.enableEarmuff(listener).
  • Eliminado conversation.getAllMembers() trasladado a conversation.getMembers() (paginado).
  • Eliminado NexmoConversationListener.onMemberUpdatedsustituido por NexmoMemberEventListener que proporcionan onMemberInvited, onMemberAdded, onMemberRemoved suscrito por conversation.addMemberEventListener().
  • Renombrado call.getCallMembers() a call.getAllMembers().
  • Renombrado call.getMyCallMember() a call.getMyMember().
  • En legs debe incluirse en acl caminos en JWT creación de fichas.
"acl": {
  "paths": {
    ...,
    "/*/legs/**": {}
  }
}

Versión 2.8.1 - 14 de diciembre de 2020

Mejoras

  • Corregida la incoherencia de valores en los atributos displayName y imageUrl para NexmoUser objeto.
  • Mejora de la estabilidad de las llamadas salientes y las conversaciones.

Versión 2.8.0 - 19 de noviembre de 2020

Cambiado

  • Renombrado NexmoCallMemberStatus.CANCELED a NexmoCallMemberStatus.CANCELLED.

Mejoras

  • Notificado con NexmoCallMemberStatus.CANCELLED sobre el oyente onMemberStatusUpdated(NexmoCallMemberStatus memberStatus, NexmoCallMember callMember) para colgar la llamada.

Versión 2.7.1 - 27 de octubre de 2020

Mejoras

  • Mejora de la estabilidad de las llamadas salientes.

Versión 2.7.0 - 24 de septiembre de 2020

Añadido

  • Exponer la razón NETWORK_ERROR sobre el estado de la conexión DISCONNECTED para el oyente onConnectionStatusChange(ConnectionStatus status, ConnectionStatusReason reason).

Versión 2.6.5 - 24 de agosto de 2020

Mejoras

  • Se ha mejorado la implementación de los registros del SDK y la estabilidad de la conexión de socket.

Versión 2.6.4 - 19 de mayo de 2020

Nuevo

  • Hemos dividido nuestros artefactos de esta versión, por lo que el repositorio maven personalizado tiene que ser añadido al proyecto:
    //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")
        }
    }

Mejoras

  • Mejora de los informes sobre la versión del SDK del agente de usuario.

Versión 2.6.3 - 4 de mayo de 2020

Fijo

  • Modificación de la visibilidad de Nexmo.page.isPrevPageExist() a public.

Versión 2.6.2 - 29 de abril de 2020

Fijo

  • Posible NullPointerException al procesar las notificaciones push durante el inicio de sesión del cliente.

Versión 2.6.1 - 22 de abril de 2020

Añadido

  • Exponer la interfaz NexmoDTMFEventListener para suscribirse a eventos DTMF en NexmoConversation.

Versión 2.6.0 - 20 de abril de 2020

Añadido

  • Exponer el estado de la conexión isConnected en NexmoClient.
    NexmoClient.get().isConnected()

Fijo

  • Evite invocar login varias veces cuando el usuario ya está conectado.

Versión 2.5.1 - 20 de abril de 2020

Mejoras

  • Mejora de la recopilación de candidatos a la CIE única.

Versión 2.5.0 - 25 de marzo de 2020

Añadido

  • Añadir useFirstIceCandidate parámetros a NexmoClient.Builder
    nexmoClient = new NexmoClient.Builder().useFirstIceCandidate(true/false).build(context);

Versión 2.4.0 - 3 de marzo de 2020

Añadido

  • Añadir filtro por estado a 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){

                }
            })
        }
    });

Versión 2.3.0 - 11 de febrero de 2020

Añadido

  • Añadir updateAsDelivered y UpdateAsSeen a NexmoAttachmentEvent y NexmoTextEvent como método auxiliar para actualizar el evento localmente después de markAsSeen o markAsDelivered ha tenido éxito.
  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())

       }
   })

Fijo

  • Fijar markAsSeen y markAsDelivered para NexmoTextEvent y NexmoAttachmentEvent

Cambiado

  • Actualizar las bibliotecas de dependencia por favor agregue a su construcción Gradle
android {
    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_1_8.toString()
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

Versión 2.2.0 - 31 de enero de 2020

Añadido

  • Añadir soporte para Notificaciones Push Personalizadas, utilizando processNexmoPush() ,processPushNotification() está obsoleto
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.
    }
}
  • Añadir markAsDelivered() para NexmoTextEvent y 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)
        }
   })
  • Añadir markAsSeen() para NexmoTextEvent y 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)
        }
   })

Versión 2.1.2 - 12 de enero de 2020

Añadido

  • Añadir anotación de PermissionRequired para la función que inicia los medios de comunicación: 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())

                }
            });
        }
    }

Eliminado

  • Eliminar el requisito de permiso PROCESS_OUTGOING_CALLS
  • Eliminar el requisito de permiso READ_PHONE_STATE

Versión 2.1.0 - 01 de enero de 2020

Añadido

  • Añadir clearNexmoEventsListeners método en NexmoConversation para borrar todos los oyentes
    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();
        }
    }
  • Añadir clearMemberEventListeners método en NexmoConversation para borrar todos NexmoMemberEventListener oyentes
    class MyActivity extends Activity{
        NexmoConversation myConversation;

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

            });
        }

        @Override public void onStop(){
            myConversation.clearMemberEventListeners();
        }
    }
  • Añadir clearCustomEventListeners método en NexmoConversation para borrar todos NexmoCustomEventListener oyentes
    class MyActivity extends Activity{
        NexmoConversation myConversation;

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

            });
        }

        @Override public void onStop(){
            myConversation.clearCustomEventListeners();
        }
    }
  • Añadir clearLegStatusEventListeners método en NexmoConversation para borrar todos NexmoLegStatusEventListener oyentes
    class MyActivity extends Activity{
        NexmoConversation myConversation;

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

            });
        }

        @Override public void onStop(){
            myConversation.clearLegStatusEventListeners();
        }
    }
  • Añadir clearDTMFEventListeners método en NexmoConversation para borrar todos NexmoDTMFEventListener oyentes
    class MyActivity extends Activity{
        NexmoConversation myConversation;

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

            });
        }

        @Override public void onStop(){
            myConversation.clearDTMFEventListeners();
        }
    }
  • Añadir clearMessageEventListeners método en NexmoConversation para borrar todos NexmoMessageEventListener oyentes
    class MyActivity extends Activity{
        NexmoConversation myConversation;

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

            });
        }

        @Override public void onStop(){
            myConversation.clearMessageEventListeners();
        }
    }
  • Añadir clearNexmoConversationListeners método en NexmoConversation para borrar todos NexmoConversationListener oyentes
    class MyActivity extends Activity{
        NexmoConversation myConversation;

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

            });
        }

        @Override public void onStop(){
            myConversation.clearNexmoConversationListeners();
        }
    }
  • Añadir clearTypingEventListeners método en NexmoConversation para borrar todos NexmoTypingEventListener oyentes
    class MyActivity extends Activity{
        NexmoConversation myConversation;

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

            });
        }

        @Override public void onStop(){
            myConversation.clearTypingEventListeners();
        }
    }
  • Añadir NexmoMember a NexmoMemberEvent con respecto al NexmoMember actuado por:
    NexmoConversation myConversation;
    myConversation.addMemberEventListener(new NexmoMemberEventListener{
        void onMemberInvited(@NonNull final NexmoMemberEvent event){
            //The invitee member
            event.getMember()
            //the inviter member
            event.getFromMember()
        }
    });

Fijo

  • enviar NexmoAttachmentEvent con respecto a NexmoConversation
    NexmoConversation myConversation;
    myConversation.addNexmoMessageEventListener(new NexmoMessageEventListener(){

        void onAttachmentEvent(@NonNull final NexmoAttachmentEvent attachmentEvent){
            //handle attachment event
        }
    });
  • enviar NexmoMediaEvent con respecto a NexmoConveration
  • enviar NexmoMediaActionEvent con respecto a NexmoConveration
  • escriba a NexmoDTMFEvent herencia NexmoEvent
  • NexmoTextEvent.equals utilizar super.equals
  • NexmoConversation.getCreationDate volver Date objeto java
  • NexmoEvent.getCreationDate fijar IllegalArgumentException

2.0.0 - 2019-12-22

Añadido

  • Añadir filtro por 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()
        }
    });

Cambiado

  • NexmoDeliveredEvent eliminar InitialEvent y añada InitialEventId
  • NexmoSeenEvent eliminar InitialEvent y añada InitialEventId

Fijo

  • Compatibilidad con DTLS en WebRTC
  • NexmoConversationsPage.getPrev() devolver las conversaciones del cursor derecho

2.0.0 - 2019-12-22

Añadido

  • Añadir filtro por 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()
        }
    });

Cambiado

  • NexmoDeliveredEvent eliminar InitialEvent y añada InitialEventId
  • NexmoSeenEvent eliminar InitialEvent y añada InitialEventId

Fijo

  • Compatibilidad con DTLS en WebRTC
  • NexmoConversationsPage.getPrev() devolver las conversaciones del cursor derecho

1.2.0 - 2019-12-16

Añadido

  • Añadir filtro por 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()
        }
    });

Fijo

  • Compatibilidad con DTLS en WebRTC

Versión 1.1.0 - 2019-12-04

Cambios

  • Añadir iceServerUrls parámetros a NexmoClient.Builder
    nexmoClient = new NexmoClient.Builder().iceServerUrls(new String[]{"stun/turn servr url"}).build(context);

Fijo

  • solucionar el problema de las llamadas entrantes de las notificaciones push

Versión 1.0.3 - 2019-11-20

###Changes

  • cambiar la firma de NexmoClient.login()eliminar NexmoRequestListener<NexmoUser> parámetro:
    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")
  • cambiar la firma de NexmoPushEventListener.onIncomingCall()eliminar MemberEvent parámetro:
    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){
        }
    })

Fijo

  • fijar NexmoConversation.sendAttachment error
  • fijar NexmoAttachmentEvent recibido del backend
  • corregir el error de condición de carrera que provoca la caída de llamadas
  • corrección de un error en las notificaciones push

Versión 1.0.2 - 2019-11-11

Cambios

  • Cambie el nombre de GetConversationsPage a GetConversations
  • Cambie el nombre de GetEventsPage a GetEvents
  • NexmoClient.GetConversations por defecto pageSize es 10
  • NexmoConversation.GetEvents por defecto pageSize es 10

Versión 1.0.1

Nuevo

  • Añadir 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){

                }
             })
        }
    });
  • Añadir 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){
                }
            }
            );
        }
    );

Eliminado

  • eliminar conversation.getEvents()

Fijo

  • NexmoConversation Parcelable fijo

Versión 1.0.0 - 2019-09-05

Cambiado

  • NexmoClient es un singleton y sólo obtiene el Context como parámetro obligatorio. Para inicializar NexmoClient:
    NexmoClient nexmoClientInstance = NexmoClientBuilder.Builder().build(context);
  • Para fijar NexmoConnectionListener:
    NexmoConnectionListener myConnectionListener = new NexmoConnectionListener{
    void onConnectionStatusChange(ConnectionStatus status, ConnectionStatusReason reason){
      Log.i("onConnectionStatusChange","status:" + status + " reason:" + reason);
    }
  }
  nexmoClientInstance.setConnectionListener(myConnectionListener);
  • NexmoClient La función de llamada recibe un único nombre de usuario o número de teléfono:
//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){
    }
});
  • Eliminado NexmoCallMember.getMember()y añadido getters:
NexmoCallMember someCallMember;
NexmoUser user = someCallMember.getUser();
String memberId = someCallMember.getMemberId();
NexmoCallStatus statues = someCallMember.getStatus();
NexmoChannel channel = someCallMember.getChannel();

Nuevo

  • Android minSDK tiene ahora 23 años.
  • CustomEvents apoyo en NexmoConversation:
//NexmoCustomEvent:NexmoEvent:
    String                  getCustomType()
    HashMap<String, Object> getData()
  • NexmoMedia añadido a NexmoConversationpara el soporte de funciones de audio dentro de un NexmoConversation contexto:
    NexmoMember someMember;
    NexmoMedia media = someMember.media;
    media.getEnabled();
    media.getMuted();
    media.getEarmuffed();
  • getNemxoEventType() en NexmoEvent es público

Fijo

  • NexmoCallMember.status refleja el estado actual del tramo.
  • Protección añadida a NexmoClient para evitar llamadas mientras el usuario no está conectado.
  • Actualizado NexmoUser valores que faltan después del inicio de sesión.

Eliminado

  • Eliminado conversation.getUser(). Se puede acceder al usuario actual con: NexmoClient.getUser().

Añadido

  • NexmoConversation enviar y recibir CustomEvents
  • NexmoCustomEvent:NexmoEvent: String getCustomType() HashMap<String, Object> getData()
  • NexmoChannel Objetar a NexmoMember.
    NexmoMember someMember;
    NexmoChannel channel = someMember.channel;

Versión 0.3.0 - 4 de junio de 2019

Esta versión contiene muchas pequeñas correcciones de errores y mejoras de estabilidad. Los principales cambios son:

Añadido

  • NexmoChannel se añadió a NexmoMember, para exponer los datos del canal cuando exista. La dirección NexmoChannel El objeto incluye to y from con los datos del Canal destino y origen.

Cambios de última hora

Eliminado

  • NexmoMember.ChannelType - debe sustituirse por NexmoMember.Channel.from.type

  • NexmoMember.ChannelData - debe sustituirse por NexmoMember.Channel.from.data

Cambiado

  • NexmoLoginListener se ha mejorado y actualizado su interfaz:

  • onLoginStateChange() y onAvailabilityChange() eran eliminado

  • onConnectionStatusChange(ConnectionStatus status, ConnectionStatusReason reason) como una versión agregada y mejorada de los métodos anteriores.

Añadido

  • Soporte para el análisis sintáctico de MemberId que inició una llamada.

Fijo

  • Mejoras en las llamadas a aplicaciones multiplataforma

  • Bloqueo al procesar notificaciones push sin inicialización del SDK

  • Bloqueo al enviar markAsDelivered evento



Versión 0.3.0 - 4 de junio de 2019

Esta versión contiene muchas pequeñas correcciones de errores y mejoras de estabilidad. Los principales cambios son:

Añadido

  • NexmoChannel se añadió a NexmoMember, para exponer los datos del canal cuando exista. La dirección NexmoChannel El objeto incluye to y from con los datos del Canal destino y origen.

Cambios de última hora

Eliminado

  • NexmoMember.ChannelType - debe sustituirse por NexmoMember.Channel.from.type

  • NexmoMember.ChannelData - debe sustituirse por NexmoMember.Channel.from.data

Cambiado

  • NexmoLoginListener se ha mejorado y actualizado su interfaz:

  • onLoginStateChange() y onAvailabilityChange() eran eliminado

  • onConnectionStatusChange(ConnectionStatus status, ConnectionStatusReason reason) como una versión agregada y mejorada de los métodos anteriores.

Añadido

  • Soporte para el análisis sintáctico de MemberId que inició una llamada.

Fijo

  • Mejoras en las llamadas a aplicaciones multiplataforma

  • Bloqueo al procesar notificaciones push sin inicialización del SDK

  • Bloqueo al enviar markAsDelivered evento


Versión 0.2.67 - 17 de abril de 2019

Añadido

Fijo

  • Errores al actualizar CallMember estados