Esta web ya no recibe mantenimiento. Por favor, visita documentation.indigitall.com para leer nuestra documentación actualizada.

SDK de Cordova

guía avanzada para configurar el SDK de Cordova

Indice

1. Propiedades configurables

En esta sección encontrarás una serie de funcionalidades más avanzadas y que requieren de un desarrollo más complejo. Aconsejamos que sea un desarrollador el encargado de esta configuración.

1.1. Activar las notificaciones geolocalizadas

El SDK de indigitall puede gestionar la localización del usuario. Esto te permite usar los filtros de localización en la pantalla de enviar campaña push (Campañas>Push>Nueva campaña push>Filtros>Filtros geográficos)


Location path on console

Una vez hayamos habilitado esta funcionalidad, el usuario final tendrá que dar su consentimiento al permiso de localización y habilitar los servicios de localización de su smartphone, para que la aplicación obtenga la ubicación exacta del usuario.


Incluir el parámetro requestLocation a tu inicialización.


...

window.plugins.indigitall.init({ appKey: "<YOUR_APP_KEY>", senderId: "<YOUR_SENDER_ID>", requestLocation: true });

...

1.2. Asociar el dispositivo a un usuario

Puedes asociar tu propio ID a cada dispositivo. De esta forma te será más sencillo e intuitivo trabajar con nuestra herramienta. Por ejemplo:

  • Si tus usuarios se han identificado, podrías usar tu ID de usuario, o el email, o cualquier otro dato con el que estés acostumbrado a trabajar.
  • Si tus usuarios son anónimos porque no se han logado en la app, quizá dispongas de un sistema de métricas tipo Google Analytics o Commscore. Podrías usar el ID proporcionado por estas herramientas.


Para realizar esta asociación entre tu ID personalizado (externalId), y el identificador que maneja indigitall (deviceId), hay que invocar el método setExternalCode:


window.plugins.indigitall.setExternalCode({externalCode: "YOUR_EXTERNAL_ID"}, (device) => {
            //DO SOMETHING
        },(error) => {
            //LOG ERROR
        });


No te preocupes por nada. Tus IDs se cifran de forma irreversible en el propio teléfono y se mandan de forma segura a nuestros servidores. Ni siquiera el equipo de indigitall puede conocer esta información.

1.3. Filtro WiFi

Si se requiere recoger la información de la WiFi del usuario, además de la configuración del panel de Indigitall, deberás añadir el parámetro wifiFilterEnabled cuando se inicialice el SDK:


window.plugins.indigitall.init({
  appKey: "<YOUR_APP_KEY>",
  senderId: "<YOUR_SENDER_ID>",
  wifiFilterEnabled: true
});


  • El permiso de localización debe ser aceptado por el usuario

  • Tenga en cuenta que el tiempo de escaneo de la WiFi cuando la aplicación está en segundo plano o cerrada puede ser inexacto.

1.3.1 Permisos Android

Para poder obtener la información de la wifi en adroid se necesitan los siguientes permisos y servicios declarados en el manifest:



  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>

  <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

  // ANDROID 12 WIFI
  <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

//Servicio WiFi
<service
    android:name="com.indigitall.android.services.WifiStatusService"
    android:permission="android.permission.BIND_JOB_SERVICE" >
</service>

<receiver android:name="com.indigitall.android.receivers.WifiWakeLockReceiver">
    <intent-filter>
        <action android:name="AlarmReceiver.Action.NETWORK_ALARM" />
    </intent-filter>
</receiver>

1.3.2 Permisos iOS

Así mismo, deberás añadir en las opciones del proyecto en Xcode, en Signing & Capabilities la opción Access WiFi Information:


Access WiFi Information


1.4. Dominio personalizado

Si eres CLIENTE ENTERPRISE tienes que añadir este parámetro en la configuración para que la SDK apunte al entorno correcto:


window.plugins.indigitall.init({ 
    appKey: "YOUR_APPKEY", 
    ...
    urlDeviceApi: "YOUR_DEVICE_API_DOMAIN",
    urlInAppApi: "YOUR_INAPP_API_DOMAIN",
    urlInboxApi: "YOUR_INBOX_API_DOMAIN",}


2. Callbacks que ofrece el SDK

Nuestro SDK ofrece diversos callbacks que te ayudan tener mayor control del flujo de ejecución y a implementar comportamientos personalizados.


window.plugins.indigitall.init({ appKey: "YOUR_APPKEY", senderId: "YOUR_SENDER_ID", requestLocation: true }, (device)=> {
            //LOG device
        }, (errorMessage)=>{
            //LOG ERROR
        });


 2.1. SDK inicializado


El objeto device que devuelve el callback se ejecutará cuando el dispositivo ha sido registrado por primera vez, es decir, en la primera ejecución de la app tras ser instalada. y cuando el SDK termine de inicializarse y el dispositivo esté preparado para recibir notificaciones de indigitall.


Recibe como parámetro el objeto Device con la información asociada al dispositivo.


window.plugins.indigitall.init({ appKey: "YOUR_APPKEY", senderId: "YOUR_SENDER_ID", requestLocation: true }, (device)=> {
            console.log("Device: ", Object.values(device));
        });

 2.2. Se ha producido un error

El método de error se ejecutará sólo si se produce un error durante la inicialización del SDK.


Recibe como parámetro la descripción del error.


window.plugins.indigitall.init({ appKey: "YOUR_APPKEY", senderId: "YOUR_SENDER_ID", requestLocation: true }, (device)=> {
            //LOG device
        }, (errorMessage)=>{
            console.log("Error: ", errorMessage;
        });

3. Administrar dispositivo

Esta sección describe las diferentes acciones que se podrían realizar en un dispositivo indigitall. El modelo de dispositivo tendría esta estructura:


device = {
  deviceId: "string",
  pushToken: "string",
  browserPublicKey: "string",
  browserPrivateKey: "string",
  platform: "string",
  version: "string",
  productName: "string",
  productVersion: "string",
  browserName: "string",
  browserVersion: "string",
  osName: "string",
  osVersion: "string",
  deviceType: "string",
  enabled: "boolean",
  externalCode: "string"
};

3.1. Consultar información y estado del dispositivo

Retorna un DeviceCallback si la operación es satisfactoria devuelve un objeto Device.


window.plugins.indigitall.deviceGet((device) => {
  // Do something with device in success function
}, (error) => {
  // Do something in error function
});

3.2. Habilitar / deshabilitar el dispositivo

Puedes elegir deshabilitar el dispositivo para bloquear la recepción de notificaciones. Es un método muy útil para:

  • Implementar una pantalla de preferencias para que el usuario pueda habilitar / deshabilitar la recepción de notificaciones.
  • Evitar la recepción de notificaciones si el usuario no se ha logado, o no ha aceptado los términos de uso, etc.
  • Gestionar la Lista Robinson.


Para ello, dispones de los métodos deviceEnable y deviceDisable.


Debes instanciar un onjeto DeviceCallback y pasarlo como segundo parámetro. Este callback recibirá como parámetro el objeto device que contiene toda la información asociada al dispositivo.


window.plugin.indigitall.deviceEnable((device) => {
  // Do something with device in success function
}, (error) => {
  // Do something in error function
});

window.plugin.indigitall.deviceDisable((device) => {
  // Do something with device in success function
}, (error) => {
  // Do something in error function
});

4. Grupos de interés

Nuestro SDK te permite clasificar a los usuarios en diferentes grupos personalizables. Esto es muy útil para:

  • Implementar una pantalla de preferencias para que el usuario pueda elegir los temas para los que quiere recibir notificaciones.
  • Etiquetar según la navegación o acciones que realice el usuario.
  • Segmentar las comunicaciones según si el usuario se ha identificado o es anónimo.
  • Segmentar en base al idioma, cultura, categoría de cliente, o en base a cualquier otro criterio que necesites.


Recuerda que primero debes definir los grupos con los que quieres trabajar en la consola de indigitall (Herramientas > Grupos de interés). Consulta nuestro manual de usuario para más info.

4.1. Listar grupos

Usa el método topicsList para obtener la lista de grupos que están configurados en tu proyecto de indigitall. El callback de este método recibe como parámetro un array de Topics, que contiene la información de todos los grupos disponibles, además de un flag que indica si el usuario está incluido en alguno de ellos.


window.plugin.indigitall.topicsList((topics) => {
  // Do something with topics in success function
}, (error) => {
  // Do something in error function
});

4.2. Gestionar suscripción

Para gestionar la suscripción del dispositivo a uno o varios grupos, existen dos métodos: topicsSubscribe y topicsUnsubscribe.

Opcionalmente ambos reciben un objeto TopicsCallback como tercer parámetro, que devolverá el listado de todos los Topic del proyecto.


// topics is typeof String[]
window.plugin.indigitall.topicsSubscribe(topics, (topics) => {
  // Do something with topics in success function
}, (error) => {
  // Do something in error function
});

// topics is typeof String[]
window.plugin.indigitall.topicsUnsubscribe(topics, (topics) => {
  // Do something with topics in success function
}, (error) => {
  // Do something in error function
});

5. Enviar eventos personalizados

Tu app puede mandar información a los servidores de indigitall para identificar las acciones y eventos que suceden en ella. Esto te permite automatizar acciones de retargeting.


Para registrar estos eventos hay que llamar al método sendCustomEvent, pasando como parámetro un ID descriptivo (puedes inventarte el que más te guste) y añadir los datos que necesites en un objeto JSON.


window.plugins.indigitall.sendCustomEvent({event: "YOUR_CUSTOM_EVENT", customData:{}, () => {
    // Do something in success function
},(error) => {
    // Do something in error function
});

6. Mensajes In-App

Si quieres integrar los mensajes In-App en tu aplicación, puedes hacerlo con varios formatos complementarios:

  • Banner. Contenido estático que está siempre visible, pero permite al usuario seguir utilizando la aplicación.
  • Popup. Contenido a pantalla completa que obliga al usuario a pulsar o descartar la información.

6.1. Formato banner

A continuación te contamos como instanciar uno o varios mensajes In-App en formato banner.

Recuerda que primero deberías tenerlos definidos en la consola de indigitall. Consulta nuestro manual de usuario para más info.

6.1.1. Un único banner

Crea un div en su página. El tamaño debe coincidir con el que hayas definido en la consola de indigitall (Herramientas > Esquemas In-App/In-Web).


<div id="divView" style="width:1250px; height:285px;"></div>


  • si se asigna un ancho y un tamaño de altura diferente al que hayamos definido en la consola es probable que la InApp no se muestre correctamente.


Una vez que se haya creado el código para mostrar la InApp, hay que instanciarla y llamarla en el método showInApp que podemos ver más abajo. Hay que pasarle como parámetros el código de la InApp, el id del div anterior, el appKey de la aplicación y deviceId del dispositivo y el callback oportuno para obtener la vista y el código. Este callback nos indicará si se ha cargado correctamente o no y en relación a este resultado haremos una acción u otra.

  • Para clientes ENTERPRISE hay que añadir la url para el inAppApi como parámetro:


Un ejemplo de código está aquí

window.plugins.indigitall.showInApp({
        divId: "divView_code",
        schemeId: "divView",
        appKey: appKey,
        deviceID: deviceId,
        urlInAppApi: "YOUR_INAPP_API_URL" //Cliente Enterprise
    }, (inApp, webView, showTime)=>{
        //onShowTimeFinished
    }, (inApp, webView, error)=>{
        //didExpired
    }, (inApp, webView, error)=>{
        //didShowMoreT
    }, (inApp, webView, error)=>{
        //didClickOut
    }, (inApp, webView, error)=>{
        //dismissForecer
    }, (inAppCode, webView) => {
        // Success DO SOMETHING
    }, (inAppCode, webView, message) => {
        // Log error message
    });

6.1.2. Múltiples banner

Si queremos tener varias InApp para ser mostradas en el flujo de los usuarios hay que seguir los siguientes pasos.


Para ello, en primer lugar se debe crear cada vista div en su página. Cada una de ellas debe tener asignado el mismo tamaño que se creó en InApp/inWeb Schemes de nuestra consola de indigitall.


Tal que así:


  <div id="divView" style="width:1250px; height:285px;"></div>
  <div id="divViewTwo" style="width:980px; height:150px;" ></div>
  <div id="divViewThree" style="width:150px; height:950px;"></div>
...


Una vez que se han creado todos las vistas, hay que instanciarlos mediante el método showMultipleInApp. Antes de llegar a esta llamada hay que crear un par de arrays. El primero de ellos es la lista de los código InApp mientras que el segundo contendrá los identificadores de los div donde aparecerán las InApp. Cuando se llame al método showMultipleInApp hay que pasarle la lista con los identificadores, la lista con los div y además un callback que será el encargado de indicarnos si la operación ha sido satisfactoria o por el contratio ha ocurrido un error.


let inAppCodeList = [];
inAppCodeList.push("divView_code");
inAppCodeList.push("divView_code_two");
inAppCodeList.push("divView_code_three");
...

let divList = [];
divList.push("divView");
divList.push("divViewTwo");
divList.push("divViewThree");
...

window.plugins.indigitall.showMultipleInApp({
      divId: divList,
      schemeId: inAppCodeList,
      appKey: appKey,
      deviceID: deviceId
  }, (inApp, webView, showTime)=>{
        //onShowTimeFinished
    }, (inApp, webView, error)=>{
        //didExpired
    }, (inApp, webView, error)=>{
        //didShowMoreT
    }, (inApp, webView, error)=>{
        //didClickOut
    }, (inApp, webView, error)=>{
        //dismissForecer
    }, (inAppCode, webView) => {
        // Success DO SOMETHING
    }, (inAppCode, webView, message) => {
        // Log error message
    });

6.2. Formato PopUp

Podría darse el caso que se quisiera mostrar una InApp con un PopUp.


Afortunadamente, en Javascript, para crear una InApp como un PopUp no es necesario un nuevo procedimiento para crearlo. Se puede seguir la misma actuación que para mostrar una única InApp.

6.3. Utilidades del InApp

En el caso de que quieras mostrar el esquema InApp de diferente manera a como lo pinta nuestra SDK, ponemos a tu disposición unos métodos para que podáis customizar el "pintado", sin que se vean afectadas ni las estadísticas ni las funcionalidades del InApp.

Recogida del objeto InApp


window.plugins.indigitall.getInApp(inAppId, (inApp) => {
  //Do something
});

Comprobación si debería mostrarse el InApp

Gracias a las funcionalidades de InApp se puede indicar que el inApp se muestre o se pulse un número de veces máximo, o si en el caso del popUp, tras realizar una acción, como pulsar al botón cerrar, no se vuelva a mostrar. Para ello podríamos hacer lo siguiente dentro del método inAppGet que hemos visto anteriormente:

window.plugins.indigitall.getInApp(inAppId, (inApp) => {
    window.plugins.indigitall.inAppWasShown(inApp,(inApp, divId, error) => {
      //didExpired
    }, (inApp, divId, error) => {
      //didShowMore
    }, (inApp, divId, error) => {
      //didClickOut
    }, (inApp, divId, error) => {
      //dismissForever
    }, (inApp, divId) => {
      //Show InApp
    }, (inApp, divId, error) => {
      //log error
    });
});

Acciones para contabilizar clicks o para no mostrar InApp nunca más

Para el caso de lo que llamamos Dismiss Forever, una vez que se realiza la acción, se debe llamar a este método:


window.plugins.indigitall.addNewInAppToDismissForever(inApp, () => {
  //success
}, (errorMessage) => {
  //error
});

En el caso de que se quiera mostrar un inApp sólo si hace 'x' clicks o pulsaciones sobre él hay que añadir lo siguiente:

window.plugins.indigitall.addNewInAppClick({inApp:inApp, deviceId: deviceID, appKey: appKey}), () => {
  //success
}, (errorMessage) => {
  //error
});


7. Recogida de los datos de la push

En el caso de que se mande una push silenciosa, o quieras recoger los datos de la push antes de ser pulsada, hay que añadir el siguiente método, que te devolverá un remoteMessage en formato json.

  window.plugins.indigitall.onMessageReceived(data => {
      //do something
  },(error)=>{
    //log error
  });

Para diferenciar si la push es de indigitall o no, puedes usar este método, pasando data obtenido en el método anterior:


  window.plugins.indigitall.isIndigitallPushNotification(data,()=>{
     //do something
  }, (error)=>{
      //log error
  });

Si quieres recoger el token, añade el siguiente método:

        window.plugins.indigitall.getToken(token => {
            //do something
        },(error)=>{
          //log error
        });

En el caso de que quisieras obtener el objeto push de tipo json para realizar comprobaciones y/o cuando el usuario haga click en la notificación y sea con la acción de abrir app. El modelo de dispositivo tendría esta estructura:


push = {
  id: "int", 
    appKey: "string",
    title: "string",
    body: "string",
    icon: "string",
    image: "string",
    gif: "string",
    video: "string",
    action: {
          topics: ["string"],
          destroy: "boolean",
          type: "app | url | call | market | share",
          app: "string",
          url: "string",
          call: "string",
          market: "string",
          share: "string"
            }
    buttons: [{
          label:"string",
          action: {
                topics: ["string"],
                destroy: "boolean",
                type: "app | url | call | market | share",
                app: "string",
                url: "string",
                call: "string",
                market: "string",
                share: "string"
                  }
              }]
    data: "string",
    layout: "Layout",
    securedData: "string"
};


Te dejamos este código que ayudará a su obtención:


window.plugins.indigitall.getPush(push => {
    //DO SOMETHING
    },(error)=>{
      // Do something in error function
    });

8. Inbox

8.1. Configuración Inbox

En esta sección encontrarás una serie de funcionalidades más avanzadas y que requieren de un desarrollo más complejo. Aconsejamos que sea un desarrollador el encargado de esta configuración.


A continuación dejamos indicado los modelos de los objetos que se usan:



Inbox = {
    lastAccess: "string",
    count: "int",
    pageSize: "int",
    numPage: "int",
    notifications: [InboxNotifications],
    newNotifications: [InboxNotifications]
}

InboxNotifications = {
    id: "string",
    sentAt: "string",
    status: "String",
    sendingId: "int",
    campaignId: "string",
    message: Push
}

InboxCounter = {
    click: "int",
    sent: "int",
    deleted: "int",
    unread:{
        lastAccess: "string",
        count: "int"
    }

}

8.1.1. Identificación de usuarios

Para poder obtener las notificaciones del Inbox de Indigitall, el usuario debe identificarse. Primero hay que inicializar la SDK de Indigitall para que genere nuestro identificador (deviceId) y poder asociarlo al ID personalizado que asocies a dispositivo, similar a como se explica aquí.


Para realizar las tareas de registro, se usan estos dos métodos:


//Identificación de usuario
window.plugins.indigitall.logIn("YOUR_ID",(device)=>{
                //DO SOMETHING  
            }, (error)=>{
                //LOG ERROR 
            });

window.plugins.indigitall.logOut(device=>{
                //DO SOMETHING  
            }, (error)=>{
                //LOG ERROR 
            });

8.1.2. Generar token de autentificación

En esta sección verás cómo se genera un token de validación para una aplicación que tenga configurado una autentificación con webhook. Para generar dicho token, se necesita añadir el JSON con la configuración.

8.1.2.1 Android

El token tiene una fecha predeterminada de caducidad, una vez caducado en nuestro sistema, se lanzará un evento listener de tipo InboxAuthListener que indicará dicha caducidad y tendrá que devolvernos el JSON de configuración. Para recoger el listener, hay que implementarlo en la clase correspondiente, y sobreescribir el siguiente método:



public class MainActivity extends CordovaActivity implements InboxAuthListener{

@Override
public JSONObject getAuthConfig() {
    return MY_JSON;
}

8.1.2.2 iOS

El token tiene una fecha predeterminada de caducidad, una vez caducado en nuestro sistema, se lanzará un evento de tipo 'Protocol', que indicará dicha caducidad y tendrá que devolvernos el JSON de configuración. Para recoger el evento, hay que implementarlo en la clase correspondiente, y sobreescribir el siguiente método:


class YOURCLASS: GetAuthConfig

func getAuthConfig() -> [AnyHashable : Any] {
        ...
        return YOUR_JSON
    }
@interface MainInboxProtocol: NSObject<GetAuthConfig>
@end

@implementation MainInboxProtocol

- (NSDictionary *)getAuthConfig{
    return YOUR_JSON;
}
@end

8.2. Funcionalidades principales del Inbox

Una vez hecho el registro del dispositivo correctamente, se puede empezar a realizar las peticiones del Inbox. Hay que tener en cuenta las siguientes características del Inbox, que opcionalmente son configurables.

8.2.1. Propiedades del Inbox

Las notificaciones del Inbox tendrán los siguiente estados de la clase InboxStatus:


  • Sent o enviado: la notificación se ha enviado al cliente, la ha podido leer o no.
  • Click: han pulsado sobre la notificación mostrada en el Inbox.
  • Delete o borrado: se ha borrado por parte del cliente la notificación del Inbox.


Cada notificación vendrá asignada con un sendingId entero y único, para poder diferenciarlos y usarlos para algunas de las funcionalidades.

8.2.2. Obtener las notificaciones

Como se ha explicado anteriormente, para obtener las notificaciones se usa el siguiente método:


window.plugins.indigitall.inbox.getInbox(inbox=>{
    //DO SOMETHING
},(error)=>{
    //LOG ERROR
});
8.2.2.1 Siguiente página

Una vez obtenido el objeto Inbox, podemos pedir la siguiente página, que se realizada con el siguiente método:


window.plugins.indigitall.inbox.getNextPage(inbox=>{
         //DO SOMETHING
    },(error)=>{
         //LOG ERROR
    });


Ten en cuenta que el callback del Inbox a parte de devolver el Inbox actualizado, devuelve un array que se llama newNotifications, en el que se irán las nuevas notificaciones que añadir al Inbox, para que, en caso de ser necesario, poder utilizar dicho array para moverte entre las páginas sin depender de las llamadas al Inbox.

8.2.3. Obtener la información de una notificación

Para obtener la información de una notificación en particular, hay que hacer la siguiente llamada con el sendingId de cada notificación:


window.plugins.indigitall.inbox.getInfoFromNotificationWithSendingId({sendingId:SENDING_ID},inboxNotification=>{
        //DO SOMETHING
},(error)=>{
        //LOG ERROR
});

8.2.4. Editar el estado de una o más notificaciones

Para editar el estado de una o más notificaciones a la vez, se realiza con el siguiente método en el que se deben indicar los sendingIds de las notificaciones a editar y el estado al que se quiere cambiar:

//Modificar una notificación
window.plugins.indigitall.inbox.modifyStatusFromNotificationWithSendingId({sendingId:SENDING_ID, status:STATUS},inboxNotification=>{
    //DO SOMETHING  
},(error)=>{
    //LOG ERROR
});

//Modificar masivamente
window.plugins.indigitall.inbox.massiveEditNotificationsWithSendingIdsList({sendingIdList:[SENDING_IDS],status:STATUS}, ()=>{
    //DO SOMETHING
},(error)=>{
    //LOG ERROR
});

8.2.5. Contadores de estado de las notificaciones

Para saber el número de notificaciones que hay en el Inbox según su estado, se reliza este método:

window.plugins.indigitall.inbox.getMessageCount((counters)=>{
    //DO SOMETHING
},(error)=>{
    //LOG ERROR
});

9. Changelog

[2.15.0] - 04/2022

Añadido

  • Recoger datos de la push cuando la recibes

[2.14.0] - 03/2022

Añadido

  • Borrar las librerías de HMS para evitar problema de publicación en Play Store

[2.13.1] - 01/2022

Correcciones

  • Añadir método inAppWasShown

[2.13.0] - 01/2022

Añadido

  • InApp Dismiss Forever
  • Utilidades del InApp (numberOfClicks, numberOfShows)
  • Event custom para iurny
  • Interruption level iOS

[2.12.1] - 11/2021

Correcciones

  • Cambiar apply plugin de servicios google del build extra gradle

[2.12.0] - 10/2021

Añadido

  • Campo categoría en las notificaciones del Inbox

[2.11.1] - 10/2021

Correcciones

  • Device enable/disable

[2.11.0] - 10/2021

Añadido

  • Compatibilidad con Android 12
  • Customer Service

[2.10.0] - 09/2021

Añadido

  • Contador de clicks en inApp

[2.9.0] - 07/2021

Añadido

  • Actualizar librerías de Huawei, android e iOs nativas.

[2.8.0] - 05/2021

Añadido

  • Nuevo método para enviar evento personalizados con datos

    Correciones

  • Recogida de datos de los dispositivos

[2.7.0] - 05/2021

Añadido

  • Ocultar inApp transcurrido un tiempo configurado en consola
  • PopUp bordes redondeados

[2.6.0] - 04/2021

Añadido

  • InApp acción abrir app
  • Mostrar InApp un número de veces definido en consola

[2.5.5] - 02/2021

Correciones

  • Mejorar implementación librería
  • Corregir push cifrada

[2.5.4] - 01/2021

Correciones

  • Mostrar correctamente el body en android 6.0 e inferiores

[2.5.3] - 12/2020

Correciones

  • Añadir URL de nube privada

[2.5.2] - 12/2020

Correciones

  • Estabilidad en solicitudes
  • Actualizar UIWebView (Deprecado) por WKWebView

[2.5.1] - 11/2020

Correciones

  • Correción en instalación de plugin

[2.5.0] - 11/2020

Añadido

  • Push persistente

[2.4.5] - 11/2020

Correciones

  • Controlar si objeto vacío de la push enviado vía API

[2.4.4] - 11/2020

Correciones

  • Petición en iOS de wifi en background

[2.4.3] - 11/2020

Correciones

  • Callback de error del popUp

[2.4.2] - 10/2020

Correciones

  • iOS: recoger datos de la push estando la app en segundo plano

[2.4.1] - 09/2020

Correciones

  • Imagen en las push en dispositivos Huawei

[2.4.0] - 08/2020

Añadido

  • Inbox
  • Push con datos cifrados

[2.3.0] - 07/2020

Añadido

  • Integración de localización con Harmony

[2.2.0] - 06/2020

Añadido

  • Integración con Harmony (Huawei Mobile Services)
  • Acción Wallet
  • Notificaciones nativa.

[2.1.0] - 04/2020

Añadido

  • Personalizar icono de popup
  • Wifi filter

[2.0.3] - 04/2020

Añadido

  • Actualizar android

Correcciones

  • Event visit

[2.0.2] - 04/2020

Correcciones

  • Callback topicList
  • Métodos externalCode y CustomEvent
  • Subscripción a topics con INtopic y strings

[2.0.1] - 03/2020

Añadido

  • Actualizar métodos delegate iOS

[2.0.0] - 03/2020

Añadido

  • Recogida de push
  • InApp

Correcciones

  • Custom Event
  • Permisos localización