image


indigitall Phonegap/Cordova SDK


Índice

  1. Introducción
    1. Obtención del SDK de Indigitall
      1. Descarga del SDK del servidor de indigitall
    2. Obtención del “App Token” de la aplicación
    3. Obtención del “.cer” y “.p12” de APNS
    4. Obtención del “Sender ID” y “Api Key” de la aplicación
  2. Integración
    1. SDK de Indigitall
    2. Configuración de iOS
    3. Configuración de Android
  3. Uso de la librería
    1. Inicialización de la librería
    2. Funciones disponibles de la librería
    3. Mensajes push
    4. Mensajes push geolocalizadas
      1. Activación del servicio para IOS
      2. Activación del servicio para ANDROID
    5. Servicio de External Apps
      1. Activación del servicio para IOS
      2. Activación del servicio para ANDROID
    6. Recoger DeviceID
    7. Notificaciones con imágenes en iOS 10
    8. Configuración del App Group para iOS
  4. Actualizaciones en la implementación
    1. Cómo actualizar a la versión 4.0 desde versiones anteriores del SDK
  5. F.A.Q
  6. Contacto

1. Introducción

En este documento se muestra toda la información necesaria para realizar la integración del SDK de Indigitall en una aplicación desarrollada con el framework Phonegap para dispositivos con el sistema operativo Android y iOS. En él se muestra todo lo necesario para integrar el SDK en una aplicación ya existente y poder utilizar los servicios que ofrece la plataforma indigitall.

Es importante consultar este manual antes de realizar el desarrollo y seguir todos los pasos que en él se indican para garantizar el correcto funcionamiento de la integración. El documento está dirigido a desarrolladores Phonegap, por lo que se utilizará un lenguaje técnico y se mostrarán ejemplos de código fuente cuando sea necesario.

1.1. Obtención del SDK de Indigitall

El SDK de indigitall se puede obtener e integrar de dos maneras.

  • Del servidor de indigitall: Debemos descargarnos el SDK del servidor de indigitall y añadir al proyecto el archivo descargado indicando su ruta.

  • Del repositorio oficial: No hace falta descargarlo, simplemente se debe añadir al proyecto indicando el nombre indigitall.

1.1.1 Descarga del SDK del servidor de indigitall

El SDK se puede obtener desde el siguiente enlace: SDK de Indigitall para Phonegap

Será necesario poseer un identificador para que la app, en la que se desea integrar el SDK, pueda realizar la comunicación con el entorno de indigitall. Para recibir este identificador el desarrollador deberá proporcionar a Indigitall los datos necesarios para enviar las notificaciones (.cer y .p12) obtenidos de la consola para desarrolladores de Apple en el caso de iOS y (Sender ID y Api Key) obtenidos en de la herramienta GCM (Google Cloud Messaging) o FCM (Firebase Cloud Messaging) de Google en el caso de Android.

1.2. Obtención del “App Token” de la aplicación

Cada aplicación registrada en el Panel de Control de Indigitall dispondrá de un identificador único denominado App Token. Este identificador se utilizará para inicializar el SDK y será el responsable de vincular la aplicación con la plataforma de indigitall, de esta forma indicará a qué aplicación pertenecen las notificaciones que lleguen al dispositivo. El App Token de una aplicación puede ser obtenido desde el Panel de Control de indigitall por un usuario administrador en el apartado de “Detalles” de la aplicación.

1.3. Obtención del “.cer” y “.p12” de APNS

Para poder enviar notificaciones push a dispositivos iOS es necesario poseer unos certificados que permiten la comunicación APNS (Apple Push Notification Service).

Para ellos tendrá que generar los correspondientes certificados (.cer, .p12 y password si tiene) y enviarlos a indigitall.

En el siguiente tutorial se explica cómo conseguir estos certificados.

Obtener certificados “.cer” y “.p12” de APNS.

1.4. Obtención del “Sender ID” y “Api Key” de la aplicación

