{{indexmenu_n>1}} ====== Configuración de un servidor de réplica con PUSH ====== \\ Por el momento, las plataformas que tienen implementado PUSH en los dispositivos son Android e IOS.\\ \\ En los dispositivos la única configuración es para Android en el fichero license.ini, en el cual hay que poner 3 claves:\\ \\ |**UsePush=true**.| |**ShowNotify=true o false**. (Para desactivar las notificaciones en la barra de notificaciones del dispositivo).| |**GooglePushSenderID=NUMERO_QUE_SE_OBTIENE_EN_LA_CONSOLA_DE_DESARROLLADOR_DE_GOOGLE**. (Ver más abajo cómo obtenerlo).| \\ Usar PUSH no impide que el dispositivo se conecte de vez en cuando al server para replicar tal y como lo hace cuando no hay PUSH configurado.\\ \\ Toda la configuración que se define a continuación tiene lugar en la parte server. \\ ===== Tablas y Campos Necesarios ===== \\ ==== Master_Replica_SLAVE ==== \\ ^ Campo ^ Descripción ^ | **PUSH** | Texto (30 caracteres). En este campo se indica qué conector de PUSH usa el MID en cuestión. Posibles Valores: * "**apple**": Proveedor de PUSH para Apple iOS ó similar. * "**blackberry**": Proveedor de PUSH para Blackberry (BES o BIS). * "**android**": Proveedor de PUSH para Google Android. * "**ip**": Proveedor de PUSH para “listener” en el dispositivo. | \\ ==== Master_Replica_CMDLOG ==== \\ En esta tabla no se configura **NADA**, únicamente HAY QUE CREAR LOS CAMPOS y éstos se rellenan automáticamente.\\ \\ ^ Campo ^ Descripción ^ | **PUSH** |Texto. Contiene la fecha y hora en que se envió la última notificación PUSH a este cliente. | | **PID** |Texto (300 caracteres). Contiene el TOKEN enviado por los dispositivos cuando se registran en el proveedor de PUSH. Este es el elemento de identificación que se emplea a la hora de enviarles una notificación.| \\ ===== REPLICATOR.INI ===== \\ Las claves aquí definidas son CamelCase, respetando mayúsculas y minúsculas. El archivo de configuración “replicator.ini” empleado por el servidor para gestionar las bases de datos de réplica, necesita una serie de cadenas de configuración dependiendo del tipo de proveedor que se quiera configurar. Las cadenas por proveedor se describen a continuación:\\ \\ ^ Clave ^ Valor / Descripción ^ | **EnableSelectivePush** |**Obligatorio, true o false**. Para especificar si vamos a utilizar o no el sistema PUSH SELECTIVO.| | **PushThreshold** |**Obligatorio, numérico**. Mínimo número de operaciones de réplica que debe haber para que nos notifique.| | **PushInterval** |**Obligatorio, numérico**. Tiempo en segundos para que vuelva a chequear de nuevo si hay operaciones de réplica.| | **PushNotifyOnce ** |**Obligatorio, true o false**. Poner a true para que nos envíe una única notificación hasta que repliquemos las actuales operaciones, evitando que nos esté notificando continuamente.| \\ PushThreshold: **1**\\ PushInterval: **5**\\ PushNotifyOnce: **true**\\ \\ En las líneas anteriores especificamos que cuando haya una operación ya nos notifique, que vuelva a chequear cada 5 segundos y que solo nos envíe otra notificación cuando repliquemos las que tenemos pendientes.\\ \\ ==== ANDROID ==== \\ ^ Clave ^ Valor / Descripción ^ | **GoogleAuthKey** |**Obligatorio**. Una cadena en Base64 suministrada por el proveedor PUSH de Google. Se puede emplear la misma para todas las aplicaciones con réplica.| | **GoogleSenderId** |**Obligatorio**. Una cadena en Base64 suministrada por el proveedor. En principio debería haber una diferente para cada aplicación, aunque dependiendo de la cantidad de terminales se puede usar la misma **siempre que no se excedan los mínimos indicados por Google**.| \\ === Instrucciones para obtener los valores === \\ Para obtener los valores de **googleauthkey** y **googlesenderid**, hemos de irnos a la consola de Google Firebase, ni que decir tiene que debemos tener una cuenta de google para poder utilizar estos servicios. Podemos obtener más información en los siguientes enlaces: \\ ^ Página ^ Descripción ^ | https://firebase.google.com/docs/cloud-messaging/ |Información de todo lo relacionado con el módulo CLOUD MESSAGING de firebase | | https://console.firebase.google.com/u/0/ |En esta página tendremos acceso a la consola de firebase y podremos activar ó desactivar los diferentes servicios que Google pone a nuestra disposición.| \\ ^ 1.- Entrar en la página de la consola de APIs de Google Firebase: https://console.firebase.google.com y loguearnos con la cuenta de google. ^ | {{ :replica:push:1-nuevo_proyecto_firebase.png?nolink&650 }} | \\ ^ 2.- Tras pulsar en "Añadir proyecto", nos aparecerá una ventana para:\\ - Poner un nombre al proyecto.\\ - Especificar en qué Pais/Región vamos a utilizar la aplicación.\\ - Pulsamos en "Crear proyecto" ^ | {{ :replica:push:2-pantalla_agregar_proyecto.png?nolink }} | \\ ^ 3.- En la ventana que nos aparece, tendremos que pulsar en el icono para agregar Firebase a nuestra aplicación Android. ^ | {{ :replica:push:3-Agregar_android.png?nolink }} | \\ ^ 4.- En el primer paso de la ventana que nos aparece, tenemos que especificar el nombre del paquete de nuestro framework: "com.xone.android.XXXXX" ó el que corresponda en caso de que tengamos uno personalizado. ^^ | En ajustes - Aplicaciones instaladas - Aplicación que sea, podemos darle al icono para ver más información.. | En concreto, nos interesa saber el nombre de paquete. | | {{ :replica:push:ajustes_informacion_app.png?nolink&400 }} | {{ :replica:push:ajustes_informacion_nombre_paquete.png?nolink&400 }} | | En este punto, si bien es opcional, es conveniente agregar también la huella digital **SHA1** de la firma de tu aplicación para mayor seguridad.\\ De esta forma únicamente podrán enrolarse en tu proyecto firebase aquellas aplicaciones que tengan tu firma.\\ La huella digital SHA-1 se obtiene desde la consola de comandos de tu sistema operativo con la utilidad keytool.\\ || | {{ :replica:push:4-paso1-registrar-aplicacion.png?nolink }} || \\ ^ 5.- En el segundo paso de dicha ventana, simplemente pulsamos en "Continuar". ^ | {{ :replica:push:5-paso2-descargar-archivo-configuracion.png?nolink }} | \\ ^ 6.- En el tercer paso de la ventana, simplemente pulsamos en "Finalizar". ^ | {{ :replica:push:6-paso3-agregar-sdk-firebase.png?nolink }} | \\ ^ 7.- Una vez agregado Firebase a nuestro proyecto, tenemos que ir a la consola de configuración para obtener los valores que necesitamos. ^ | {{ :replica:push:7-configuracion-proyecto.png?nolink }} | \\ ^ 8.- En el apartado de "Mensajería en la nube" tendremos los valores que necesitamos obtener para nuestro proyecto: GoogleAuthKey y GoogleSenderId.\\ Actualmente están en el proceso de cambiar las claves GoogleAuthKey por otras de mayor longitud. Podremos coger la "Clave de servidor heredada" que seguirá funcionando durante un tiempo, si bien nos recomiendan utilizar la primera "Clave de servidor" que nos aparece en esta ventana que será la que finalmente siga funcionando con el paso del tiempo. ^ | {{ :replica:push:8-claves-googleauthkey-googlesenderid.png?nolink }} | \\ ^ 9.- Poner las dos claves en nuestro fichero Replicator.ini dentro del proyecto con [DBID-1] o el que corresponda... ^ \\ ==== APPLE ==== \\ ^ Clave ^ Valor / Descripción ^ | **ApplePushDeveloper** |**Opcional**. **true**, para especificar que se utiliza el “sandbox” de Apple para desarrollo (Por defecto), **false**, para especificar que se va a utilizar un entorno de producción. | | **ApplePushPort** |**Opcional**. En caso de tener un puerto diferente del estándar permite cambiarlo aquí. El valor por defecto es el 2195 indicado por Apple.| | **AppleCertName** |**Opcional**. Nombre del certificado usado para iniciar una sesión SSL con el servidor PUSH. Si no se especifica hay que indicar obligatoriamente applecertfilename. El certificado se puede referenciar por nombre (CN) o por cualquier cadena en los campos legibles. Para usarlo de esta manera hay que instalarlo en el servidor.| | **AppleCertFilename** |**Opcional**. Indica el nombre del fichero en el cual se encuentra el certificado para iniciar sesión SSL en el proveedor PUSH. Si no se indica hay que establecer obligatoriamente applecertname. Normalmente se trata de un fichero .p12 ó .PFX que incluye la clave privada.| | **AppleCertPwd** |**Opcional**. Clave de acceso al certificado en caso de que se encuentre en un fichero .PFX o similar. Los certificados instalados en el repositorio del servidor normalmente no necesitan esta clave porque se dan derechos directos al usuario que ejecuta el servicio. | ==== BLACKBERRY==== \\ ^ Clave ^ Valor / Descripción ^ | **BlackberryPushHost** |**Obligatorio**. Indica el host al que se le envían las solicitudes de PUSH. Normalmente varía en función de que haya BES o no.| | **BlackberryPushPort** |**Opcional**. Por defecto 8080. En caso de usar un BES o un BAS, el administrador puede cambiar el puerto empleado por cuestiones de seguridad.| ===== PUSH Selectivo ===== \\ Se puede configurar el envío de notificaciones push de forma selectiva, es decir, que cumplan unas determinadas condiciones. Para ello se han dispuesto dos tablas nuevas, **ADM_PUSH_SELECTED_TEMPLATE** y **MASTER_REPLICA_SELECTED_PUSH**, la primera es la plantilla para rellenar la segunda.\\ \\ ==== ADM_PUSH_SELECTED_TEMPLATE ==== \\ Plantilla para rellenar la tabla de selectividad de las notificaciones push de réplica.\\ \\ ^ ADM_PUSH_SELECTED_TEMPLATE ^ | {{ :replica:push:adm_push_selected_template.png?nolink }} | \\ ^ Campo ^ Descripción ^ | **TABLENAME** |Texto (50). Contiene la tabla sobre la que se realiza la condición. | | **CRITERIA** |Texto. Contiene el criterio de selectividad que ha de cumplirse para que se reciba la notificación | | **MESSAGE** |Texto (250). Contiene el mensaje que se envía al dispositivo. | \\ ==== MASTER_REPLICA_SELECTED_PUSH ==== \\ Tabla de selectividad de las notificaciones push de réplica. Se rellena a partir de la anterior.\\ \\ ^ MASTER_REPLICA_SELECTED_PUSH ^ | {{ :replica:push:master_replica_selected_push.png?nolink }} | ^ Campo ^ Descripción ^ | **TBL** |Texto (50). Contiene la tabla sobre la que se realiza la condición. | | **MID** |Numérico. Identificador del dispositivo. | | **CRITERIA** |Texto. Contiene el criterio de selectividad que ha de cumplirse para que se reciba la notificación | | **MESSAGE** |Texto (250). Contiene el mensaje que se envía al dispositivo. |