Es posible configurar el envío de notificaciones Push con el servicio XOneMonitor.

Previamente tendremos que habernos registrado en un servidor de PUSH y tendremos que haber enviado al server el TOKEN del dispositivo. Para más información, consultar aquí.

Para ello tendremos que hacer uso de un nodo CHECKING con una acción especial llamada “send-push”.

En este nodo checking tendremos que hacer uso de una SQL para obtener los diferentes valores, rescatando los destinatarios a los que enviar PUSH.


send-push.xml
	<!-- claves a definir en el action name="send-push"
		pid				TOKEN del dispositivo				(default:)		(mandatory)
		google-auth-key			Cadena GoogleAuthKey				(default:)		(mandatory)
		device-type			0 : android | 1 : IOS 				(default:0)		(optional)
		mute 				true | false 					(default: false)	(optional)
		notification-title		Titulo de la notificación			(default:)		(optional)
		notification-message		Mensaje de la notificación			(default:)		(optional)
		notification-type		0 : start-replica | 1:start-live | 2:message 	(default:2)		(optional)
		priority			high | normal 					(default:normal)	(optional)
		proxy				URL del proxy si aplica				(default:)		(optional)
		proxy-credential		en texto plano "username;password"		(default:)		(optional)
	-->
<checking name="SENDPUSH" type="groupby" connection="monitordb" >		  
	<sql value="SELECT ID,IMEI,PID,GOOGLEAUTHKEY,TITLE,MESSAGE,TYPE,PLATFORM,'true' AS MUTE FROM gen_send_push where PUSH=0 " groupby="ID" />
	<errormessage subject="Error Moviendo los ficheros" body=""  header="" />
	<email to="x@x.com" cc="" bcc="" />
	<actions>
		<action name="send-push" 				
			pid="##ROW_PID##" 
			google-auth-key="##ROW_GOOGLEAUTHKEY##"
			device-type="##ROW_PLATFORM##" 
			mute="##ROW_MUTE##"
			notification-title="##ROW_TITLE##"
			notification-message="##ROW_MESSAGE##"
			priority="high"
			notification-type="##ROW_TYPE##" >
			<after-action>
				<action name="executequery" value="INSERT INTO gen_send_push_log (IMEI,RESULT,PUSHDATE) VALUES ('##ROW_IMEI##','##RESULT##',sysdate())" />		
				<action name="executequery" value="UPDATE gen_send_push SET RESULT='##RESULT##',LAST_SEND_PUSH=sysdate() WHERE ID=##ROW_ID##" />				
			</after-action>
		</action>
	</actions>
</checking>


Envío del Mensaje Push


Para más información de cómo implementar los mensajes push en una aplicación, seguir el siguiente enlace:

http://developers.google.com/cloud-messaging/downstream

La aplicación del cliente, llamará al proveedor de push (google - apple) y éstos envían la notificación PUSH al dispositivo que sea.

Para que nos puedan enviar una notificación y que nuestro Framework sea capaz de interpretarla, junto con la información que se envíe, hay que añadir algunos parámetros “extra”:

Parámetros Extra
Dato “source”, con valor “push_server”. Necesario para que el framework pueda distinguir la pro-cedencia de la Notificación Push y actuar en consecuencia.
Dato “notification_title” Su valor será el título de la Notificación Push.
Dato “notification_message” Su valor será el mensaje de la Notificación Push.


El resto de Datos que se pasen, serán los que se reciban en el dispositivo para procesarlos como se crea conveniente, a continuación se pone un ejemplo de mensaje:

 { "data": {
    "datomensaje": "Esto es una prueba",
    "source": "push_server",
    "notification_title": "Titulo de la notificacion",
    "notification_message": "Mensaje de la notificacion"
  },
  "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdF..."
 }


Recepción del Mensaje Push


Para procesar el mensaje push, tendremos que definir un nodo “onpushnotificationclick” en la colección “Empresas”, donde se entrará directamente cuando el usuario pulse sobre la notificación que se reciba en el dispositivo.

En dicho nodo se pondrá un parámetro que en el ejemplo hemos llamado “mensajepush”, que contendrá los valores que hayamos recepcionado en el mensaje Push.
datomensaje es el nombre de uno de los datos que viene en el mensaje Push del Servidor.
Se pueden poner tantos como se necesiten, siempre teniendo en cuenta que NO pueden llamarse con caracteres especiales, como espacios, acentos, ñ, etc…

 <onpushnotificationclick>
    <action name="runscript">
    <param name="mensajepush" />
            <script language="vbscript">
                ui.showToast "vbscript: " + mensajepush.datomensaje
         </script>
    </action>
 </onpushnotificationclick>


Más información de la Réplica con Push aquí