Anteriormente, para que la aplicación pudiera recibir notificaciones con la herramienta GCM de Google, se necesitaban unos identificadores llamados Sender ID y Api Key. Actualmente, con la nueva herramienta FCM de Google, estos parámetros son llamados “ID del remitente” y “Clave del servidor”, aunque seguiremos llamándolos Sender ID y Api Key para facilitar el trabajo a los usuarios que ya los tengan de GCM.

Estos identificadores se utilizarán en el SDK para conectar la herramienta GCM/FCM de Google con los dispositivos que instalen la aplicación. Puede ver cómo obtenerlos en estos enlaces:

Obtener Sender ID y Api Key en GCM (Google Cloud Messaging).

Obtener Sender ID y Api Key en FCM (Firebase Cloud Messaging).

2. Integración

2.1 SDK de indigitall

La librería de indigitall consiste en plugin de Phonegap (carpeta plugin/) que recoge los SDKs de Android y iOS y los hace útiles para llamarlos desde javascript.

Para integrar el plugin debe ejecutar el siguiente comando en la consola estando en el directorio app/:

  • Si descargó el SDK desde el servidor de indigitall:

    phonegap plugin add {ruta_hasta_el_directorio_plugin}
  • Si descargo el SDK desde el repositorio oficial:

    phonegap plugin add indigitall
    

NOTA: Para eliminar el plugin de la versión 3.2 debe ejecutar el siguiente comando en la consola estando en el directorio app/:

    phonegap plugin remove indigitall

2.2 Configuración de iOS

Para poder usar la librería de indigitall en IOS debe añadir las claves indigitallAppToken, indigitallThirdParty e indigitallAppGroup a el archivo .plist de su proyecto.

Puede hacerlo directamente en el arhivo *-Info.plist de su proyecto o desde Phonegap de la siguiente forma:

<platform name="ios">
    ...
    <config-file parent="indigitallAppToken" target="*-Info.plist">
        <string>YOUR_APP_TOKEN</string>
    </config-file>
    <config-file parent="indigitallThirdParty" target="*-Info.plist">
        <false />
    </config-file>
    <config-file parent="indigitallAppGroup" target="*-Info.plist">
        <string>YOUR_APP_GROUP</string>
    </config-file>
</platform>

2.3 Configuración de Android

  • Archivo google-services.json

Para descargar el archivo de configuración de google-services, debes seguir los siguientes pasos:

  1. Entra en la consola de Firebase y abre tu proyecto.
  2. Presiona en el icono de Ajuste y selecciona la opción "Press in the settings icon and select "Configuración de Proyecto".

    project_configuration

  3. Añade tu app a Firebase. Desde la pestaña "General", presiona el botón que te mostramos en la siguiente imagen:

    add_firebase

  4. Registra la app en Firebase. Debes setear el nombre de paquete de tu app y el certificado de firma SHA-1 (este último es opcional) y presionar en "Registrar app".

    register_app

  5. Descarga el archivo google-services.json:

    download_json

Una vez tengas el archivo google-services.json, debes añadirlo a la carpeta de tu app, como se muestra en la imagen anterior.

Cuando este añadido el archivo google-services.json, es necesario linkarlo en el archivo config.xml que se encuentra en el root del proyecto:

<platform name="android">
       <resource-file src="google-services.json" target="/google-services.json" />
   </platform>
  • Archivo build.gradle del plugin

Para poder usar la librería de indigitall en Android se debe configurar el proyecto para que la versión de compilación de Android que utilice sea la 6.0. Esta incluye las siguientes librerías:

  • Librería de soporte v4 de Android en su versión 26.1.0.
  • Librería de firebase en su versión 15.0.0 (el módulo 'firebase-location').
  • Librería de Google Play Services en su versión 15.0.0 (el módulo ‘location’).
  • Librería Okhttp de Square en su versión 3.6.0
  • Librería Picasso de Square en su versión 2.71828

De forma que el archivo quede configurado con las siguientes librerías:

dependencies {
    implementation 'net.indigitall:pushsdk:4.0.+'

    implementation 'com.android.support:support-v4:26.1.0'
    implementation 'com.google.firebase:firebase-messaging:15.0.0'
    implementation 'com.google.android.gms:play-services-location:15.0.0'
    implementation 'com.squareup.okhttp3:okhttp:3.6.0'
    implementation 'com.squareup.picasso:picasso:2.71828'
}
apply plugin: 'com.google.gms.google-services'

