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
NexmoMessageprocesamiento 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
NexmoMessageserializació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:transferenNexmoCall - Añadido
NexmoLegTransferEventque contiene detalles de la conversación anterior y actual cuando se transfiere una llamada - Añadido
CallEventListenerrecibirNexmoLegTransferEventcon 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
pushNotificationTTLen elNexmoClient.Builder()nivel para configurar el dispositivo registrado Push TTL - Nuevos actos públicos
NexmoSubmittedEvent,NexmoRejectedEventyNexmoUndeliverableEventpara los estados de mensajes. - Se han añadido nuevos escuchadores de estado de mensaje a
NexmoMessageEventListenerinterfaz.
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)enviarNexmoMessagea una conversación.NexmoClient.uploadAttachment(attachment, listener)para enviarNexmoAttachmentType.NexmoMessagerepresenta un mensaje deEMessageEventTypetipo a enviar.EMessageEventTypepara mensajes de tipotext,image,audio,video,file,template,vcard,customylocation.NexmoChannelTypecanales añadidos de tiposms,mms,whatsapp,viberymessenger.NexmoAttachmentTypepara cargar un mensaje adjunto al servicio multimedia de Vonage.NexmoMessageEventrepresenta el evento de estado del mensaje de miembro enviado alNexmoMemberMessageStatusEventListener.
Mejoras
- Dependencia de WebRTC actualizada a la versión
84.0.0.
Obsoleto
NexmoConversation.sendText(text, listener)método. UtiliceNexmoConversation.sendMessage(message, listener)en su lugar.NexmoConversation.sendAttachment(file, listener)método. UtiliceNexmoClient.uploadAttachment(attachment, listener)yNexmoConversation.sendMessage(message, listener)en su lugar.
3.3.0 - 22 de noviembre de 2022
Añadido
NexmoClient.Builder'srestEnvironmentHostPinningyenvironmentHostPinningmé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
ConnectionStatusReasoncasoSSL_PINNING_ERRORcuandoDisconnecteddebido 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.EMediaConnectionStateenumerar.NexmoMediaStatusListenerpara 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
connectionListenersdeHashSetaArraySet.
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 opcionalmentecustomData.
Obsoleto
NexmoClient.call(callee, callType, listener)método.NexmoCallHandlerenumerar.
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
NexmoMemberSummarydevuelto porconversation.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
NexmoEventEmbeddedInfoa todos los eventos devueltos porevent.getEmbeddedInfo()y que contiene elNexmoUservinculada al acontecimiento. - Añadido
conversation.getMember(memberId, listener)devolviendo el miembro dado su identificador.
Mejoras
- Mejora de la documentación javadoc.
- Mejorar
callServertiempo de preparación precalentando la pierna. - Desactivar medios tras evento de cuelgue de RTC.
Cambios de última hora
- Eliminado
NexmoCallMembersustituido porNexmoMember. - Eliminado
callMember.getCallStatus(), se trasladó acall.getMemberCallStatus(member). - Eliminado
callMember.mute(boolean, listener)trasladado amember.enableMute(listener)ymember.disableMute(listener). - Eliminado
callMember.earmuff(boolean, listener)trasladado amember.enableEarmuff(listener)ymember.enableEarmuff(listener). - Eliminado
conversation.getAllMembers()trasladado aconversation.getMembers()(paginado). - Eliminado
NexmoConversationListener.onMemberUpdatedsustituido porNexmoMemberEventListenerque proporcionanonMemberInvited,onMemberAdded,onMemberRemovedsuscrito porconversation.addMemberEventListener(). - Renombrado
call.getCallMembers()acall.getAllMembers(). - Renombrado
call.getMyCallMember()acall.getMyMember(). - En
legsdebe incluirse enaclcaminos enJWTcreació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
displayNameyimageUrlparaNexmoUserobjeto. - Mejora de la estabilidad de las llamadas salientes y las conversaciones.
Versión 2.8.0 - 19 de noviembre de 2020
Cambiado
- Renombrado
NexmoCallMemberStatus.CANCELEDaNexmoCallMemberStatus.CANCELLED.
Mejoras
- Notificado con
NexmoCallMemberStatus.CANCELLEDsobre el oyenteonMemberStatusUpdated(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_ERRORsobre el estado de la conexiónDISCONNECTEDpara el oyenteonConnectionStatusChange(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()apublic.
Versión 2.6.2 - 29 de abril de 2020
Fijo
- Posible
NullPointerExceptional 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
NexmoDTMFEventListenerpara suscribirse a eventos DTMF enNexmoConversation.
Versión 2.6.0 - 20 de abril de 2020
Añadido
- Exponer el estado de la conexión
isConnectedenNexmoClient.
NexmoClient.get().isConnected()
Fijo
- Evite invocar
loginvarias 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
useFirstIceCandidateparámetros aNexmoClient.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
getConversationsPageenNexmoClient.
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
updateAsDeliveredyUpdateAsSeenaNexmoAttachmentEventyNexmoTextEventcomo método auxiliar para actualizar el evento localmente después demarkAsSeenomarkAsDeliveredha 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
markAsSeenymarkAsDeliveredparaNexmoTextEventyNexmoAttachmentEvent
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()paraNexmoTextEventyNexmoAttachmentEvent
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()paraNexmoTextEventyNexmoAttachmentEvent
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
PermissionRequiredpara 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
clearNexmoEventsListenersmétodo enNexmoConversationpara 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
clearMemberEventListenersmétodo enNexmoConversationpara borrar todosNexmoMemberEventListeneroyentes
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
clearCustomEventListenersmétodo enNexmoConversationpara borrar todosNexmoCustomEventListeneroyentes
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
clearLegStatusEventListenersmétodo enNexmoConversationpara borrar todosNexmoLegStatusEventListeneroyentes
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
clearDTMFEventListenersmétodo enNexmoConversationpara borrar todosNexmoDTMFEventListeneroyentes
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
clearMessageEventListenersmétodo enNexmoConversationpara borrar todosNexmoMessageEventListeneroyentes
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
clearNexmoConversationListenersmétodo enNexmoConversationpara borrar todosNexmoConversationListeneroyentes
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
clearTypingEventListenersmétodo enNexmoConversationpara borrar todosNexmoTypingEventListeneroyentes
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
NexmoMemberaNexmoMemberEventcon respecto alNexmoMemberactuado 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
NexmoAttachmentEventcon respecto aNexmoConversation
NexmoConversation myConversation;
myConversation.addNexmoMessageEventListener(new NexmoMessageEventListener(){
void onAttachmentEvent(@NonNull final NexmoAttachmentEvent attachmentEvent){
//handle attachment event
}
});
- enviar
NexmoMediaEventcon respecto aNexmoConveration - enviar
NexmoMediaActionEventcon respecto aNexmoConveration - escriba a
NexmoDTMFEventherenciaNexmoEvent NexmoTextEvent.equalsutilizarsuper.equalsNexmoConversation.getCreationDatevolverDateobjeto javaNexmoEvent.getCreationDatefijarIllegalArgumentException
2.0.0 - 2019-12-22
Añadido
- Añadir filtro por
EventTypeenNexmoConversation.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
NexmoDeliveredEventeliminarInitialEventy añadaInitialEventIdNexmoSeenEventeliminarInitialEventy añadaInitialEventId
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
EventTypeenNexmoConversation.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
NexmoDeliveredEventeliminarInitialEventy añadaInitialEventIdNexmoSeenEventeliminarInitialEventy añadaInitialEventId
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
EventTypeenNexmoConversation.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
iceServerUrlsparámetros aNexmoClient.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()eliminarNexmoRequestListener<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()eliminarMemberEventpará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.sendAttachmenterror - fijar
NexmoAttachmentEventrecibido 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
GetConversationsPageaGetConversations - Cambie el nombre de
GetEventsPageaGetEvents NexmoClient.GetConversationspor defectopageSizees 10NexmoConversation.GetEventspor defectopageSizees 10
Versión 1.0.1
Nuevo
- Añadir
getConversationsPageenNexmoClient
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
getEventsPageenNexmoConversation
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
NexmoConversationParcelablefijo
Versión 1.0.0 - 2019-09-05
Cambiado
NexmoClientes un singleton y sólo obtiene el Context como parámetro obligatorio. Para inicializarNexmoClient:
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);
NexmoClientLa 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
minSDKtiene ahora 23 años. CustomEventsapoyo enNexmoConversation:
//NexmoCustomEvent:NexmoEvent:
String getCustomType()
HashMap<String, Object> getData()
NexmoMediaañadido aNexmoConversationpara el soporte de funciones de audio dentro de unNexmoConversationcontexto:
NexmoMember someMember;
NexmoMedia media = someMember.media;
media.getEnabled();
media.getMuted();
media.getEarmuffed();
getNemxoEventType()enNexmoEventes público
Fijo
NexmoCallMember.statusrefleja el estado actual del tramo.- Protección añadida a
NexmoClientpara evitar llamadas mientras el usuario no está conectado. - Actualizado
NexmoUservalores que faltan después del inicio de sesión.
Eliminado
- Eliminado
conversation.getUser(). Se puede acceder al usuario actual con:NexmoClient.getUser().
Añadido
NexmoConversationenviar y recibirCustomEventsNexmoCustomEvent:NexmoEvent:StringgetCustomType()HashMap<String, Object>getData()NexmoChannelObjetar aNexmoMember.
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
NexmoChannelse añadió aNexmoMember, para exponer los datos del canal cuando exista. La direcciónNexmoChannelEl objeto incluyetoyfromcon los datos del Canal destino y origen.
Cambios de última hora
Eliminado
NexmoMember.ChannelType- debe sustituirse porNexmoMember.Channel.from.typeNexmoMember.ChannelData- debe sustituirse porNexmoMember.Channel.from.data
Cambiado
NexmoLoginListenerse ha mejorado y actualizado su interfaz:onLoginStateChange()yonAvailabilityChange()eran eliminadoonConnectionStatusChange(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
MemberIdque inició una llamada.
Fijo
Mejoras en las llamadas a aplicaciones multiplataforma
Bloqueo al procesar notificaciones push sin inicialización del SDK
Bloqueo al enviar
markAsDeliveredevento
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
NexmoChannelse añadió aNexmoMember, para exponer los datos del canal cuando exista. La direcciónNexmoChannelEl objeto incluyetoyfromcon los datos del Canal destino y origen.
Cambios de última hora
Eliminado
NexmoMember.ChannelType- debe sustituirse porNexmoMember.Channel.from.typeNexmoMember.ChannelData- debe sustituirse porNexmoMember.Channel.from.data
Cambiado
NexmoLoginListenerse ha mejorado y actualizado su interfaz:onLoginStateChange()yonAvailabilityChange()eran eliminadoonConnectionStatusChange(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
MemberIdque inició una llamada.
Fijo
Mejoras en las llamadas a aplicaciones multiplataforma
Bloqueo al procesar notificaciones push sin inicialización del SDK
Bloqueo al enviar
markAsDeliveredevento
Versión 0.2.67 - 17 de abril de 2019
Añadido
Compatibilidad con emuladores
Fijo
- Errores al actualizar
CallMemberestados