Si su proyecto ya incluye alguna de estas librerías, puede comentar sus respectivas líneas en el archivo build.gradle​ en la ruta del plugin /plugins/src/android/build.gradle para que no den ningún tipo de conflicto

  • Archivo AndroidManifest.xml del proyecto nativo

También deberán añadirse una serie de permisos opcionales en el AndroidManifest.xml del proyecto nativo, si quiere hacerse uso de las pushes geolocalizadas y las pushes de tipo clickToCall:

...
<!-- Optional Permission -->

<!-- Location Permissions-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<!--Phone Permissions-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE"/>
...

Problemas para compilar el proyecto de Android nativo

Para poder compilar el proyecto nativo generado de Android para obtener la .apk es necesario cumplir con los siguientes requisitivos:

  1. Utilizar la version 4.4 de gradle. Para cambiarlo es necesario ir al archivo gradle-wrapper.properties y apuntar la url de distribución a la versión 4.4 de gradle:

    ...
    distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
  2. A su vez será necesario aumentar la versión de las buil tools de gradle 'com.android.tools.build:gradle' a la versión 3.1.3:

    buildscript {
      repositories {
          jcenter()
          maven {
              url "https://maven.google.com"
          }
      }
    
      // Switch the Android Gradle plugin version requirement depending on the
      // installed version of Gradle. This dependency is documented at
      // http://tools.android.com/tech-docs/new-build-system/version-compatibility
      // and https://issues.apache.org/jira/browse/CB-8143
      dependencies {
          classpath 'com.android.tools.build:gradle:3.1.3'
           ...
      }
    }
  3. Esta versión de las tools de gradle utiliza la instrucción implementation en vez de la de compile por lo que será necesaria cambiarla en el build.gradle situado en platforms/android/:

    dependencies {
      implementation fileTree(dir: 'libs', include: '*.jar')
      // SUB-PROJECT DEPENDENCIES START
      implementation project(':CordovaLib')
      implementation "com.google.firebase:firebase-messaging:15.0.0"
      // SUB-PROJECT DEPENDENCIES END
    }

3. Uso de la librería

Para poder utilizar la librería es necesario tener el APP_TOKEN de indigitall para la aplicación y darla de alta en el servicio GCM/FCM de Google para obtener el API_KEY y el SENDER_ID y habilitarla para recibir push en la consola para desarrolladores de Apple para obtener los certificados .cer y .p12.

3.1 Inicialización de la librería

Para inicializar la librería se deberá incluir en el evento deviceready​ el siguiente código:

// Almacenar los iconos en la carpeta drawables del proyecto
var options = {
    senderID: ”YOUR_SENDER_ID”,
    appToken: “YOUR_APP_TOKEN”,
    useExternalApps: false,
    pushIcon: “ic_launcher”,
    smallIcon: “ic_launcher_mono”,
    smallIconColor: “#FF6600”
};

window.plugins.indigitall.init(options);
window.plugins.indigitall.initStats();

Los campos dentro de options deben ser modificados para adaptarse a la aplicación. Son los siguientes:

  • senderID​: senderID de la app obtenido de GCM/FCM. Ver sección correspondiente.
  • appToken​: identificador único de aplicación proporcionado por indigitall.
  • useExternalApps​: establecer a true​ en caso de usar esta funcionalidad.
  • pushIcon​: icono de la aplicación para las notificaciones Android
  • smallIcon​: icono monocromo para notificaciones Android 5.0 o posterior
  • smallIconColor​: color del icono monocromo. Este campo es opcional.

NOTA: Los iconos deberán añadirse a la carpeta /drawable en el caso de Android.

3.2 Funciones disponibles de la librería

Indigitall provee de una serie de métodos para las aplicaciones que hagan uso de la librería. Estos métodos ofrecen funcionalidades que van desde poder suscribirse y manejar Tags hasta operaciones para habilitar o deshabilitar el dispositivo.

Los Tags han de estar previamente creados en el panel para poder listarlos, suscribirse o desinscribirse de ellos.

Los métodos disponibles en la clase indigitall​ son los siguientes:

/**
* Comprueba el estado del dispositivo para saber si recibe o no notificaciones.
*/
isDeviceEnabled​(success:function​, fail:function​);

/**
* Habilita el dispositivo para que le lleguen notificaciones.
*/
enableDevice​(success:function​, fail:function​);

/**
* Desahabilita el dispositivo para que no le lleguen notificaciones.
*/
disableDevice​(success:function​, fail:function​);

/**
* Comprueba si el SDK esta habilitado o no para enviar la localización.
*/
isLocationEnabled(success:function, fail:function);

/**
* Habilita el SDK para enviar la localización.
*/
 enableLocation(function:success, function:fail);

/**
* Deshabilita el SDK para que no envíe la localización.
*/
disableLocation(function:success, function:fail);

/**
* Pide la lista de tags creados en el panel.
*/
fetchAllTags​(success:function​, fail:function​);

/**
* Pide la lista de tags a los que está suscrito el dispositivo.
*/
fetchSubscribedTags​(success:function​, fail:function​);

/**
* Suscribe el dispositivo a una lista de tags.
*/
subscribe​(tag_ids:array​, success:function​, fail:function​);

/**
* Desinscribe el dispositivo a una lista de tags.
*/
unsuscribe​(tag_ids:array​, success:function​, fail:function​);

/**
* Devuelve el identificador único de indigitall por dispositivo.
*/
getDeviceiD​(success:function​, fail:function​);

3.3. Mensajes push

Una vez que hemos realizado todo el proceso de registro e inicialización, la aplicación se encuentra en disposición de recibir los mensajes push, la librería se encargará de tratar los mensajes y mostrar las notificaciones adecuadas. La aplicación tendrá la posibilidad de recoger los datos de los mensajes push cuando se envíen notificaciones de tipo “Abrir App”.

Es necesario controlar cuando la app se va a background, a foreground y cuando está abierta para recoger correctamente las push. Lo mejor es usar los eventos resume​ y pause​.

La forma de recoger estos datos sería de la siguiente forma:

/* Controla cuando la app va a Foreground */
document.addEventListener(‘resume’, function​() {
         window.plugins.indigitall.enterForeground(successCallback, errorCallback);
         window.plugins.indigitall.getUri(function​(data) {
                console.log(“Notificación recibida. Parámetro de indigitall:” + data);
         }, function​() {
                console.log(“Notificación recibida. No pertenece a indigitall”);
         });
}, false);

/* Controla cuando la app va a Background */
document.addEventListener(‘pause’, function​() {
        window.plugins.indigitall.enterBackground(successCallback, errorCallback);
}, false);

/* Controla cuando la app está abierta y llega una push (sólo iOS) */
document.addEventListener(‘foregroundpush’, function​(push) {
        console.log(“Notificación recibida. Parámetro de Indigitall:” + push.data);
}, false);

3.4 Mensajes push geolocalizadas

Para el uso de Geofences y push geolocalizadas es necesario que la aplicación tenga el permiso de localización aprovado por el usuario.

En el caso de Android los permisos se piden cuando el usuario abre por primera vez la aplicación después de instalarla.

En el caso de IOS para dar soporte a todas las versiones de S.O. se han producido cambios a la hora de los pedir permisos como veremos a continuación.

3.4.1 Activación del servicio para IOS

Para poder usar el servicio de Localización es necesario hacer los siguientes cambios en el fichero *-Info.plist del proyecto nativo de IOS:

  • Añadir tres nuevas claves de tipo String con los correspondientes mensajes que serán mostrados al usuario en cada caso:

      Privacy - Location Always Usage Description
      Privacy - Location Always and When In Use Usage Description
      Privacy - Location When In Use Usage Description
    

    El archivo *-Info.plist quedaría de la siguiente manera:

      <platform name="ios">
          ...
          <config-file parent="Privacy - Location Always Usage Description" target="*-Info.plist">
              <string>¿Podemos usar tu localización siempre?</string>
          </config-file>
          <config-file parent="Privacy - Location Always and When In Use Usage Description" target="*-Info.plist">
              <string>¿Podemos usar tu localización siempre?</string>
          </config-file>
          <config-file parent="Privacy - Location When In Use Usage Description" target="*-Info.plist">
              <string>¿Podemos usar tu localización cuando usas la app?</string>
          </config-file>
          ...
      </platform>

3.4.2 Activación del servicio para ANDROID

Para poder usar el servicio de Localización es necesario añadir los siguientes permisos al fichero AndroidManifest.xml del proyecto nativo de Android:

...
<!-- Optional Permission -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
...

3.5 Servicio de External Apps

El servicio de external Apps permite enviar notificaciones en función de si el usuario tiene o no instalada una determinada aplicación. Para ello es necesario que queden definidas en el panel las aplicaciones que se desean comprobar.

3.5.1 Activación del servicio para IOS

Para poder usar el servicio de externalApps es necesario hacer los siguientes cambios en el fichero *-Info.plist:

  • Poner la clave indigitallThirdParty a true. Esta etiqueta permite activar el servicio.

  • Añadir una clave nueva clave LSApplicationQueriesSchemes de tipo Array con los Strings de las app que se quieran chequear en el servicio. Con el array indicamos cuales serán las aplicaciones que deseamos que el usuario tenga instaladas para realizar el envío de pushes. Los strings que queremos

    El archivo *Info.plist quedaría de la siguiente manera si por ejemplo quisieramos chequear como externalApps Facebook:

    <platform name="ios">
        ...
        <config-file parent="indigitallThirdParty" target="*-Info.plist">
            <true />
        </config-file>
        <config-file parent="LSApplicationQueriesSchemes" target="*-Info.plist">
            <array>
                <string>fb</string>
            </array>
        </config-file>
        ...
    </platform>
  • Tener definido en el panel la URL scheme de la aplicación que se desea chequear.

3.5.2 Activación del servicio para ANDROID:

Para poder activar el servicio de externalApps en Android será necesario:

  • Poner el valor del parámetro useExternalApss de la variable options a true en el evento deviceready cuando inicializamos la librería.

      var options = {
        ...
          useExternalApps: true,
        ...
      };
  • Tener definidas en el panel los id de las aplicaciones que se desean chequear.

3.6 Recoger DeviceID

Cuando hablamos de DeviceID, nos referimos al identificador único que la librería de indigitall genera para identificar los dispositivos y poder enviarles mensajes push. Este ejemplo indica cómo recoger este dato para poder trabajar con él.

window.plugins.indigitall.init(options);
window.plugins.indigitall.initStats(function() {
    var deviceID = window.plugins.indigitall.getDeviceId();
    sendToYourBackend(deviceID);
}

3.7. Notificaciones con imágenes en iOS 10

A partir de iOS 10 se mejoran las opciones y el control de las notificaciones. Phonegap aún no ha desarrollado ninguna forma de incluir estas mejoras dentro del framework, por tanto sólo es posible a través de Xcode de forma nativa.

image

Para poder hacer uso de estas mejoras es necesario incluir un nuevo TARGET en el proyecto de iOS llamado Notification Service Extensión.

image

Al añadirlo se deberá configurar algunos datos como el Product Name, Bundle Identifier o Language, estableciendo este último a ObjectiveC. Puede descargar desde AQUÍ los archivos (NotificationService.h, NotificationService.m e Info.plist) que debe contener esta extensión (habrá que sobreescribir los que se crean por defecto).

Como punto importante, para incluir esta extensión, deberá utilizar Xcode 8.1 o superior y habrá que configurar la versión del Deployment Target de la extensión a la 10.0 como mínimo, ya que esta extensión sólo se ejecuta para versiones de iOS 10 o superiores.

3.8 Configuración del App Group para iOS

En esta versión se han introducido una serie de cambios para poder realizar un mejor seguimiento de la recepción y envío de pushes y en consecuencia de las estadísticas. Estos cambios afectan a la configuración del NSE y a las Capabilities de la app:

  1. Cambios en las Capabilities de la app:

    • Crear un App Group para la aplicación desde la consola de Apple del tipo "group.net.MyApp".

    • Activar "App Group" en las Capabilities de la app y seleccionar el group creado en el paso anterior.

    Las Capabilities de la app deben quedar configuradas como se indica a continuación:

    Se deben activar las Capabilities de Push Notifications y de Background Modes, en la cual se seleccionarán Location updates, Background fetch y Remote notifications.

    image

    También se deberá activar la capability App Groups y seleccionar el grupo que haya creado desde la consola de App. Esta capability deberá quedar configurada de la siguiente manera:

    image

  2. Cambios en el NSE:

    • Añadir en las Capabilites del NSE el App Group creado previamente en la consola de Apple y que se añadio también a las Capabilities de la app.

    • Setear el group en la variable groupName del archivo NotificationService.m

  3. Setear el App Group de la aplicación en la variable indigitallAppGroup. Para ello puede hacerse de dos maneras:

    1. En la configuración de Phonegap, en el archivo config.xml de la app:

      <platform name="ios">
      ...
      <config-file parent="indigitallAppGroup" target="*-Info.plist">
          <string>YOUR_APP_GROUP</string>
      </config-file>
      </platform>

      La configuración debe quedar como se indica en el punto 2.2 de la documentación: Configuración de iOS

    2. En el proyecto Nativo de IOS: En la pestaña Info dentro de la sección Custom iOS Target Properties del TARGET del proyecto, como se muestra en la imagen:

      image

4. Actualizaciones en la implementación

4.1 Cómo actualizar a la versión 4.0 desde versiones anteriores del SDK.

Para actualizar el SDK ya no es necesario añadir el binario de forma manual al proyecto nativo de IOS como ocurría en versiones anterior, unicamente es necesario:

  1. Descargarse el SDK del punto de la documentación 1.1: Obtención del SDK de Indigitall

  2. Eliminar el SDK de la versión anterior. Para eliminar el plugin debe ejecutar el siguiente comando en la consola estando en el directorio app/:

    phonegap plugin remove net_indigitall_phonegap
    
  3. Añadir el nuevo SDK. Para añadir el plugin debe ejecutar el siguiente comando en la consola estando en el directorio app/:

    • Si se descargo desde el servidor de indigitall:

      phonegap plugin add {ruta_hasta_el_directorio_plugin}
    • Si se descargo desde el repositorio oficial:

      phonegap plugin add indigitall
  4. Configurar cada uno de los proyectos nativos:

5. F.A.Q

  • Q: No llegan las notificaciones ¿Qué puedo hacer?
  • A: En iOS Busque en logs desde Xcode el siguiente mensaje “Device Token: {identificador}”. Si este mensaje llega es porque el registro de notificaciones se está efectuando correctamente. Si aún así no recibe notificaciones, revise su “App Token” y compruebe que sean correctos. Revise también que los certificados enviados al equipo de indigitall sean correctos. En Android busque en logs desde Android Studio el siguiente mensaje “RegisterService: Device registered”. Si este mensaje llega es porque el registro de notificaciones se está efectuando correctamente. Si aún así no recibe notificaciones, revise su “App Token” y “Sender ID” y compruebe que sean correctos. Algunos dispositivos como Huawei y Xiaomi tienen economizadores de batería que evitan que lleguen correctamente las notificaciones. Si tiene un dispositivo de este tipo, configúrelo para recibir siempre notificaciones y, a poder ser, haga pruebas con la app en primer plano.

  • Q: ¿A qué versiones de Android y iOS da soporte indigitall?
  • A: en iOS la librería de indigitall se compila con deploymentTarget 6, por tanto la versión mínima a la que da soporte es la iOS 6, aunque no recibirá fotos en versiones inferiores a iOS 10 y no recibirá interactivas en versiones inferiores a iOS 8. En Android la librería de indigitall se compila con minSdkVersion 16, por tanto la versión mínima de Android a la que da soporte es Jelly Bean (Android 4.1).

  • Q: La imagen me llega pequeña, ¿hay forma de arreglar esto?
  • A: En iOS las notificaciones con foto en iOS 10 se muestran como un cuadrado pequeño abajo a la derecha en dispositivos anteriores a iPhone 6. En cambio para iPhone 6 y posteriores la imagen puede verse en grande dándole a la opción “Ver” o con una pulsación profunda si el dispositivo dispone de 3D Touch. En Android las notificaciones de indigitall pueden incluir dos imágenes, una imagen pequeña y cuadrada en el espacio del icono y una imágen grande panorámica debajo del cuerpo de la notificación. Las imágenes grandes sólo aparecen en las notificaciones de tipo foto. Revisar que, al crear el mensaje en el panel, la imágen se establece en su correspondiente campo y no en el del icono de la notificación.

  • Q: En Android veo un icono cuadrado en la barra de estado del dispositivo ¿por qué?
  • A: Desde Android 5.0 (Lollipop) el sistema utiliza un icono monocromo para representar las notificaciones de la aplicación en la barra de estado. Si este icono no se ha establecido manualmente, cogerá el icono por defecto de la aplicación, rellenándolo de color blanco y respetando únicamente las transparencias de éste. La librería de indigitall permite configurar a gusto los iconos de las notificaciones pasándolos como parámetros al inicializarla. Ver sección Inicialización de la librería.

  • Q: No me llegan las notificaciones Geolocalizadas ¿cómo puedo arreglarlo?
  • A: En iOS revise que tiene habilitada la geolocalización en el dispositivo y los permisos concedidos. Abra la app y busque en Xcode los logs correspondientes a “INDIGITALL_LOCATION”, en ellos podrá ver cómo cambia la localización y si esta es significativa. Hablamos de cambios significativos en la localización cuando el dispositivo se mueve más de 500 m (Apple estipula que esta es una distancia significativa) de la última posición conocida. En Android revise que tiene habilitada la geolocalización en el dispositivo y los permisos concedidos (en caso de ser Android 6.0 o superior). Abra la app y busque los logs correspondientes a “LocationManager” e “indigitallService”, en ellos podrá ver cómo cambia la localización y si esta es significativa. Hablamos de cambios significativos en la localización cuando el dispositivo se mueve más de 100 m de la última posición conocida. Este servicio se ejecuta cada 20 min por defecto, siendo posible modificar el tiempo en el panel de indigitall.

  • Q: Mis notificaciones no se posicionan las primeras ¿Cómo hago que esto ocurra?
  • A: En iOS las notificaciones son gestionadas por el Sistema Operativo y no se puede establecer una prioridad para ellas. De esta forma, la notificación que llegue última será la que aparezca más arriba en el listado de notificaciones. En Android las notificaciones de indigitall tienen la máxima prioridad que Android permite, las únicas notificaciones que pueden aparecer por encima son las que tengan la misma prioridad. En estos casos la notificación que llegue última será la que aparezca más arriba en el listado de notificaciones si ambas tienen la misma prioridad.

  • Q: ¿Cómo hago pruebas en desarrollo sin afectar a los usuarios de producción?
  • A: Los “App Token” de la aplicación de desarrollo y la de producción son distintos, esto es así para evitar que puedan llegarle a usuarios de producción notificaciones creadas en desarrollo. Por este motivo las pruebas en desarrollo no conllevan ningún riesgo. Aun así, siempre puede filtrar en el panel de indigitall por DeviceID creando y subiendo un .csv que contenga los identificadores de los dispositivos a los que quiere que llegue la notificación.

  • Q: ¿Cómo hago pruebas en producción sin afectar a los usuarios?
  • A: Las pruebas en producción son muy sensibles, ya que cometer un fallo aquí puede hacer que nuestra notificación llegue a usuarios reales. Por este motivo aconsejamos que a la hora de hacer pruebas en producción se hagan envíos geolocalizados o que se filtre por DeviceID como se explica en el caso anterior.

6. Contacto

En indigitall estamos encantados de ayudarle con cualquier duda o problema que le surja al integrar nuestra solución. Para contactar con nosotros puede escribirnos a soporte@indigitall.net​. Nos pondremos en contacto con usted lo antes posible.