<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://wiki.mobeleader.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kevin</id>
	<title>mobeleader - Contribuciones del usuario [es]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.mobeleader.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kevin"/>
	<link rel="alternate" type="text/html" href="https://wiki.mobeleader.com/index.php?title=Especial:Contribuciones/Kevin"/>
	<updated>2026-06-05T16:41:50Z</updated>
	<subtitle>Contribuciones del usuario</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.mobeleader.com/index.php?title=SDKs:NickCenter:Cordova:index&amp;diff=2480</id>
		<title>SDKs:NickCenter:Cordova:index</title>
		<link rel="alternate" type="text/html" href="https://wiki.mobeleader.com/index.php?title=SDKs:NickCenter:Cordova:index&amp;diff=2480"/>
		<updated>2018-11-21T09:31:32Z</updated>

		<summary type="html">&lt;p&gt;Kevin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= CÓMO AGREGAR EL PLUGIN NICKCENTER EN CORDOVA =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{:SDKs:NickCenter:Intro}}&lt;br /&gt;
&lt;br /&gt;
== VERSIONES SOPORTADAS ==&lt;br /&gt;
&lt;br /&gt;
Este Plugin soporta tanto Android como iOS. &lt;br /&gt;
&lt;br /&gt;
Para iOS soporta las versiones superiores a las &amp;lt;b&amp;gt;10.0&amp;lt;/b&amp;gt;, en caso de que detecte una versión inferior no se lanzará.&lt;br /&gt;
&lt;br /&gt;
Para Android soporta todas las versiones superiores a la &amp;lt;b&amp;gt;4.0&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:SDKs:NickCenter:PanelControl}}&lt;br /&gt;
&lt;br /&gt;
== PASOS A REALIZAR PARA LA INTALACIÓN DEL PLUGIN ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== INSTALACIÓN: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para instalar el Plugin, si queremos que funcione en iOS, primero tendremos que instalar el plugin cordova-plugin-cocoapod-support, de la siguiente manera:&lt;br /&gt;
      cordova plugin add cordova-plugin-cocoapod-support&lt;br /&gt;
y después instalar el plugin de Nickcenter de esta manera (si solo lo vamos a usar para android con este plugin es suficiente):&lt;br /&gt;
      cordova plugin add cordova-plugin-nickcenter&lt;br /&gt;
&lt;br /&gt;
Una vez ejecutados los dos comandos ya tendremos el plugin instalado.&lt;br /&gt;
&lt;br /&gt;
=== LANZAMIENTO: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Una vez configurada la instalación, lanzaremos en el momento donde queramos el código, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
       cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;launchNickCenter&amp;quot;, [&amp;quot;54e46801egh95&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los Argumentos enviados serán los siguientes:&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 1:&amp;lt;/b&amp;gt; Es el AppHash de la aplicación, el cual se puede obtener en el panel, como muestra la siguiente pantalla.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/Obtener_hash_app_14.png&lt;br /&gt;
&lt;br /&gt;
Por defecto las pantallas de &amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; presentan el siguiente formato:&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/nc_ios_default.jpeg&lt;br /&gt;
&lt;br /&gt;
Si desea modificar las pantallas para que sean lo más parecidas a su aplicación &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;NickCenter&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; deberá añadir más argumentos, en el siguiente orden (Estos Argumentos son completamente Opcionales) (Todos los colores deben ir en hexadecimal):&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 2:&amp;lt;/b&amp;gt; Determina el color de fondo de las pantallas. Ejemplo: &amp;quot;#ffffff&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 3:&amp;lt;/b&amp;gt; Determina el color de fondo de la cabecera de las pantallas. Ejemplo: &amp;quot;#f0f0f0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 4:&amp;lt;/b&amp;gt; Determina el color de la linea que separa la cabecera con el resto de la pantalla. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 5:&amp;lt;/b&amp;gt; Determina el color del texto de la cabecera de las pantallas. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 6:&amp;lt;/b&amp;gt; Determina el color de fondo de los textfields donde se ubican los campos de cada pantalla. Ejemplo: &amp;quot;#ebebeb&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 7:&amp;lt;/b&amp;gt; Determina el color del texto descriptivo de cada textfield. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 8:&amp;lt;/b&amp;gt; Determina el color del texto de los textfields donde se ubican los campos de cada pantalla. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 9:&amp;lt;/b&amp;gt; Determina el color de fondo de los botones de cada pantalla. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 10:&amp;lt;/b&amp;gt; Determina el color de fondo de los botones de cada pantalla cuando se ha hecho click en éstos. Ejemplo: &amp;quot;#000000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 11:&amp;lt;/b&amp;gt; Determina el color del texto de cada boton cuando no se ha hecho click en éstos. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 12:&amp;lt;/b&amp;gt; Determina el color del texto de cada botón cuando se ha hecho click en éstos. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 13:&amp;lt;/b&amp;gt; Determina el color del borde de los botones. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 14:&amp;lt;/b&amp;gt; Determina el color de la fuente de los textos de los terminos y condiciones. Ejemplo: &amp;quot;#000000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 15: (Solo para iOS)&amp;lt;/b&amp;gt; Determina el color de los botones activos en los términos y condiciones. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 16: (Solo para iOS)&amp;lt;/b&amp;gt; Determina el color de los botones inactivos en los términos y condiciones. Ejemplo: &amp;quot;#f0f0f0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se expone un ejemplo en el que se maqueta a gusto del desarrollador las pantallas de &amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;launchNickCenter&amp;quot;, [&amp;quot;hash_app&amp;quot;, &amp;quot;#ffffff&amp;quot;, &amp;quot;#f0f0f0&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#ebebeb&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#000000&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#000000&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#f0f0f0&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
Cabe destacar que en el caso de Android, Cordova pone los checkbox por defecto de color blanco, por lo que sí queremos que se vean deberemos usar un fondo de pantalla que no sea blanco.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/nc_cordova_colores.png&lt;br /&gt;
&lt;br /&gt;
=== COMPLETAR REGISTRO: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Una vez un usuario haya sido registrado en una de nuestras aplicaciones, cuando otra lance NickCenter, dicho usuario tan soló debera &amp;lt;b&amp;gt;logearse&amp;lt;/b&amp;gt; sin necesidad de tener que registrarse otra vez para ésta última aplicación. Se puede dar el caso de que al registrarte en la primera aplicación tán solo fuera necesario &amp;lt;b&amp;gt;email y contraseña&amp;lt;/b&amp;gt;, y que para la segunda aplicación fuera necesario registrarse con el &amp;lt;b&amp;gt;telefono&amp;lt;/b&amp;gt;, cuando este tipo de casos se den, al logearte en la segunda aplicación se abrirá una nueva vista para completar el registro. Una vez completado dicho registro se tratará como un login normal.&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/nc_ios_completar.jpeg&lt;br /&gt;
&lt;br /&gt;
=== FUNCIONES UTILES: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; está dotada de una función que permite al desarrollador cerrar la sesión ya iniciada por el usuario de manera que la siguiente vez que abra la aplicación y pase por donde se lanza la librería, el usuario deba volver a loguearse. Dicha funcion es :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;closeSession&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
    cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;closeNickCenterSession&amp;quot;, [&amp;quot;hash_app&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PRECARGA DE DATOS PARA EL REGISTRO: ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; está dotada de una serie de funciones que permiten al desarrollador precargar los datos del usuario a la hora de mostrarle la pantalla de registro. Si desea hacer uso de esta precarga deberá pasar más argumentos a la llamada de la librería ( todos estos argumentos son opcionales ) :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 17:&amp;lt;/b&amp;gt; Nombre. Ejemplo: &amp;quot;kevin&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 18:&amp;lt;/b&amp;gt; Apellidos. Ejemplo: &amp;quot;lancharro&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 19:&amp;lt;/b&amp;gt; Email. Deberá ser un email válido, se comprobará tanto el formato de la cadena como la validez de éste. Ejemplo: &amp;quot;user@domain.com&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 20:&amp;lt;/b&amp;gt; Teléfono. Deberá ser un teléfono sin prefijo internacional. Ejemplo: &amp;quot;666777888&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 21:&amp;lt;/b&amp;gt; Nick. Ejemplo: &amp;quot;CocoZilla&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 22:&amp;lt;/b&amp;gt; Género. Deberá ser M para hombres y F para mujeres.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 23:&amp;lt;/b&amp;gt; Fecha de nacimiento. Deberá ser una fecha en formato inglés separado por /. Ejemplo: &amp;quot;1992/01/12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se expone un ejemplo siguiendo la maquetación expuesta en anteriores puntos.&lt;br /&gt;
&lt;br /&gt;
     cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;launchNickCenter&amp;quot;, [&amp;quot;hash_app&amp;quot;, &amp;quot;#ffffff&amp;quot;, &amp;quot;#f0f0f0&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#ebebeb&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#000000&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#f0f0f0&amp;quot;, &amp;quot;nombre&amp;quot;, &amp;quot;apellido&amp;quot;, &amp;quot;user@domain.com&amp;quot;, &amp;quot;666777888&amp;quot;, &amp;quot;CocoZilla&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;1992/01/12&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Precarga_datos_cordova.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== CallBacks: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; cuenta con una serie de callbacks los cuales se pueden recoger en en las funciones implementadas successNickCenterCallback y errorNickCenterCallback que permiten al desarrollador saber qué parte del plugin se esta ejecutando y cuál es su resultado. A continuación se expondrán éstos y para que sirven.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterViewOpened&amp;lt;/b&amp;gt;: Notifica cuando la vista de registro se ha lanzado.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginViewOpened&amp;lt;/b&amp;gt;: Notifica cuando la vista del login se ha lanzado.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRescueViewOpened&amp;lt;/b&amp;gt;: Notifica cuando la vista de recuperación de contraseña se ha lanzado.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onError: Cadena de Error&amp;lt;/b&amp;gt;: Notificará cuando haya habido un error, normalmente se lanzará cuando el registro o el login hayan sido incorrectos, o cuando al recuperar la contraseña el email sea incorrecto. Se puede dar el caso de que de otro tipo de error como bien puede ser al conectarnos al sevidor.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onWarning: Cadena de Warning&amp;lt;/b&amp;gt;: Notificará de alguna advertencia al desarrollador.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onFinished&amp;lt;/b&amp;gt;: Notificará cuando la librería haya finalizado algun proceso. Inicio de sesión, registro o recuperación de contraseña correcto.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onSessionClosed&amp;lt;/b&amp;gt;: Notificará cuando se haya cerrado la sesión de NickCenter.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onActive&amp;lt;/b&amp;gt;: Notificará cuando detecte que NickCenter esta activa para la aplicación.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onInactive&amp;lt;/b&amp;gt;: Notificará cuando detecte que NickCenter esta inactiva para la aplicación.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterRegisterButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de registrarse en la vista de registro de usuario.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterLoginButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de inicio de sesión en la vista de registro de usuario.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterCloseButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de cerrar en la vista de registro de usuario.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterPerformed: Json de Usuario&amp;lt;/b&amp;gt;: Notificará cuando haya habido un registro correcto. Se mandará la información recogida del usuario en formato Json.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginPerformed: Json de Usuario&amp;lt;/b&amp;gt;: Notificará cuando haya habido un login correcto. Se mandará la información recogida del usuario en formato Json.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginLoginButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de inicio de sesión en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginRegisterButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de registrarse en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginRescueButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de recuperar contraseña en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginCloseButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de cerrar en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRescueRescueButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de recuperar contraseña en la vista de recuperar contraseña.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRescueCloseButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de cerrar en la vista de recuperar contraseña.&lt;/div&gt;</summary>
		<author><name>Kevin</name></author>
	</entry>
	<entry>
		<id>https://wiki.mobeleader.com/index.php?title=SDKs:NickCenter:Cordova:index&amp;diff=2475</id>
		<title>SDKs:NickCenter:Cordova:index</title>
		<link rel="alternate" type="text/html" href="https://wiki.mobeleader.com/index.php?title=SDKs:NickCenter:Cordova:index&amp;diff=2475"/>
		<updated>2018-11-20T14:45:00Z</updated>

		<summary type="html">&lt;p&gt;Kevin: /* PRECARGA DE DATOS PARA EL REGISTRO: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= CÓMO AGREGAR EL PLUGIN NICKCENTER EN CORDOVA =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{:SDKs:NickCenter:Intro}}&lt;br /&gt;
&lt;br /&gt;
== VERSIONES SOPORTADAS ==&lt;br /&gt;
&lt;br /&gt;
Este Plugin soporta tanto Android como iOS. &lt;br /&gt;
&lt;br /&gt;
Para iOS soporta las versiones superiores a las &amp;lt;b&amp;gt;10.0&amp;lt;/b&amp;gt;, en caso de que detecte una versión inferior no se lanzará.&lt;br /&gt;
&lt;br /&gt;
Para Android soporta todas las versiones superiores a la &amp;lt;b&amp;gt;4.0&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:SDKs:NickCenter:PanelControl}}&lt;br /&gt;
&lt;br /&gt;
== PASOS A REALIZAR PARA LA INTALACIÓN DEL PLUGIN ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== INSTALACIÓN: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para instalar el Plugin, si queremos que funcione en iOS, primero tendremos que instalar el plugin cordova-plugin-cocoapod-support, de la siguiente manera:&lt;br /&gt;
      cordova plugin add cordova-plugin-cocoapod-support&lt;br /&gt;
y después instalar el plugin de Nickcenter de esta manera (si solo lo vamos a usar para android con este plugin es suficiente):&lt;br /&gt;
      cordova plugin add cordova-plugin-nickcenter&lt;br /&gt;
&lt;br /&gt;
Una vez ejecutados los dos comandos ya tendremos el plugin instalado.&lt;br /&gt;
&lt;br /&gt;
=== LANZAMIENTO: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Una vez configurada la instalación, lanzaremos en el momento donde queramos el código, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
       cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;launchNickCenter&amp;quot;, [&amp;quot;54e46801egh95&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los Argumentos enviados serán los siguientes:&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 1:&amp;lt;/b&amp;gt; Es el AppHash de la aplicación, el cual se puede obtener en el panel, como muestra la siguiente pantalla.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/Obtener_hash_app_14.png&lt;br /&gt;
&lt;br /&gt;
Por defecto las pantallas de &amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; presentan el siguiente formato:&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/nc_ios_default.jpeg&lt;br /&gt;
&lt;br /&gt;
Si desea modificar las pantallas para que sean lo más parecidas a su aplicación &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;NickCenter&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; deberá añadir más argumentos, en el siguiente orden (Estos Argumentos son completamente Opcionales) (Todos los colores deben ir en hexadecimal):&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 2:&amp;lt;/b&amp;gt; Determina el color de fondo de las pantallas. Ejemplo: &amp;quot;#ffffff&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 3:&amp;lt;/b&amp;gt; Determina el color de fondo de la cabecera de las pantallas. Ejemplo: &amp;quot;#f0f0f0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 4:&amp;lt;/b&amp;gt; Determina el color de la linea que separa la cabecera con el resto de la pantalla. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 5:&amp;lt;/b&amp;gt; Determina el color del texto de la cabecera de las pantallas. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 6:&amp;lt;/b&amp;gt; Determina el color de fondo de los textfields donde se ubican los campos de cada pantalla. Ejemplo: &amp;quot;#ebebeb&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 7:&amp;lt;/b&amp;gt; Determina el color del texto descriptivo de cada textfield. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 8:&amp;lt;/b&amp;gt; Determina el color del texto de los textfields donde se ubican los campos de cada pantalla. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 9:&amp;lt;/b&amp;gt; Determina el color de fondo de los botones de cada pantalla. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 10:&amp;lt;/b&amp;gt; Determina el color de fondo de los botones de cada pantalla cuando se ha hecho click en éstos. Ejemplo: &amp;quot;#000000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 11:&amp;lt;/b&amp;gt; Determina el color del texto de cada boton cuando no se ha hecho click en éstos. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 12:&amp;lt;/b&amp;gt; Determina el color del texto de cada botón cuando se ha hecho click en éstos. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 13:&amp;lt;/b&amp;gt; Determina el color del borde de los botones. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 14:&amp;lt;/b&amp;gt; Determina el color de la fuente de los textos de los terminos y condiciones. Ejemplo: &amp;quot;#000000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 15: (Solo para iOS)&amp;lt;/b&amp;gt; Determina el color de los botones activos en los términos y condiciones. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 16: (Solo para iOS)&amp;lt;/b&amp;gt; Determina el color de los botones inactivos en los términos y condiciones. Ejemplo: &amp;quot;#f0f0f0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se expone un ejemplo en el que se maqueta a gusto del desarrollador las pantallas de &amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;launchNickCenter&amp;quot;, [&amp;quot;hash_app&amp;quot;, &amp;quot;#ffffff&amp;quot;, &amp;quot;#f0f0f0&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#ebebeb&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#000000&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#000000&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#f0f0f0&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
Cabe destacar que en el caso de Android, Cordova pone los checkbox por defecto de color blanco, por lo que sí queremos que se vean deberemos usar un fondo de pantalla que no sea blanco.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/nc_cordova_colores.png&lt;br /&gt;
&lt;br /&gt;
=== COMPLETAR REGISTRO: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Una vez un usuario haya sido registrado en una de nuestras aplicaciones, cuando otra lance NickCenter, dicho usuario tan soló debera &amp;lt;b&amp;gt;logearse&amp;lt;/b&amp;gt; sin necesidad de tener que registrarse otra vez para ésta última aplicación. Se puede dar el caso de que al registrarte en la primera aplicación tán solo fuera necesario &amp;lt;b&amp;gt;email y contraseña&amp;lt;/b&amp;gt;, y que para la segunda aplicación fuera necesario registrarse con el &amp;lt;b&amp;gt;telefono&amp;lt;/b&amp;gt;, cuando este tipo de casos se den, al logearte en la segunda aplicación se abrirá una nueva vista para completar el registro. Una vez completado dicho registro se tratará como un login normal.&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/nc_ios_completar.jpeg&lt;br /&gt;
&lt;br /&gt;
=== FUNCIONES UTILES: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; está dotada de una función que permite al desarrollador cerrar la sesión ya iniciada por el usuario de manera que la siguiente vez que abra la aplicación y pase por donde se lanza la librería, el usuario deba volver a loguearse. Dicha funcion es :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;closeSession&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
    cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;closeNickCenterSession&amp;quot;, [&amp;quot;hash_app&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PRECARGA DE DATOS PARA EL REGISTRO: ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; está dotada de una serie de funciones que permiten al desarrollador precargar los datos del usuario a la hora de mostrarle la pantalla de registro. Si desea hacer uso de esta precarga deberá pasar más argumentos a la llamada de la librería ( todos estos argumentos son opcionales ) :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 17:&amp;lt;/b&amp;gt; Nombre. Ejemplo: &amp;quot;kevin&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 18:&amp;lt;/b&amp;gt; Apellidos. Ejemplo: &amp;quot;lancharro&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 19:&amp;lt;/b&amp;gt; Email. Deberá ser un email válido, se comprobará tanto el formato de la cadena como la validez de éste. Ejemplo: &amp;quot;user@domain.com&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 20:&amp;lt;/b&amp;gt; Teléfono. Deberá ser un teléfono sin prefijo internacional. Ejemplo: &amp;quot;666777888&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 21:&amp;lt;/b&amp;gt; Nick. Ejemplo: &amp;quot;CocoZilla&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 22:&amp;lt;/b&amp;gt; Género. Deberá ser M para hombres y F para mujeres.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 23:&amp;lt;/b&amp;gt; Fecha de nacimiento. Deberá ser una fecha en formato inglés separado por /. Ejemplo: &amp;quot;1992/01/12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se expone un ejemplo siguiendo la maquetación expuesta en anteriores puntos.&lt;br /&gt;
&lt;br /&gt;
     cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;launchNickCenter&amp;quot;, [&amp;quot;hash_app&amp;quot;, &amp;quot;#ffffff&amp;quot;, &amp;quot;#f0f0f0&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#ebebeb&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#000000&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#f0f0f0&amp;quot;, &amp;quot;kevin&amp;quot;, &amp;quot;lancharro&amp;quot;, &amp;quot;user@domain.com&amp;quot;, &amp;quot;666777888&amp;quot;, &amp;quot;CocoZilla&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;1992/01/12&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Precarga_datos_cordova.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== CallBacks: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; cuenta con una serie de callbacks los cuales se pueden recoger en en las funciones implementadas successNickCenterCallback y errorNickCenterCallback que permiten al desarrollador saber qué parte del plugin se esta ejecutando y cuál es su resultado. A continuación se expondrán éstos y para que sirven.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterViewOpened&amp;lt;/b&amp;gt;: Notifica cuando la vista de registro se ha lanzado.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginViewOpened&amp;lt;/b&amp;gt;: Notifica cuando la vista del login se ha lanzado.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRescueViewOpened&amp;lt;/b&amp;gt;: Notifica cuando la vista de recuperación de contraseña se ha lanzado.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onError: Cadena de Error&amp;lt;/b&amp;gt;: Notificará cuando haya habido un error, normalmente se lanzará cuando el registro o el login hayan sido incorrectos, o cuando al recuperar la contraseña el email sea incorrecto. Se puede dar el caso de que de otro tipo de error como bien puede ser al conectarnos al sevidor.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onWarning: Cadena de Warning&amp;lt;/b&amp;gt;: Notificará de alguna advertencia al desarrollador.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onFinished&amp;lt;/b&amp;gt;: Notificará cuando la librería haya finalizado algun proceso. Inicio de sesión, registro o recuperación de contraseña correcto.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onSessionClosed&amp;lt;/b&amp;gt;: Notificará cuando se haya cerrado la sesión de NickCenter.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onActive&amp;lt;/b&amp;gt;: Notificará cuando detecte que NickCenter esta activa para la aplicación.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onInactive&amp;lt;/b&amp;gt;: Notificará cuando detecte que NickCenter esta inactiva para la aplicación.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterRegisterButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de registrarse en la vista de registro de usuario.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterLoginButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de inicio de sesión en la vista de registro de usuario.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterCloseButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de cerrar en la vista de registro de usuario.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterPerformed: Json de Usuario&amp;lt;/b&amp;gt;: Notificará cuando haya habido un registro correcto. Se mandará la información recogida del usuario en formato Json.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginPerformed: Json de Usuario&amp;lt;/b&amp;gt;: Notificará cuando haya habido un login correcto. Se mandará la información recogida del usuario en formato Json.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginLoginButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de inicio de sesión en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginRegisterButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de registrarse en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginRescueButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de recuperar contraseña en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginCloseButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de cerrar en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRescueRescueButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de recuperar contraseña en la vista de recuperar contraseña.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRescueCloseButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de cerrar en la vista de recuperar contraseña.&lt;/div&gt;</summary>
		<author><name>Kevin</name></author>
	</entry>
	<entry>
		<id>https://wiki.mobeleader.com/index.php?title=SDKs:NickCenter:Cordova:index&amp;diff=2474</id>
		<title>SDKs:NickCenter:Cordova:index</title>
		<link rel="alternate" type="text/html" href="https://wiki.mobeleader.com/index.php?title=SDKs:NickCenter:Cordova:index&amp;diff=2474"/>
		<updated>2018-11-20T14:44:10Z</updated>

		<summary type="html">&lt;p&gt;Kevin: /* PRECARGA DE DATOS PARA EL REGISTRO: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= CÓMO AGREGAR EL PLUGIN NICKCENTER EN CORDOVA =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{:SDKs:NickCenter:Intro}}&lt;br /&gt;
&lt;br /&gt;
== VERSIONES SOPORTADAS ==&lt;br /&gt;
&lt;br /&gt;
Este Plugin soporta tanto Android como iOS. &lt;br /&gt;
&lt;br /&gt;
Para iOS soporta las versiones superiores a las &amp;lt;b&amp;gt;10.0&amp;lt;/b&amp;gt;, en caso de que detecte una versión inferior no se lanzará.&lt;br /&gt;
&lt;br /&gt;
Para Android soporta todas las versiones superiores a la &amp;lt;b&amp;gt;4.0&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:SDKs:NickCenter:PanelControl}}&lt;br /&gt;
&lt;br /&gt;
== PASOS A REALIZAR PARA LA INTALACIÓN DEL PLUGIN ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== INSTALACIÓN: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para instalar el Plugin, si queremos que funcione en iOS, primero tendremos que instalar el plugin cordova-plugin-cocoapod-support, de la siguiente manera:&lt;br /&gt;
      cordova plugin add cordova-plugin-cocoapod-support&lt;br /&gt;
y después instalar el plugin de Nickcenter de esta manera (si solo lo vamos a usar para android con este plugin es suficiente):&lt;br /&gt;
      cordova plugin add cordova-plugin-nickcenter&lt;br /&gt;
&lt;br /&gt;
Una vez ejecutados los dos comandos ya tendremos el plugin instalado.&lt;br /&gt;
&lt;br /&gt;
=== LANZAMIENTO: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Una vez configurada la instalación, lanzaremos en el momento donde queramos el código, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
       cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;launchNickCenter&amp;quot;, [&amp;quot;54e46801egh95&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los Argumentos enviados serán los siguientes:&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 1:&amp;lt;/b&amp;gt; Es el AppHash de la aplicación, el cual se puede obtener en el panel, como muestra la siguiente pantalla.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/Obtener_hash_app_14.png&lt;br /&gt;
&lt;br /&gt;
Por defecto las pantallas de &amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; presentan el siguiente formato:&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/nc_ios_default.jpeg&lt;br /&gt;
&lt;br /&gt;
Si desea modificar las pantallas para que sean lo más parecidas a su aplicación &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;NickCenter&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; deberá añadir más argumentos, en el siguiente orden (Estos Argumentos son completamente Opcionales) (Todos los colores deben ir en hexadecimal):&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 2:&amp;lt;/b&amp;gt; Determina el color de fondo de las pantallas. Ejemplo: &amp;quot;#ffffff&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 3:&amp;lt;/b&amp;gt; Determina el color de fondo de la cabecera de las pantallas. Ejemplo: &amp;quot;#f0f0f0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 4:&amp;lt;/b&amp;gt; Determina el color de la linea que separa la cabecera con el resto de la pantalla. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 5:&amp;lt;/b&amp;gt; Determina el color del texto de la cabecera de las pantallas. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 6:&amp;lt;/b&amp;gt; Determina el color de fondo de los textfields donde se ubican los campos de cada pantalla. Ejemplo: &amp;quot;#ebebeb&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 7:&amp;lt;/b&amp;gt; Determina el color del texto descriptivo de cada textfield. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 8:&amp;lt;/b&amp;gt; Determina el color del texto de los textfields donde se ubican los campos de cada pantalla. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 9:&amp;lt;/b&amp;gt; Determina el color de fondo de los botones de cada pantalla. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 10:&amp;lt;/b&amp;gt; Determina el color de fondo de los botones de cada pantalla cuando se ha hecho click en éstos. Ejemplo: &amp;quot;#000000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 11:&amp;lt;/b&amp;gt; Determina el color del texto de cada boton cuando no se ha hecho click en éstos. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 12:&amp;lt;/b&amp;gt; Determina el color del texto de cada botón cuando se ha hecho click en éstos. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 13:&amp;lt;/b&amp;gt; Determina el color del borde de los botones. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 14:&amp;lt;/b&amp;gt; Determina el color de la fuente de los textos de los terminos y condiciones. Ejemplo: &amp;quot;#000000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 15: (Solo para iOS)&amp;lt;/b&amp;gt; Determina el color de los botones activos en los términos y condiciones. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 16: (Solo para iOS)&amp;lt;/b&amp;gt; Determina el color de los botones inactivos en los términos y condiciones. Ejemplo: &amp;quot;#f0f0f0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se expone un ejemplo en el que se maqueta a gusto del desarrollador las pantallas de &amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;launchNickCenter&amp;quot;, [&amp;quot;hash_app&amp;quot;, &amp;quot;#ffffff&amp;quot;, &amp;quot;#f0f0f0&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#ebebeb&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#000000&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#000000&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#f0f0f0&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
Cabe destacar que en el caso de Android, Cordova pone los checkbox por defecto de color blanco, por lo que sí queremos que se vean deberemos usar un fondo de pantalla que no sea blanco.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/nc_cordova_colores.png&lt;br /&gt;
&lt;br /&gt;
=== COMPLETAR REGISTRO: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Una vez un usuario haya sido registrado en una de nuestras aplicaciones, cuando otra lance NickCenter, dicho usuario tan soló debera &amp;lt;b&amp;gt;logearse&amp;lt;/b&amp;gt; sin necesidad de tener que registrarse otra vez para ésta última aplicación. Se puede dar el caso de que al registrarte en la primera aplicación tán solo fuera necesario &amp;lt;b&amp;gt;email y contraseña&amp;lt;/b&amp;gt;, y que para la segunda aplicación fuera necesario registrarse con el &amp;lt;b&amp;gt;telefono&amp;lt;/b&amp;gt;, cuando este tipo de casos se den, al logearte en la segunda aplicación se abrirá una nueva vista para completar el registro. Una vez completado dicho registro se tratará como un login normal.&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/nc_ios_completar.jpeg&lt;br /&gt;
&lt;br /&gt;
=== FUNCIONES UTILES: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; está dotada de una función que permite al desarrollador cerrar la sesión ya iniciada por el usuario de manera que la siguiente vez que abra la aplicación y pase por donde se lanza la librería, el usuario deba volver a loguearse. Dicha funcion es :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;closeSession&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
    cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;closeNickCenterSession&amp;quot;, [&amp;quot;hash_app&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PRECARGA DE DATOS PARA EL REGISTRO: ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; está dotada de una serie de funciones que permiten al desarrollador precargar los datos del usuario a la hora de mostrarle la pantalla de registro. Si desea hacer uso de esta precarga deberá pasar más argumentos a la llamada de la librería ( todos estos argumentos son opcionales ) :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 17:&amp;lt;/b&amp;gt; Nombre. Ejemplo: &amp;quot;kevin&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 18:&amp;lt;/b&amp;gt; Apellidos. Ejemplo: &amp;quot;lancharro&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 19:&amp;lt;/b&amp;gt; Email. Deberá ser un email válido, se comprobará tanto el formato de la cadena como la validez de éste. Ejemplo: &amp;quot;user@domain.com&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 20:&amp;lt;/b&amp;gt; Teléfono. Deberá ser un teléfono sin prefijo internacional. Ejemplo: &amp;quot;666777888&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 21:&amp;lt;/b&amp;gt; Nick. Ejemplo: &amp;quot;CocoZilla&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 22:&amp;lt;/b&amp;gt; Género. Deberá ser M para hombres y F para mujeres.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 23:&amp;lt;/b&amp;gt; Fecha de nacimiento. Deberá ser una fecha en formato inglés separado por /. Ejemplo: &amp;quot;1992/01/12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se expone un ejemplo siguiendo la maquetación expuesta en anteriores puntos.&lt;br /&gt;
&lt;br /&gt;
     cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;launchNickCenter&amp;quot;, [&amp;quot;58c17363e2de6&amp;quot;, &amp;quot;#ffffff&amp;quot;, &amp;quot;#f0f0f0&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#ebebeb&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#000000&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#f0f0f0&amp;quot;, &amp;quot;kevin&amp;quot;, &amp;quot;lancharro&amp;quot;, &amp;quot;user@domain.com&amp;quot;, &amp;quot;666777888&amp;quot;, &amp;quot;CocoZilla&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;1992/01/12&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Precarga_datos_cordova.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== CallBacks: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; cuenta con una serie de callbacks los cuales se pueden recoger en en las funciones implementadas successNickCenterCallback y errorNickCenterCallback que permiten al desarrollador saber qué parte del plugin se esta ejecutando y cuál es su resultado. A continuación se expondrán éstos y para que sirven.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterViewOpened&amp;lt;/b&amp;gt;: Notifica cuando la vista de registro se ha lanzado.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginViewOpened&amp;lt;/b&amp;gt;: Notifica cuando la vista del login se ha lanzado.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRescueViewOpened&amp;lt;/b&amp;gt;: Notifica cuando la vista de recuperación de contraseña se ha lanzado.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onError: Cadena de Error&amp;lt;/b&amp;gt;: Notificará cuando haya habido un error, normalmente se lanzará cuando el registro o el login hayan sido incorrectos, o cuando al recuperar la contraseña el email sea incorrecto. Se puede dar el caso de que de otro tipo de error como bien puede ser al conectarnos al sevidor.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onWarning: Cadena de Warning&amp;lt;/b&amp;gt;: Notificará de alguna advertencia al desarrollador.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onFinished&amp;lt;/b&amp;gt;: Notificará cuando la librería haya finalizado algun proceso. Inicio de sesión, registro o recuperación de contraseña correcto.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onSessionClosed&amp;lt;/b&amp;gt;: Notificará cuando se haya cerrado la sesión de NickCenter.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onActive&amp;lt;/b&amp;gt;: Notificará cuando detecte que NickCenter esta activa para la aplicación.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onInactive&amp;lt;/b&amp;gt;: Notificará cuando detecte que NickCenter esta inactiva para la aplicación.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterRegisterButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de registrarse en la vista de registro de usuario.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterLoginButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de inicio de sesión en la vista de registro de usuario.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterCloseButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de cerrar en la vista de registro de usuario.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterPerformed: Json de Usuario&amp;lt;/b&amp;gt;: Notificará cuando haya habido un registro correcto. Se mandará la información recogida del usuario en formato Json.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginPerformed: Json de Usuario&amp;lt;/b&amp;gt;: Notificará cuando haya habido un login correcto. Se mandará la información recogida del usuario en formato Json.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginLoginButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de inicio de sesión en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginRegisterButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de registrarse en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginRescueButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de recuperar contraseña en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginCloseButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de cerrar en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRescueRescueButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de recuperar contraseña en la vista de recuperar contraseña.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRescueCloseButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de cerrar en la vista de recuperar contraseña.&lt;/div&gt;</summary>
		<author><name>Kevin</name></author>
	</entry>
	<entry>
		<id>https://wiki.mobeleader.com/index.php?title=Archivo:Precarga_datos_cordova.png&amp;diff=2473</id>
		<title>Archivo:Precarga datos cordova.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.mobeleader.com/index.php?title=Archivo:Precarga_datos_cordova.png&amp;diff=2473"/>
		<updated>2018-11-20T14:42:49Z</updated>

		<summary type="html">&lt;p&gt;Kevin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kevin</name></author>
	</entry>
	<entry>
		<id>https://wiki.mobeleader.com/index.php?title=SDKs:NickCenter:Cordova:index&amp;diff=2472</id>
		<title>SDKs:NickCenter:Cordova:index</title>
		<link rel="alternate" type="text/html" href="https://wiki.mobeleader.com/index.php?title=SDKs:NickCenter:Cordova:index&amp;diff=2472"/>
		<updated>2018-11-20T14:42:25Z</updated>

		<summary type="html">&lt;p&gt;Kevin: /* PRECARGA DE DATOS PARA EL REGISTRO: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= CÓMO AGREGAR EL PLUGIN NICKCENTER EN CORDOVA =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{:SDKs:NickCenter:Intro}}&lt;br /&gt;
&lt;br /&gt;
== VERSIONES SOPORTADAS ==&lt;br /&gt;
&lt;br /&gt;
Este Plugin soporta tanto Android como iOS. &lt;br /&gt;
&lt;br /&gt;
Para iOS soporta las versiones superiores a las &amp;lt;b&amp;gt;10.0&amp;lt;/b&amp;gt;, en caso de que detecte una versión inferior no se lanzará.&lt;br /&gt;
&lt;br /&gt;
Para Android soporta todas las versiones superiores a la &amp;lt;b&amp;gt;4.0&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:SDKs:NickCenter:PanelControl}}&lt;br /&gt;
&lt;br /&gt;
== PASOS A REALIZAR PARA LA INTALACIÓN DEL PLUGIN ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== INSTALACIÓN: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para instalar el Plugin, si queremos que funcione en iOS, primero tendremos que instalar el plugin cordova-plugin-cocoapod-support, de la siguiente manera:&lt;br /&gt;
      cordova plugin add cordova-plugin-cocoapod-support&lt;br /&gt;
y después instalar el plugin de Nickcenter de esta manera (si solo lo vamos a usar para android con este plugin es suficiente):&lt;br /&gt;
      cordova plugin add cordova-plugin-nickcenter&lt;br /&gt;
&lt;br /&gt;
Una vez ejecutados los dos comandos ya tendremos el plugin instalado.&lt;br /&gt;
&lt;br /&gt;
=== LANZAMIENTO: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Una vez configurada la instalación, lanzaremos en el momento donde queramos el código, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
       cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;launchNickCenter&amp;quot;, [&amp;quot;54e46801egh95&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los Argumentos enviados serán los siguientes:&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 1:&amp;lt;/b&amp;gt; Es el AppHash de la aplicación, el cual se puede obtener en el panel, como muestra la siguiente pantalla.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/Obtener_hash_app_14.png&lt;br /&gt;
&lt;br /&gt;
Por defecto las pantallas de &amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; presentan el siguiente formato:&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/nc_ios_default.jpeg&lt;br /&gt;
&lt;br /&gt;
Si desea modificar las pantallas para que sean lo más parecidas a su aplicación &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;NickCenter&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; deberá añadir más argumentos, en el siguiente orden (Estos Argumentos son completamente Opcionales) (Todos los colores deben ir en hexadecimal):&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 2:&amp;lt;/b&amp;gt; Determina el color de fondo de las pantallas. Ejemplo: &amp;quot;#ffffff&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 3:&amp;lt;/b&amp;gt; Determina el color de fondo de la cabecera de las pantallas. Ejemplo: &amp;quot;#f0f0f0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 4:&amp;lt;/b&amp;gt; Determina el color de la linea que separa la cabecera con el resto de la pantalla. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 5:&amp;lt;/b&amp;gt; Determina el color del texto de la cabecera de las pantallas. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 6:&amp;lt;/b&amp;gt; Determina el color de fondo de los textfields donde se ubican los campos de cada pantalla. Ejemplo: &amp;quot;#ebebeb&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 7:&amp;lt;/b&amp;gt; Determina el color del texto descriptivo de cada textfield. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 8:&amp;lt;/b&amp;gt; Determina el color del texto de los textfields donde se ubican los campos de cada pantalla. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 9:&amp;lt;/b&amp;gt; Determina el color de fondo de los botones de cada pantalla. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 10:&amp;lt;/b&amp;gt; Determina el color de fondo de los botones de cada pantalla cuando se ha hecho click en éstos. Ejemplo: &amp;quot;#000000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 11:&amp;lt;/b&amp;gt; Determina el color del texto de cada boton cuando no se ha hecho click en éstos. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 12:&amp;lt;/b&amp;gt; Determina el color del texto de cada botón cuando se ha hecho click en éstos. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 13:&amp;lt;/b&amp;gt; Determina el color del borde de los botones. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 14:&amp;lt;/b&amp;gt; Determina el color de la fuente de los textos de los terminos y condiciones. Ejemplo: &amp;quot;#000000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 15: (Solo para iOS)&amp;lt;/b&amp;gt; Determina el color de los botones activos en los términos y condiciones. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 16: (Solo para iOS)&amp;lt;/b&amp;gt; Determina el color de los botones inactivos en los términos y condiciones. Ejemplo: &amp;quot;#f0f0f0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se expone un ejemplo en el que se maqueta a gusto del desarrollador las pantallas de &amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;launchNickCenter&amp;quot;, [&amp;quot;hash_app&amp;quot;, &amp;quot;#ffffff&amp;quot;, &amp;quot;#f0f0f0&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#ebebeb&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#000000&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#000000&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#f0f0f0&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
Cabe destacar que en el caso de Android, Cordova pone los checkbox por defecto de color blanco, por lo que sí queremos que se vean deberemos usar un fondo de pantalla que no sea blanco.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/nc_cordova_colores.png&lt;br /&gt;
&lt;br /&gt;
=== COMPLETAR REGISTRO: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Una vez un usuario haya sido registrado en una de nuestras aplicaciones, cuando otra lance NickCenter, dicho usuario tan soló debera &amp;lt;b&amp;gt;logearse&amp;lt;/b&amp;gt; sin necesidad de tener que registrarse otra vez para ésta última aplicación. Se puede dar el caso de que al registrarte en la primera aplicación tán solo fuera necesario &amp;lt;b&amp;gt;email y contraseña&amp;lt;/b&amp;gt;, y que para la segunda aplicación fuera necesario registrarse con el &amp;lt;b&amp;gt;telefono&amp;lt;/b&amp;gt;, cuando este tipo de casos se den, al logearte en la segunda aplicación se abrirá una nueva vista para completar el registro. Una vez completado dicho registro se tratará como un login normal.&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/nc_ios_completar.jpeg&lt;br /&gt;
&lt;br /&gt;
=== FUNCIONES UTILES: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; está dotada de una función que permite al desarrollador cerrar la sesión ya iniciada por el usuario de manera que la siguiente vez que abra la aplicación y pase por donde se lanza la librería, el usuario deba volver a loguearse. Dicha funcion es :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;closeSession&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
    cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;closeNickCenterSession&amp;quot;, [&amp;quot;hash_app&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PRECARGA DE DATOS PARA EL REGISTRO: ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; está dotada de una serie de funciones que permiten al desarrollador precargar los datos del usuario a la hora de mostrarle la pantalla de registro. Si desea hacer uso de esta precarga deberá pasar más argumentos a la llamada de la librería ( todos estos argumentos son opcionales ) :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 17:&amp;lt;/b&amp;gt; Nombre. Ejemplo: &amp;quot;Kevin&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 18:&amp;lt;/b&amp;gt; Apellidos. Ejemplo: &amp;quot;Lancharro&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 19:&amp;lt;/b&amp;gt; Email. Deberá ser un email válido, se comprobará tanto el formato de la cadena como la validez de éste. Ejemplo: &amp;quot;user@domain.com&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 20:&amp;lt;/b&amp;gt; Teléfono. Deberá ser un teléfono sin prefijo internacional. Ejemplo: &amp;quot;666777888&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 21:&amp;lt;/b&amp;gt; Nick. Ejemplo: &amp;quot;CocoZilla&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 22:&amp;lt;/b&amp;gt; Género. Deberá ser M para hombres y F para mujeres.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 23:&amp;lt;/b&amp;gt; Fecha de nacimiento. Deberá ser una fecha en formato inglés separado por /. Ejemplo: &amp;quot;1992/01/12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se expone un ejemplo siguiendo la maquetación expuesta en anteriores puntos.&lt;br /&gt;
&lt;br /&gt;
     cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;launchNickCenter&amp;quot;, [&amp;quot;58c17363e2de6&amp;quot;, &amp;quot;#ffffff&amp;quot;, &amp;quot;#f0f0f0&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#ebebeb&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#000000&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#f0f0f0&amp;quot;, &amp;quot;kevin&amp;quot;, &amp;quot;lancharro&amp;quot;, &amp;quot;user@domain.com&amp;quot;, &amp;quot;666777888&amp;quot;, &amp;quot;CocoZilla&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;1992/01/12&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Precarga_datos_cordova.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== CallBacks: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; cuenta con una serie de callbacks los cuales se pueden recoger en en las funciones implementadas successNickCenterCallback y errorNickCenterCallback que permiten al desarrollador saber qué parte del plugin se esta ejecutando y cuál es su resultado. A continuación se expondrán éstos y para que sirven.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterViewOpened&amp;lt;/b&amp;gt;: Notifica cuando la vista de registro se ha lanzado.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginViewOpened&amp;lt;/b&amp;gt;: Notifica cuando la vista del login se ha lanzado.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRescueViewOpened&amp;lt;/b&amp;gt;: Notifica cuando la vista de recuperación de contraseña se ha lanzado.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onError: Cadena de Error&amp;lt;/b&amp;gt;: Notificará cuando haya habido un error, normalmente se lanzará cuando el registro o el login hayan sido incorrectos, o cuando al recuperar la contraseña el email sea incorrecto. Se puede dar el caso de que de otro tipo de error como bien puede ser al conectarnos al sevidor.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onWarning: Cadena de Warning&amp;lt;/b&amp;gt;: Notificará de alguna advertencia al desarrollador.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onFinished&amp;lt;/b&amp;gt;: Notificará cuando la librería haya finalizado algun proceso. Inicio de sesión, registro o recuperación de contraseña correcto.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onSessionClosed&amp;lt;/b&amp;gt;: Notificará cuando se haya cerrado la sesión de NickCenter.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onActive&amp;lt;/b&amp;gt;: Notificará cuando detecte que NickCenter esta activa para la aplicación.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onInactive&amp;lt;/b&amp;gt;: Notificará cuando detecte que NickCenter esta inactiva para la aplicación.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterRegisterButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de registrarse en la vista de registro de usuario.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterLoginButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de inicio de sesión en la vista de registro de usuario.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterCloseButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de cerrar en la vista de registro de usuario.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterPerformed: Json de Usuario&amp;lt;/b&amp;gt;: Notificará cuando haya habido un registro correcto. Se mandará la información recogida del usuario en formato Json.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginPerformed: Json de Usuario&amp;lt;/b&amp;gt;: Notificará cuando haya habido un login correcto. Se mandará la información recogida del usuario en formato Json.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginLoginButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de inicio de sesión en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginRegisterButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de registrarse en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginRescueButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de recuperar contraseña en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginCloseButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de cerrar en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRescueRescueButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de recuperar contraseña en la vista de recuperar contraseña.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRescueCloseButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de cerrar en la vista de recuperar contraseña.&lt;/div&gt;</summary>
		<author><name>Kevin</name></author>
	</entry>
	<entry>
		<id>https://wiki.mobeleader.com/index.php?title=SDKs:NickCenter:Cordova:index&amp;diff=2471</id>
		<title>SDKs:NickCenter:Cordova:index</title>
		<link rel="alternate" type="text/html" href="https://wiki.mobeleader.com/index.php?title=SDKs:NickCenter:Cordova:index&amp;diff=2471"/>
		<updated>2018-11-20T14:39:48Z</updated>

		<summary type="html">&lt;p&gt;Kevin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= CÓMO AGREGAR EL PLUGIN NICKCENTER EN CORDOVA =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{:SDKs:NickCenter:Intro}}&lt;br /&gt;
&lt;br /&gt;
== VERSIONES SOPORTADAS ==&lt;br /&gt;
&lt;br /&gt;
Este Plugin soporta tanto Android como iOS. &lt;br /&gt;
&lt;br /&gt;
Para iOS soporta las versiones superiores a las &amp;lt;b&amp;gt;10.0&amp;lt;/b&amp;gt;, en caso de que detecte una versión inferior no se lanzará.&lt;br /&gt;
&lt;br /&gt;
Para Android soporta todas las versiones superiores a la &amp;lt;b&amp;gt;4.0&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:SDKs:NickCenter:PanelControl}}&lt;br /&gt;
&lt;br /&gt;
== PASOS A REALIZAR PARA LA INTALACIÓN DEL PLUGIN ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== INSTALACIÓN: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para instalar el Plugin, si queremos que funcione en iOS, primero tendremos que instalar el plugin cordova-plugin-cocoapod-support, de la siguiente manera:&lt;br /&gt;
      cordova plugin add cordova-plugin-cocoapod-support&lt;br /&gt;
y después instalar el plugin de Nickcenter de esta manera (si solo lo vamos a usar para android con este plugin es suficiente):&lt;br /&gt;
      cordova plugin add cordova-plugin-nickcenter&lt;br /&gt;
&lt;br /&gt;
Una vez ejecutados los dos comandos ya tendremos el plugin instalado.&lt;br /&gt;
&lt;br /&gt;
=== LANZAMIENTO: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Una vez configurada la instalación, lanzaremos en el momento donde queramos el código, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
       cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;launchNickCenter&amp;quot;, [&amp;quot;54e46801egh95&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los Argumentos enviados serán los siguientes:&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 1:&amp;lt;/b&amp;gt; Es el AppHash de la aplicación, el cual se puede obtener en el panel, como muestra la siguiente pantalla.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/Obtener_hash_app_14.png&lt;br /&gt;
&lt;br /&gt;
Por defecto las pantallas de &amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; presentan el siguiente formato:&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/nc_ios_default.jpeg&lt;br /&gt;
&lt;br /&gt;
Si desea modificar las pantallas para que sean lo más parecidas a su aplicación &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;NickCenter&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; deberá añadir más argumentos, en el siguiente orden (Estos Argumentos son completamente Opcionales) (Todos los colores deben ir en hexadecimal):&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 2:&amp;lt;/b&amp;gt; Determina el color de fondo de las pantallas. Ejemplo: &amp;quot;#ffffff&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 3:&amp;lt;/b&amp;gt; Determina el color de fondo de la cabecera de las pantallas. Ejemplo: &amp;quot;#f0f0f0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 4:&amp;lt;/b&amp;gt; Determina el color de la linea que separa la cabecera con el resto de la pantalla. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 5:&amp;lt;/b&amp;gt; Determina el color del texto de la cabecera de las pantallas. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 6:&amp;lt;/b&amp;gt; Determina el color de fondo de los textfields donde se ubican los campos de cada pantalla. Ejemplo: &amp;quot;#ebebeb&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 7:&amp;lt;/b&amp;gt; Determina el color del texto descriptivo de cada textfield. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 8:&amp;lt;/b&amp;gt; Determina el color del texto de los textfields donde se ubican los campos de cada pantalla. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 9:&amp;lt;/b&amp;gt; Determina el color de fondo de los botones de cada pantalla. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 10:&amp;lt;/b&amp;gt; Determina el color de fondo de los botones de cada pantalla cuando se ha hecho click en éstos. Ejemplo: &amp;quot;#000000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 11:&amp;lt;/b&amp;gt; Determina el color del texto de cada boton cuando no se ha hecho click en éstos. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 12:&amp;lt;/b&amp;gt; Determina el color del texto de cada botón cuando se ha hecho click en éstos. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 13:&amp;lt;/b&amp;gt; Determina el color del borde de los botones. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 14:&amp;lt;/b&amp;gt; Determina el color de la fuente de los textos de los terminos y condiciones. Ejemplo: &amp;quot;#000000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 15: (Solo para iOS)&amp;lt;/b&amp;gt; Determina el color de los botones activos en los términos y condiciones. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 16: (Solo para iOS)&amp;lt;/b&amp;gt; Determina el color de los botones inactivos en los términos y condiciones. Ejemplo: &amp;quot;#f0f0f0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se expone un ejemplo en el que se maqueta a gusto del desarrollador las pantallas de &amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;launchNickCenter&amp;quot;, [&amp;quot;hash_app&amp;quot;, &amp;quot;#ffffff&amp;quot;, &amp;quot;#f0f0f0&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#ebebeb&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#000000&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#000000&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#f0f0f0&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
Cabe destacar que en el caso de Android, Cordova pone los checkbox por defecto de color blanco, por lo que sí queremos que se vean deberemos usar un fondo de pantalla que no sea blanco.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/nc_cordova_colores.png&lt;br /&gt;
&lt;br /&gt;
=== COMPLETAR REGISTRO: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Una vez un usuario haya sido registrado en una de nuestras aplicaciones, cuando otra lance NickCenter, dicho usuario tan soló debera &amp;lt;b&amp;gt;logearse&amp;lt;/b&amp;gt; sin necesidad de tener que registrarse otra vez para ésta última aplicación. Se puede dar el caso de que al registrarte en la primera aplicación tán solo fuera necesario &amp;lt;b&amp;gt;email y contraseña&amp;lt;/b&amp;gt;, y que para la segunda aplicación fuera necesario registrarse con el &amp;lt;b&amp;gt;telefono&amp;lt;/b&amp;gt;, cuando este tipo de casos se den, al logearte en la segunda aplicación se abrirá una nueva vista para completar el registro. Una vez completado dicho registro se tratará como un login normal.&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/nc_ios_completar.jpeg&lt;br /&gt;
&lt;br /&gt;
=== FUNCIONES UTILES: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; está dotada de una función que permite al desarrollador cerrar la sesión ya iniciada por el usuario de manera que la siguiente vez que abra la aplicación y pase por donde se lanza la librería, el usuario deba volver a loguearse. Dicha funcion es :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;closeSession&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
    cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;closeNickCenterSession&amp;quot;, [&amp;quot;hash_app&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PRECARGA DE DATOS PARA EL REGISTRO: ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; está dotada de una serie de funciones que permiten al desarrollador precargar los datos del usuario a la hora de mostrarle la pantalla de registro. Si desea hacer uso de esta precarga deberá pasar más argumentos a la llamada de la librería ( todos estos argumentos son opcionales ) :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 17:&amp;lt;/b&amp;gt; Nombre. Ejemplo: &amp;quot;Kevin&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 18:&amp;lt;/b&amp;gt; Apellidos. Ejemplo: &amp;quot;Lancharro&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 19:&amp;lt;/b&amp;gt; Email. Deberá ser un email válido, se comprobará tanto el formato de la cadena como la validez de éste. Ejemplo: &amp;quot;user@domain.com&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 20:&amp;lt;/b&amp;gt; Teléfono. Deberá ser un teléfono sin prefijo internacional. Ejemplo: &amp;quot;666777888&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 21:&amp;lt;/b&amp;gt; Nick. Ejemplo: &amp;quot;CocoZilla&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 22:&amp;lt;/b&amp;gt; Género. Deberá ser M para hombres y F para mujeres.&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 23:&amp;lt;/b&amp;gt; Fecha de nacimiento. Deberá ser una fecha en formato inglés separado por /. Ejemplo: &amp;quot;1992/01/12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se expone un ejemplo siguiendo la maquetación expuesta en anteriores puntos.&lt;br /&gt;
&lt;br /&gt;
     cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;launchNickCenter&amp;quot;, [&amp;quot;58c17363e2de6&amp;quot;, &amp;quot;#ffffff&amp;quot;, &amp;quot;#f0f0f0&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#ebebeb&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#000000&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#f0f0f0&amp;quot;, &amp;quot;kevin&amp;quot;, &amp;quot;lancharro&amp;quot;, &amp;quot;user@domain.com&amp;quot;, &amp;quot;666777888&amp;quot;, &amp;quot;CocoZilla&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;1992/01/12&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
=== CallBacks: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; cuenta con una serie de callbacks los cuales se pueden recoger en en las funciones implementadas successNickCenterCallback y errorNickCenterCallback que permiten al desarrollador saber qué parte del plugin se esta ejecutando y cuál es su resultado. A continuación se expondrán éstos y para que sirven.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterViewOpened&amp;lt;/b&amp;gt;: Notifica cuando la vista de registro se ha lanzado.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginViewOpened&amp;lt;/b&amp;gt;: Notifica cuando la vista del login se ha lanzado.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRescueViewOpened&amp;lt;/b&amp;gt;: Notifica cuando la vista de recuperación de contraseña se ha lanzado.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onError: Cadena de Error&amp;lt;/b&amp;gt;: Notificará cuando haya habido un error, normalmente se lanzará cuando el registro o el login hayan sido incorrectos, o cuando al recuperar la contraseña el email sea incorrecto. Se puede dar el caso de que de otro tipo de error como bien puede ser al conectarnos al sevidor.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onWarning: Cadena de Warning&amp;lt;/b&amp;gt;: Notificará de alguna advertencia al desarrollador.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onFinished&amp;lt;/b&amp;gt;: Notificará cuando la librería haya finalizado algun proceso. Inicio de sesión, registro o recuperación de contraseña correcto.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onSessionClosed&amp;lt;/b&amp;gt;: Notificará cuando se haya cerrado la sesión de NickCenter.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onActive&amp;lt;/b&amp;gt;: Notificará cuando detecte que NickCenter esta activa para la aplicación.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onInactive&amp;lt;/b&amp;gt;: Notificará cuando detecte que NickCenter esta inactiva para la aplicación.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterRegisterButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de registrarse en la vista de registro de usuario.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterLoginButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de inicio de sesión en la vista de registro de usuario.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterCloseButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de cerrar en la vista de registro de usuario.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterPerformed: Json de Usuario&amp;lt;/b&amp;gt;: Notificará cuando haya habido un registro correcto. Se mandará la información recogida del usuario en formato Json.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginPerformed: Json de Usuario&amp;lt;/b&amp;gt;: Notificará cuando haya habido un login correcto. Se mandará la información recogida del usuario en formato Json.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginLoginButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de inicio de sesión en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginRegisterButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de registrarse en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginRescueButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de recuperar contraseña en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginCloseButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de cerrar en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRescueRescueButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de recuperar contraseña en la vista de recuperar contraseña.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRescueCloseButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de cerrar en la vista de recuperar contraseña.&lt;/div&gt;</summary>
		<author><name>Kevin</name></author>
	</entry>
	<entry>
		<id>https://wiki.mobeleader.com/index.php?title=SDKs:NickCenter:Cordova:index&amp;diff=2322</id>
		<title>SDKs:NickCenter:Cordova:index</title>
		<link rel="alternate" type="text/html" href="https://wiki.mobeleader.com/index.php?title=SDKs:NickCenter:Cordova:index&amp;diff=2322"/>
		<updated>2018-10-16T12:03:45Z</updated>

		<summary type="html">&lt;p&gt;Kevin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= CÓMO AGREGAR EL PLUGIN NICKCENTER EN CORDOVA =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{:SDKs:NickCenter:Intro}}&lt;br /&gt;
&lt;br /&gt;
== VERSIONES SOPORTADAS ==&lt;br /&gt;
&lt;br /&gt;
Este Plugin soporta tanto Android como iOS. &lt;br /&gt;
&lt;br /&gt;
Para iOS soporta las versiones superiores a las &amp;lt;b&amp;gt;10.0&amp;lt;/b&amp;gt;, en caso de que detecte una versión inferior no se lanzará.&lt;br /&gt;
&lt;br /&gt;
Para Android soporta todas las versiones superiores a la &amp;lt;b&amp;gt;4.0&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:SDKs:NickCenter:PanelControl}}&lt;br /&gt;
&lt;br /&gt;
== PASOS A REALIZAR PARA LA INTALACIÓN DEL PLUGIN ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== INSTALACIÓN: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para instalar el Plugin, si queremos que funcione en iOS, primero tendremos que instalar el plugin cordova-plugin-cocoapod-support, de la siguiente manera:&lt;br /&gt;
      cordova plugin add cordova-plugin-cocoapod-support&lt;br /&gt;
y después instalar el plugin de Nickcenter de esta manera (si solo lo vamos a usar para android con este plugin es suficiente):&lt;br /&gt;
      cordova plugin add cordova-plugin-nickcenter&lt;br /&gt;
&lt;br /&gt;
Una vez ejecutados los dos comandos ya tendremos el plugin instalado.&lt;br /&gt;
&lt;br /&gt;
=== LANZAMIENTO: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Una vez configurada la instalación, lanzaremos en el momento donde queramos el código, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
       cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;launchNickCenter&amp;quot;, [&amp;quot;54e46801egh95&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los Argumentos enviados serán los siguientes:&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 1:&amp;lt;/b&amp;gt; Es el AppHash de la aplicación, el cual se puede obtener en el panel, como muestra la siguiente pantalla.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/Obtener_hash_app_14.png&lt;br /&gt;
&lt;br /&gt;
Por defecto las pantallas de &amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; presentan el siguiente formato:&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/nc_ios_default.jpeg&lt;br /&gt;
&lt;br /&gt;
Si desea modificar las pantallas para que sean lo más parecidas a su aplicación &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;NickCenter&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; deberá añadir más argumentos, en el siguiente orden (Estos Argumentos son completamente Opcionales) (Todos los colores deben ir en hexadecimal):&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 2:&amp;lt;/b&amp;gt; Determina el color de fondo de las pantallas. Ejemplo: &amp;quot;#ffffff&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 3:&amp;lt;/b&amp;gt; Determina el color de fondo de la cabecera de las pantallas. Ejemplo: &amp;quot;#f0f0f0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 4:&amp;lt;/b&amp;gt; Determina el color de la linea que separa la cabecera con el resto de la pantalla. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 5:&amp;lt;/b&amp;gt; Determina el color del texto de la cabecera de las pantallas. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 6:&amp;lt;/b&amp;gt; Determina el color de fondo de los textfields donde se ubican los campos de cada pantalla. Ejemplo: &amp;quot;#ebebeb&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 7:&amp;lt;/b&amp;gt; Determina el color del texto descriptivo de cada textfield. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 8:&amp;lt;/b&amp;gt; Determina el color del texto de los textfields donde se ubican los campos de cada pantalla. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 9:&amp;lt;/b&amp;gt; Determina el color de fondo de los botones de cada pantalla. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 10:&amp;lt;/b&amp;gt; Determina el color de fondo de los botones de cada pantalla cuando se ha hecho click en éstos. Ejemplo: &amp;quot;#000000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 11:&amp;lt;/b&amp;gt; Determina el color del texto de cada boton cuando no se ha hecho click en éstos. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 12:&amp;lt;/b&amp;gt; Determina el color del texto de cada botón cuando se ha hecho click en éstos. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 13:&amp;lt;/b&amp;gt; Determina el color del borde de los botones. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 14:&amp;lt;/b&amp;gt; Determina el color de la fuente de los textos de los terminos y condiciones. Ejemplo: &amp;quot;#000000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 15: (Solo para iOS)&amp;lt;/b&amp;gt; Determina el color de los botones activos en los términos y condiciones. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 16: (Solo para iOS)&amp;lt;/b&amp;gt; Determina el color de los botones inactivos en los términos y condiciones. Ejemplo: &amp;quot;#f0f0f0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se expone un ejemplo en el que se maqueta a gusto del desarrollador las pantallas de &amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;launchNickCenter&amp;quot;, [&amp;quot;hash_app&amp;quot;, &amp;quot;#ffffff&amp;quot;, &amp;quot;#f0f0f0&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#ebebeb&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#000000&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#000000&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#f0f0f0&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
Cabe destacar que en el caso de Android, Cordova pone los checkbox por defecto de color blanco, por lo que sí queremos que se vean deberemos usar un fondo de pantalla que no sea blanco.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/nc_cordova_colores.png&lt;br /&gt;
&lt;br /&gt;
=== COMPLETAR REGISTRO: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Una vez un usuario haya sido registrado en una de nuestras aplicaciones, cuando otra lance NickCenter, dicho usuario tan soló debera &amp;lt;b&amp;gt;logearse&amp;lt;/b&amp;gt; sin necesidad de tener que registrarse otra vez para ésta última aplicación. Se puede dar el caso de que al registrarte en la primera aplicación tán solo fuera necesario &amp;lt;b&amp;gt;email y contraseña&amp;lt;/b&amp;gt;, y que para la segunda aplicación fuera necesario registrarse con el &amp;lt;b&amp;gt;telefono&amp;lt;/b&amp;gt;, cuando este tipo de casos se den, al logearte en la segunda aplicación se abrirá una nueva vista para completar el registro. Una vez completado dicho registro se tratará como un login normal.&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/nc_ios_completar.jpeg&lt;br /&gt;
&lt;br /&gt;
=== FUNCIONES UTILES: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; está dotada de una función que permite al desarrollador cerrar la sesión ya iniciada por el usuario de manera que la siguiente vez que abra la aplicación y pase por donde se lanza la librería, el usuario deba volver a loguearse. Dicha funcion es :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;closeSession&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
    cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;closeNickCenterSession&amp;quot;, [&amp;quot;hash_app&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
=== CallBacks: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; cuenta con una serie de callbacks los cuales se pueden recoger en en las funciones implementadas successNickCenterCallback y errorNickCenterCallback que permiten al desarrollador saber qué parte del plugin se esta ejecutando y cuál es su resultado. A continuación se expondrán éstos y para que sirven.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterViewOpened&amp;lt;/b&amp;gt;: Notifica cuando la vista de registro se ha lanzado.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginViewOpened&amp;lt;/b&amp;gt;: Notifica cuando la vista del login se ha lanzado.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRescueViewOpened&amp;lt;/b&amp;gt;: Notifica cuando la vista de recuperación de contraseña se ha lanzado.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onError: Cadena de Error&amp;lt;/b&amp;gt;: Notificará cuando haya habido un error, normalmente se lanzará cuando el registro o el login hayan sido incorrectos, o cuando al recuperar la contraseña el email sea incorrecto. Se puede dar el caso de que de otro tipo de error como bien puede ser al conectarnos al sevidor.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onWarning: Cadena de Warning&amp;lt;/b&amp;gt;: Notificará de alguna advertencia al desarrollador.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onFinished&amp;lt;/b&amp;gt;: Notificará cuando la librería haya finalizado algun proceso. Inicio de sesión, registro o recuperación de contraseña correcto.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onSessionClosed&amp;lt;/b&amp;gt;: Notificará cuando se haya cerrado la sesión de NickCenter.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onActive&amp;lt;/b&amp;gt;: Notificará cuando detecte que NickCenter esta activa para la aplicación.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onInactive&amp;lt;/b&amp;gt;: Notificará cuando detecte que NickCenter esta inactiva para la aplicación.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterRegisterButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de registrarse en la vista de registro de usuario.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterLoginButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de inicio de sesión en la vista de registro de usuario.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterCloseButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de cerrar en la vista de registro de usuario.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterPerformed: Json de Usuario&amp;lt;/b&amp;gt;: Notificará cuando haya habido un registro correcto. Se mandará la información recogida del usuario en formato Json.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginPerformed: Json de Usuario&amp;lt;/b&amp;gt;: Notificará cuando haya habido un login correcto. Se mandará la información recogida del usuario en formato Json.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginLoginButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de inicio de sesión en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginRegisterButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de registrarse en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginRescueButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de recuperar contraseña en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginCloseButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de cerrar en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRescueRescueButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de recuperar contraseña en la vista de recuperar contraseña.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRescueCloseButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de cerrar en la vista de recuperar contraseña.&lt;/div&gt;</summary>
		<author><name>Kevin</name></author>
	</entry>
	<entry>
		<id>https://wiki.mobeleader.com/index.php?title=SDKs:NickCenter:Cordova:index&amp;diff=2321</id>
		<title>SDKs:NickCenter:Cordova:index</title>
		<link rel="alternate" type="text/html" href="https://wiki.mobeleader.com/index.php?title=SDKs:NickCenter:Cordova:index&amp;diff=2321"/>
		<updated>2018-10-16T12:03:10Z</updated>

		<summary type="html">&lt;p&gt;Kevin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= CÓMO AGREGAR EL PLUGIN NICKCENTER EN CORDOVA =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{:SDKs:NickCenter:Intro}}&lt;br /&gt;
&lt;br /&gt;
== VERSIONES SOPORTADAS ==&lt;br /&gt;
&lt;br /&gt;
Este Plugin soporta tanto Android como iOS. &lt;br /&gt;
&lt;br /&gt;
Para iOS soporta las versiones superiores a las &amp;lt;b&amp;gt;10.0&amp;lt;/b&amp;gt;, en caso de que detecte una versión inferior no se lanzará.&lt;br /&gt;
&lt;br /&gt;
Para Android soporta todas las versiones superiores a la &amp;lt;b&amp;gt;4.0&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:SDKs:NickCenter:PanelControl}}&lt;br /&gt;
&lt;br /&gt;
== PASOS A REALIZAR PARA LA INTALACIÓN DEL PLUGIN ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== INSTALACIÓN: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para instalar el Plugin, si queremos que funcione en iOS, primero tendremos que instalar el plugin cordova-plugin-cocoapod-support, de la siguiente manera:&lt;br /&gt;
      cordova plugin add cordova-plugin-cocoapod-support&lt;br /&gt;
y después instalar el plugin de Nickcenter de esta manera (si solo lo vamos a usar para android con este plugin es suficiente):&lt;br /&gt;
      cordova plugin add cordova-plugin-nickcenter&lt;br /&gt;
&lt;br /&gt;
Una vez ejecutados los dos comandos ya tendremos el plugin instalado.&lt;br /&gt;
&lt;br /&gt;
=== LANZAMIENTO: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Una vez configurada la instalación, lanzaremos en el momento donde queramos el código, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
       cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;launchNickCenter&amp;quot;, [&amp;quot;54e46801egh95&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los Argumentos enviados serán los siguientes:&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 1:&amp;lt;/b&amp;gt; Es el AppHash de la aplicación, el cual se puede obtener en el panel, como muestra la siguiente pantalla.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/Obtener_hash_app_14.png&lt;br /&gt;
&lt;br /&gt;
Por defecto las pantallas de &amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; presentan el siguiente formato:&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/nc_ios_default.jpeg&lt;br /&gt;
&lt;br /&gt;
Si desea modificar las pantallas para que sean lo más parecidas a su aplicación &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;NickCenter&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; deberá añadir más argumentos, en el siguiente orden (Estos Argumentos son completamente Opcionales) (Todos los colores deben ir en hexadecimal):&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 2:&amp;lt;/b&amp;gt; Determina el color de fondo de las pantallas. Ejemplo: &amp;quot;#ffffff&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 3:&amp;lt;/b&amp;gt; Determina el color de fondo de la cabecera de las pantallas. Ejemplo: &amp;quot;#f0f0f0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 4:&amp;lt;/b&amp;gt; Determina el color de la linea que separa la cabecera con el resto de la pantalla. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 5:&amp;lt;/b&amp;gt; Determina el color del texto de la cabecera de las pantallas. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 6:&amp;lt;/b&amp;gt; Determina el color de fondo de los textfields donde se ubican los campos de cada pantalla. Ejemplo: &amp;quot;#ebebeb&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 7:&amp;lt;/b&amp;gt; Determina el color del texto descriptivo de cada textfield. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 8:&amp;lt;/b&amp;gt; Determina el color del texto de los textfields donde se ubican los campos de cada pantalla. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 9:&amp;lt;/b&amp;gt; Determina el color de fondo de los botones de cada pantalla. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 10:&amp;lt;/b&amp;gt; Determina el color de fondo de los botones de cada pantalla cuando se ha hecho click en éstos. Ejemplo: &amp;quot;#000000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 11:&amp;lt;/b&amp;gt; Determina el color del texto de cada boton cuando no se ha hecho click en éstos. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 12:&amp;lt;/b&amp;gt; Determina el color del texto de cada botón cuando se ha hecho click en éstos. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 13:&amp;lt;/b&amp;gt; Determina el color del borde de los botones. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 14:&amp;lt;/b&amp;gt; Determina el color de la fuente de los textos de los terminos y condiciones. Ejemplo: &amp;quot;#000000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 15: (Solo para iOS)&amp;lt;/b&amp;gt; Determina el color de los botones activos en los términos y condiciones. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 16: (Solo para iOS)&amp;lt;/b&amp;gt; Determina el color de los botones inactivos en los términos y condiciones. Ejemplo: &amp;quot;#f0f0f0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se expone un ejemplo en el que se maqueta a gusto del desarrollador las pantallas de &amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;launchNickCenter&amp;quot;, [&amp;quot;hash_app&amp;quot;, &amp;quot;#ffffff&amp;quot;, &amp;quot;#f0f0f0&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#ebebeb&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#000000&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#000000&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#f0f0f0&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
Cabe destacar que en el caso de Android, Cordova pone los checkbox por defecto de color blanco, por lo que sí queremos que se vean deberemos usar un fondo de pantalla que no sea blanco.&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/nc_cordova_colores.png&lt;br /&gt;
&lt;br /&gt;
=== COMPLETAR REGISTRO: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Una vez un usuario haya sido registrado en una de nuestras aplicaciones, cuando otra lance NickCenter, dicho usuario tan soló debera &amp;lt;b&amp;gt;logearse&amp;lt;/b&amp;gt; sin necesidad de tener que registrarse otra vez para ésta última aplicación. Se puede dar el caso de que al registrarte en la primera aplicación tán solo fuera necesario &amp;lt;b&amp;gt;email y contraseña&amp;lt;/b&amp;gt;, y que para la segunda aplicación fuera necesario registrarse con el &amp;lt;b&amp;gt;telefono&amp;lt;/b&amp;gt;, cuando este tipo de casos se den, al logearte en la segunda aplicación se abrirá una nueva vista para completar el registro. Una vez completado dicho registro se tratará como un login normal.&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/nc_ios_completar.jpeg&lt;br /&gt;
&lt;br /&gt;
=== FUNCIONES UTILES: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; está dotada de una función que permite al desarrollador cerrar la sesión ya iniciada por el usuario de manera que la siguiente vez que abra la aplicación y pase por donde se lanza la librería, el usuario deba volver a loguearse. Dicha funcion es :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;closeSession&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
    cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;closeNickCenterSession&amp;quot;, [&amp;quot;hash_app&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
=== CallBacks: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; cuenta con una serie de callbacks los cuales se pueden recoger en en las funciones implementadas successNickCenterCallback y errorNickCenterCallback que permiten al desarrollador saber qué parte del plugin se esta ejecutando y cuál es su resultado. A continuación se expondrán éstos y para que sirven.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterViewOpened&amp;lt;/b&amp;gt;: Notifica cuando la vista de registro se ha lanzado.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginViewOpened&amp;lt;/b&amp;gt;: Notifica cuando la vista del login se ha lanzado.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRescueViewOpened&amp;lt;/b&amp;gt;: Notifica cuando la vista de recuperación de contraseña se ha lanzado.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onError: Cadena de Error&amp;lt;/b&amp;gt;: Notificará cuando haya habido un error, normalmente se lanzará cuando el registro o el login hayan sido incorrectos, o cuando al recuperar la contraseña el email sea incorrecto. Se puede dar el caso de que de otro tipo de error como bien puede ser al conectarnos al sevidor.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onWarning: Cadena de Warning&amp;lt;/b&amp;gt;: Notificará de alguna advertencia al desarrollador.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onFinished&amp;lt;/b&amp;gt;: Notificará cuando la librería haya finalizado algun proceso. Inicio de sesión, registro o recuperación de contraseña correcto.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onSessionClosed&amp;lt;/b&amp;gt;: Notificará cuando se haya cerrado la sesión de NickCenter.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onActive&amp;lt;/b&amp;gt;: Notificará cuando detecte que NickCenter esta activa para la aplicación.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onInactive&amp;lt;/b&amp;gt;: Notificará cuando detecte que NickCenter esta inactiva para la aplicación.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterRegisterButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de registrarse en la vista de registro de usuario.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterLoginButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de inicio de sesión en la vista de registro de usuario.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterCloseButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de cerrar en la vista de registro de usuario.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterPerformed: Json de Usuario&amp;lt;/b&amp;gt;: Notificará cuando haya habido un registro correcto. Se mandará la información recogida del usuario en formato Json.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginPerformed: Json de Usuario&amp;lt;/b&amp;gt;: Notificará cuando haya habido un login correcto. Se mandará la información recogida del usuario en formato Json.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginLoginButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de inicio de sesión en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginRegisterButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de registrarse en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginRescueButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de recuperar contraseña en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginCloseButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de cerrar en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRescueRescueButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de recuperar contraseña en la vista de recuperar contraseña.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRescueCloseButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de cerrar en la vista de recuperar contraseña.&lt;/div&gt;</summary>
		<author><name>Kevin</name></author>
	</entry>
	<entry>
		<id>https://wiki.mobeleader.com/index.php?title=SDKs:NickCenter:Cordova:index&amp;diff=2320</id>
		<title>SDKs:NickCenter:Cordova:index</title>
		<link rel="alternate" type="text/html" href="https://wiki.mobeleader.com/index.php?title=SDKs:NickCenter:Cordova:index&amp;diff=2320"/>
		<updated>2018-10-16T11:05:28Z</updated>

		<summary type="html">&lt;p&gt;Kevin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= CÓMO AGREGAR EL PLUGIN NICKCENTER EN CORDOVA =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{:SDKs:NickCenter:Intro}}&lt;br /&gt;
&lt;br /&gt;
== VERSIONES SOPORTADAS ==&lt;br /&gt;
&lt;br /&gt;
Este Plugin soporta tanto Android como iOS. &lt;br /&gt;
&lt;br /&gt;
Para iOS soporta las versiones superiores a las &amp;lt;b&amp;gt;10.0&amp;lt;/b&amp;gt;, en caso de que detecte una versión inferior no se lanzará.&lt;br /&gt;
&lt;br /&gt;
Para Android soporta todas las versiones superiores a la &amp;lt;b&amp;gt;4.0&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:SDKs:NickCenter:PanelControl}}&lt;br /&gt;
&lt;br /&gt;
== PASOS A REALIZAR PARA LA INTALACIÓN DEL PLUGIN ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== INSTALACIÓN: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para instalar el Plugin, si queremos que funcione en iOS, primero tendremos que instalar el plugin cordova-plugin-cocoapod-support, de la siguiente manera:&lt;br /&gt;
      cordova plugin add cordova-plugin-cocoapod-support&lt;br /&gt;
y después instalar el plugin de Nickcenter de esta manera (si solo lo vamos a usar para android con este plugin es suficiente):&lt;br /&gt;
      cordova plugin add cordova-plugin-nickcenter&lt;br /&gt;
&lt;br /&gt;
Una vez ejecutados los dos comandos ya tendremos el plugin instalado.&lt;br /&gt;
&lt;br /&gt;
=== LANZAMIENTO: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Una vez configurada la instalación, lanzaremos en el momento donde queramos el código, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
       cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;launchNickCenter&amp;quot;, [&amp;quot;54e46801egh95&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los Argumentos enviados serán los siguientes:&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 1:&amp;lt;/b&amp;gt; Es el AppHash de la aplicación, el cual se puede obtener en el panel, como muestra la siguiente pantalla.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/Obtener_hash_app_14.png&lt;br /&gt;
&lt;br /&gt;
Por defecto las pantallas de &amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; presentan el siguiente formato:&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/nc_ios_default.jpeg&lt;br /&gt;
&lt;br /&gt;
Si desea modificar las pantallas para que sean lo más parecidas a su aplicación &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;NickCenter&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; deberá añadir más argumentos, en el siguiente orden (Estos Argumentos son completamente Opcionales) (Todos los colores deben ir en hexadecimal):&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 2:&amp;lt;/b&amp;gt; Determina el color de fondo de las pantallas. Ejemplo: &amp;quot;#ffffff&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 3:&amp;lt;/b&amp;gt; Determina el color de fondo de la cabecera de las pantallas. Ejemplo: &amp;quot;#f0f0f0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 4:&amp;lt;/b&amp;gt; Determina el color de la linea que separa la cabecera con el resto de la pantalla. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 5:&amp;lt;/b&amp;gt; Determina el color del texto de la cabecera de las pantallas. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 6:&amp;lt;/b&amp;gt; Determina el color de fondo de los textfields donde se ubican los campos de cada pantalla. Ejemplo: &amp;quot;#ebebeb&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 7:&amp;lt;/b&amp;gt; Determina el color del texto descriptivo de cada textfield. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 8:&amp;lt;/b&amp;gt; Determina el color del texto de los textfields donde se ubican los campos de cada pantalla. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 9:&amp;lt;/b&amp;gt; Determina el color de fondo de los botones de cada pantalla. Ejemplo: &amp;quot;#7b7b7b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 10:&amp;lt;/b&amp;gt; Determina el color de fondo de los botones de cada pantalla cuando se ha hecho click en éstos. Ejemplo: &amp;quot;#000000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 11:&amp;lt;/b&amp;gt; Determina el color del texto de cada boton cuando no se ha hecho click en éstos. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 12:&amp;lt;/b&amp;gt; Determina el color del texto de cada botón cuando se ha hecho click en éstos. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 13:&amp;lt;/b&amp;gt; Determina el color del borde de los botones. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 14:&amp;lt;/b&amp;gt; Determina el color de la fuente de los textos de los terminos y condiciones. Ejemplo: &amp;quot;#000000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 15: (Solo para iOS)&amp;lt;/b&amp;gt; Determina el color de los botones activos en los términos y condiciones. Ejemplo: &amp;quot;#01e3fe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Argumento 16: (Solo para iOS)&amp;lt;/b&amp;gt; Determina el color de los botones inactivos en los términos y condiciones. Ejemplo: &amp;quot;#f0f0f0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se expone un ejemplo en el que se maqueta a gusto del desarrollador las pantallas de &amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;launchNickCenter&amp;quot;, [&amp;quot;hash_app&amp;quot;, &amp;quot;#ffffff&amp;quot;, &amp;quot;#f0f0f0&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#ebebeb&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#7b7b7b&amp;quot;, &amp;quot;#000000&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#000000&amp;quot;, &amp;quot;#01e3fe&amp;quot;, &amp;quot;#f0f0f0&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/nc_cordova_colores.png&lt;br /&gt;
&lt;br /&gt;
=== COMPLETAR REGISTRO: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Una vez un usuario haya sido registrado en una de nuestras aplicaciones, cuando otra lance NickCenter, dicho usuario tan soló debera &amp;lt;b&amp;gt;logearse&amp;lt;/b&amp;gt; sin necesidad de tener que registrarse otra vez para ésta última aplicación. Se puede dar el caso de que al registrarte en la primera aplicación tán solo fuera necesario &amp;lt;b&amp;gt;email y contraseña&amp;lt;/b&amp;gt;, y que para la segunda aplicación fuera necesario registrarse con el &amp;lt;b&amp;gt;telefono&amp;lt;/b&amp;gt;, cuando este tipo de casos se den, al logearte en la segunda aplicación se abrirá una nueva vista para completar el registro. Una vez completado dicho registro se tratará como un login normal.&lt;br /&gt;
&lt;br /&gt;
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/NickCenter/nc_ios_completar.jpeg&lt;br /&gt;
&lt;br /&gt;
=== FUNCIONES UTILES: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; está dotada de una función que permite al desarrollador cerrar la sesión ya iniciada por el usuario de manera que la siguiente vez que abra la aplicación y pase por donde se lanza la librería, el usuario deba volver a loguearse. Dicha funcion es :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;closeSession&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
    cordova.exec(successNickCenterCallback, errorNickCenterCallback,  &amp;quot;nickcenter&amp;quot;,  &amp;quot;closeNickCenterSession&amp;quot;, [&amp;quot;hash_app&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
=== CallBacks: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NickCenter&amp;lt;/b&amp;gt; cuenta con una serie de callbacks los cuales se pueden recoger en en las funciones implementadas successNickCenterCallback y errorNickCenterCallback que permiten al desarrollador saber qué parte del plugin se esta ejecutando y cuál es su resultado. A continuación se expondrán éstos y para que sirven.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterViewOpened&amp;lt;/b&amp;gt;: Notifica cuando la vista de registro se ha lanzado.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginViewOpened&amp;lt;/b&amp;gt;: Notifica cuando la vista del login se ha lanzado.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRescueViewOpened&amp;lt;/b&amp;gt;: Notifica cuando la vista de recuperación de contraseña se ha lanzado.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onError: Cadena de Error&amp;lt;/b&amp;gt;: Notificará cuando haya habido un error, normalmente se lanzará cuando el registro o el login hayan sido incorrectos, o cuando al recuperar la contraseña el email sea incorrecto. Se puede dar el caso de que de otro tipo de error como bien puede ser al conectarnos al sevidor.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onWarning: Cadena de Warning&amp;lt;/b&amp;gt;: Notificará de alguna advertencia al desarrollador.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onFinished&amp;lt;/b&amp;gt;: Notificará cuando la librería haya finalizado algun proceso. Inicio de sesión, registro o recuperación de contraseña correcto.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onSessionClosed&amp;lt;/b&amp;gt;: Notificará cuando se haya cerrado la sesión de NickCenter.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onActive&amp;lt;/b&amp;gt;: Notificará cuando detecte que NickCenter esta activa para la aplicación.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onInactive&amp;lt;/b&amp;gt;: Notificará cuando detecte que NickCenter esta inactiva para la aplicación.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterRegisterButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de registrarse en la vista de registro de usuario.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterLoginButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de inicio de sesión en la vista de registro de usuario.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterCloseButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de cerrar en la vista de registro de usuario.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRegisterPerformed: Json de Usuario&amp;lt;/b&amp;gt;: Notificará cuando haya habido un registro correcto. Se mandará la información recogida del usuario en formato Json.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginPerformed: Json de Usuario&amp;lt;/b&amp;gt;: Notificará cuando haya habido un login correcto. Se mandará la información recogida del usuario en formato Json.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginLoginButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de inicio de sesión en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginRegisterButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de registrarse en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginRescueButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de recuperar contraseña en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onLoginCloseButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de cerrar en la vista de inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRescueRescueButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de recuperar contraseña en la vista de recuperar contraseña.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;onRescueCloseButtonClicked&amp;lt;/b&amp;gt;: Notificará cuando se haga click en el botón de cerrar en la vista de recuperar contraseña.&lt;/div&gt;</summary>
		<author><name>Kevin</name></author>
	</entry>
	<entry>
		<id>https://wiki.mobeleader.com/index.php?title=P%C3%A1gina_principal&amp;diff=2226</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.mobeleader.com/index.php?title=P%C3%A1gina_principal&amp;diff=2226"/>
		<updated>2018-09-25T10:40:51Z</updated>

		<summary type="html">&lt;p&gt;Kevin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Librerias:index|Librerías]]&lt;br /&gt;
* [[Panel:Anuncios:Anunciantes|Anuncios para anunciantes]]&lt;br /&gt;
* Bases de Datos&lt;br /&gt;
** [[BBDDs:AltasYBajas|Webservice Altas y Bajas]]&lt;br /&gt;
**[[Guía eMailing y BBDD]]&lt;br /&gt;
**[[Email 360 - Amazon SES]]&lt;br /&gt;
* [[Panel:Desarrolladores:AppExchange|App Exchange]]&lt;br /&gt;
* [[Documentación_Webservice_NickCenter|Documentación Webservice NickCenter - Manual de Usuario]]&lt;br /&gt;
* [[docu_push_exchange|Documentación Push Api Exchange - Manual de Usuario]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Ayuda de wikimedia ==&lt;br /&gt;
&lt;br /&gt;
Consulta la [https://meta.wikimedia.org/wiki/Help:Contents/es guía del usuario] para obtener información sobre el uso del software wiki.&lt;br /&gt;
&lt;br /&gt;
== Primeros pasos ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista de ajustes de configuración]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Manual:FAQ/es Preguntas frecuentes sobre MediaWiki]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correo de anuncios de publicación de MediaWiki]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Traducir MediaWiki en tu idioma]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Aprende cómo combatir el spam en tu wiki]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kevin</name></author>
	</entry>
	<entry>
		<id>https://wiki.mobeleader.com/index.php?title=Docu_push_exchange&amp;diff=2225</id>
		<title>Docu push exchange</title>
		<link rel="alternate" type="text/html" href="https://wiki.mobeleader.com/index.php?title=Docu_push_exchange&amp;diff=2225"/>
		<updated>2018-09-25T10:36:30Z</updated>

		<summary type="html">&lt;p&gt;Kevin: /* Campos Obligatorios y No Obligatorios para las notificaciones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introducción=&lt;br /&gt;
En este documento se va a mostrar como ha de ser el contenido que se mande al api-xchange de Mobeleader para realizar las distintas acciones que ésta nos permite. Se expondrá brevemente como ha de realizarse la conexión a dicha API, como han de ser los campos obligatorios que han de ir para todos los casos y a continuación se procederá a tratar todos los casos con ejemplos para un mayor entendimiento.&lt;br /&gt;
&lt;br /&gt;
=Conectándonos a la API=&lt;br /&gt;
Lo primero que deberemos hacer es solicitar el token necesario para la conexion a Mobeleader. Dicho token es un identificador único para cada usuario desarrollador. Una vez obtenido dicho token procederemos a hacer una breve prueba de conexión para comprobar que tenemos acceso a la API. En dicha prueba haremos uso de la tarea &#039;&#039;&#039;“ping”&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;ping&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Conexion_ping.png|center]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
En la imagen vemos como ha de ser el código necesario para realizar dicha prueba y el resultado transformado a un array. Si la posición del &#039;&#039;&#039;responsecode&#039;&#039;&#039; es &#039;&#039;&#039;“OK”&#039;&#039;&#039; significa que todo ha ido correctamente y en la posición &#039;&#039;&#039;data&#039;&#039;&#039; deberemos ver &#039;&#039;&#039;“pong”&#039;&#039;&#039;. Mientras esta prueba no de este resultado no podremos hacer ninguna acción más sobre la API.&lt;br /&gt;
&lt;br /&gt;
=Campos Obligatorios y No Obligatorios para las notificaciones=&lt;br /&gt;
Para generar notificaciones desde nuestro sistema, en la conexión con la API deberá ir especificada la tarea &#039;&#039;&#039;“setPush”&#039;&#039;&#039;, junto un array de datos con una serie de campos.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Independientemente del SO al que la notificación irá, hay unos campos que &#039;&#039;&#039;son obligatorios&#039;&#039;&#039;; son los siguientes:&lt;br /&gt;
#&#039;&#039;&#039;appHash:&#039;&#039;&#039; contendrá el hash autogenerado por el panel Mobeleader de la aplicación registrada.&lt;br /&gt;
#&#039;&#039;&#039;terminalTokens:&#039;&#039;&#039; este campo podrá tener más de un formato, de manera que los dispositivos que reciban la notificación puedan ser diferentes.&lt;br /&gt;
#*En caso de &#039;&#039;&#039;tratarse de un array&#039;&#039;&#039;, se mandará la notificación a todos los tokens de dicho array.&lt;br /&gt;
#*En caso de &#039;&#039;&#039;no ser un  array&#039;&#039;&#039;, podrá contener lo siguiente:&lt;br /&gt;
##&#039;&#039;&#039;all:&#039;&#039;&#039; En este caso se notificará a todos los dispositivos que estén registrados en la aplicación sin tener en cuenta el SO.&lt;br /&gt;
##&#039;&#039;&#039;onlyAndroid:&#039;&#039;&#039; Solo se notificará a los terminales con &#039;&#039;&#039;SO Android&#039;&#039;&#039; que estén registrados en la aplicación.&lt;br /&gt;
##&#039;&#039;&#039;onlyIOS:&#039;&#039;&#039; Solo se notificará a los terminales con &#039;&#039;&#039;SO IOs&#039;&#039;&#039; que estén registrados en la aplicación.&lt;br /&gt;
##&#039;&#039;&#039;Un token de un dispositivo en concreto,&#039;&#039;&#039; de manera que solo se le notifique a éste.&lt;br /&gt;
#&#039;&#039;&#039;message:&#039;&#039;&#039; contendrá el texto de la notificación.&lt;br /&gt;
#&#039;&#039;&#039;type:&#039;&#039;&#039; contendrá el tipo de notificación pudiendo ser este de de diversa índole.&lt;br /&gt;
#*&#039;&#039;&#039;normal:&#039;&#039;&#039; este tipo será el más común, el dispositivo recibirá la notificación y no se hará mas con ésta.&lt;br /&gt;
#*&#039;&#039;&#039;openApp:&#039;&#039;&#039; este tipo hará que al hacer click sobre la notificación se abra la aplicación encargada de mostrar dicha notificación.&lt;br /&gt;
#*&#039;&#039;&#039;openUrl:&#039;&#039;&#039; este tipo hará que al hacer click sobre la notificación se abra una URL especificada en otro campo que veremos más adelante.&lt;br /&gt;
#*&#039;&#039;&#039;openAppWithextras:&#039;&#039;&#039; este tipo hará lo mismo que el &#039;&#039;&#039;“openApp”&#039;&#039;&#039; pudiendo ademas añadir hasta cinco variables extra para poder tratarlas a nuestro gusto en la aplicación. Cabe destacar que este tipo de notificación, nos permitirá hacer uso de otro campo no obligatorio que más adelante trataremos, el cual se llama &#039;&#039;&#039;&amp;quot;customType”&#039;&#039;&#039; y nos permitirá lanzar notificaciones &#039;&#039;&#039;“personalizadas”&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Una vez vistos los campos obligatorios, a continuación se expondrán todos los &#039;&#039;&#039;campos no obligatorios&#039;&#039;&#039; que darán forma a las notificaciones:&lt;br /&gt;
#&#039;&#039;&#039;tittle:&#039;&#039;&#039; contendrá el texto del título que se mostrara junto con el mensaje de la notificación.&lt;br /&gt;
#&#039;&#039;&#039;sendingId:&#039;&#039;&#039; en caso de querer lanzar una notificación para muchos terminales, como hemos expuesto en los campos obligatorios, inicialmente el campo &#039;&#039;&#039;”terminalTokens&amp;quot;&#039;&#039;&#039; deberá ser un array con dichos terminales. Debido a que la API no puede admitir un número ilimitado de tokens a la vez, deberemos &#039;&#039;&#039;segmentar&#039;&#039;&#039; dicho array en varios más pequeños y hacer tantos &#039;&#039;&#039;“setPush”&#039;&#039;&#039; como sean necesarios hasta finalizar con el número de dispositivos a notificar. Cada vez que nos conectemos a la API para hacer un &#039;&#039;&#039;“setPush”&#039;&#039;&#039; y generar una notificación, dicha conexión nos devolverá un JSON en el cual hay un campo denominado &#039;&#039;&#039;“sendingId”&#039;&#039;&#039; con el ID autonumérico generado en nuestro sistema para ese envío push. De ésta manera, si se recoge dicho ID y se pasa como campo en la posición &#039;&#039;&#039;“sendingId”&#039;&#039;&#039;, los siguientes tokens que se manden en el &#039;&#039;&#039;”terminalTokens”&#039;&#039;&#039; irán asociados al primer envío realizado.&lt;br /&gt;
#&#039;&#039;&#039;sandbox:&#039;&#039;&#039; este campo solo se usará cuando se vaya a notificar a algún dispositivo con &#039;&#039;&#039;SO iOs&#039;&#039;&#039;. Contendrá “yes” en caso de que dicho dispositivo este en el servidor de desarrollo de Apple, y un “no” en caso de que dicho dispositivo este en el servidor de producción de Apple.&lt;br /&gt;
#&#039;&#039;&#039;isTest:&#039;&#039;&#039; al igual que en el campo del &#039;&#039;&#039;“sandbox”&#039;&#039;&#039;, contendrá “yes” o “no” dependiendo de si el dispositivo esta en el servidor de desarrollo o el de producción de Apple.&lt;br /&gt;
#&#039;&#039;&#039;background:&#039;&#039;&#039; este campo solo irá en caso de ir a algún dispositivo que tenga &#039;&#039;&#039;SO iOs&#039;&#039;&#039;. Contendrá “yes” o “no”. En caso de ser afirmativo la notificación se mostrará sin hacer ruido ni vibrar. Para el caso de iOs esto generará un alert vació con el &#039;&#039;&#039;content-available a 1&#039;&#039;&#039;.&lt;br /&gt;
#&#039;&#039;&#039;silent:&#039;&#039;&#039; Contendrá “yes” o “no”. En caso de ser afirmativo la notificación no se mostrará pero si lanzará el evento de la librería push encargado de escuchar si se ha recibido una notificación o no. De ésta manera podremos lanzar notificaciones que no se muestren, pero si hagan algo por detrás en la APP al recibirla. Para el caso de Android solo se usará este campo cuando el &#039;&#039;&#039;“type”&#039;&#039;&#039; de la notificación sea &#039;&#039;&#039;“openAppWithExtras”&#039;&#039;&#039; y se haga uso del campo no obligatorio &#039;&#039;&#039;“customType”&#039;&#039;&#039;. Para el caso de iOs esto generará un alert vació con el &#039;&#039;&#039;content-available a 1&#039;&#039;&#039; por defecto, pudiendo ser modificado por el siguiente campo que se expone a continuación ( &#039;&#039;&#039;silentNumber&#039;&#039;&#039; ). Como en el caso de Android esto solo tendrá sentido para las notificaciones de &#039;&#039;&#039;“type”&#039;&#039;&#039;  &#039;&#039;&#039;“openAppWithExtras”&#039;&#039;&#039; , puesto que al no mostrar nada, se usarán para hacer cosas por detrás mediante los campos no obligatorios &#039;&#039;&#039;external1, external2, external3, external4 y external5&#039;&#039;&#039;. A diferencia de Android, en iOs se podrá usar con &#039;&#039;&#039;”customType”&#039;&#039;&#039; o sin el.&lt;br /&gt;
#&#039;&#039;&#039;silentNumber:&#039;&#039;&#039; este campo solo se usará para &#039;&#039;&#039;SO iOs&#039;&#039;&#039;. Es el número que aparecerá en el &#039;&#039;&#039;content-available&#039;&#039;&#039; en caso de que el campo &#039;&#039;&#039;silent&#039;&#039;&#039; sea &#039;&#039;&#039;&amp;quot;yes&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
#&#039;&#039;&#039;customType:&#039;&#039;&#039; contendrá el texto del tipo de notificación personalizada que cada uno cree. Éste campo solo se podrá usar si previamente en el campo obligatorio &#039;&#039;&#039;“type”&#039;&#039;&#039; se ha puesto &#039;&#039;&#039;“openAppWithExtras”&#039;&#039;&#039;.&lt;br /&gt;
#&#039;&#039;&#039;badge:&#039;&#039;&#039; este campo será el número que se mostrará junto con la notificación en los dispositivos &#039;&#039;&#039;SO iOs&#039;&#039;&#039;. A partir de iOs 10 las notificaciones &#039;&#039;&#039;no&#039;&#039;&#039; levantan la aplicación en caso de estar background, por lo que esto generará un &#039;&#039;&#039;content-available&#039;&#039;&#039; con el fin de despertar la aplicación y poder actualizar el icono de notificaciones pendientes en ésta.&lt;br /&gt;
#&#039;&#039;&#039;broadcast:&#039;&#039;&#039; esta variable solo será útil para dispositivos con &#039;&#039;&#039;SO Android&#039;&#039;&#039;, contendrá el nombre de la clase instanciada en su aplicación para que se active al recibir la notificación.&lt;br /&gt;
#&#039;&#039;&#039;direct:&#039;&#039;&#039; contendra &amp;quot;yes&amp;quot; o &amp;quot;no&amp;quot;. En caso de ser afirmativo las notificaciones se enviarán al instante no pudiendo programarlas.&lt;br /&gt;
#&#039;&#039;&#039;whenSend:&#039;&#039;&#039; contendrá “immediately”, “programmatically” o “geolocation”. En caso de ser immediately el campo &#039;&#039;&#039;“direct”&#039;&#039;&#039; previamente descrito deberá ser &#039;&#039;&#039;“yes”&#039;&#039;&#039;. En caso de ser “programmatically” o “geolocation” el  campo &#039;&#039;&#039;“direct”&#039;&#039;&#039; previamente descrito deberá ser &#039;&#039;&#039;“no”&#039;&#039;&#039;, ademas el envío se programará según los siguientes campos no obligatorios que se le pase.&lt;br /&gt;
#*&#039;&#039;&#039;Programmatically:&#039;&#039;&#039; cuando la notificación  se quiera programar para una fecha en concreto , deberán existir los siguientes campos no obligatorios:&lt;br /&gt;
##&#039;&#039;&#039;programmaticallyTime:&#039;&#039;&#039; contendrá la fecha en &#039;&#039;&#039;UNIXTIMESTAMP&#039;&#039;&#039; en la que se lanzará la notificación, si se usa este campo no obligatorio no deberemos usar los siguientes.&lt;br /&gt;
##&#039;&#039;&#039;programmaticallyCronMinutes:&#039;&#039;&#039; ( FUNCIONALIDAD NO DISPONIBLE )&lt;br /&gt;
##&#039;&#039;&#039;programmaticallyCronHours:&#039;&#039;&#039; ( FUNCIONALIDAD NO DISPONIBLE )&lt;br /&gt;
##&#039;&#039;&#039;programmaticallyCronDays:&#039;&#039;&#039; ( FUNCIONALIDAD NO DISPONIBLE )&lt;br /&gt;
##&#039;&#039;&#039;programmaticallyCronMonths:&#039;&#039;&#039; ( FUNCIONALIDAD NO DISPONIBLE )&lt;br /&gt;
#*&#039;&#039;&#039;Geolocation:&#039;&#039;&#039; cuando se quiera programar por geolocalización una notificación, deberán existir los siguientes campos no obligatorios:&lt;br /&gt;
##&#039;&#039;&#039;geolocationCoordinates:&#039;&#039;&#039; será un array en el que la posición &#039;&#039;&#039;cero&#039;&#039;&#039; será la &#039;&#039;&#039;latitud&#039;&#039;&#039; y la &#039;&#039;&#039;uno&#039;&#039;&#039; la &#039;&#039;&#039;longitud&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;geolocationMeters:&#039;&#039;&#039; contendrá los metros a los que hemos de estar de las coordenadas especificadas para que lance la notificación.&lt;br /&gt;
#&#039;&#039;&#039;languaje:&#039;&#039;&#039; contendrá el idioma del dispositivo. &#039;&#039;&#039;Ejemplo: es&#039;&#039;&#039;.&lt;br /&gt;
#&#039;&#039;&#039;country:&#039;&#039;&#039; contendrá el país del dispositivo. &#039;&#039;&#039;Ejemplo: ES&#039;&#039;&#039;.&lt;br /&gt;
#&#039;&#039;&#039;deviceType:&#039;&#039;&#039; contendrá el tipo de dispositivo al que se le mandará la notificación pudiendo ser:&lt;br /&gt;
#*&#039;&#039;&#039;Para Android:&#039;&#039;&#039;&lt;br /&gt;
##&#039;&#039;&#039;movil&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;tableta&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;reloj&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;tv&#039;&#039;&#039;.&lt;br /&gt;
#*&#039;&#039;&#039;Para iOs:&#039;&#039;&#039;&lt;br /&gt;
##&#039;&#039;&#039;iphone&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;ipad&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;iwatch&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;appletv&#039;&#039;&#039;.&lt;br /&gt;
#&#039;&#039;&#039;appVersion:&#039;&#039;&#039; contendrá la versión de la aplicación a la que esta dirigida la notificación. &#039;&#039;&#039;Ejemplo: 1.0.1&#039;&#039;&#039;.&lt;br /&gt;
#&#039;&#039;&#039;terminalVersion:&#039;&#039;&#039; contendrá la versión del terminal al que ira dirigida la notificación. &#039;&#039;&#039;Ejemplo: 6.0.1&#039;&#039;&#039;.&lt;br /&gt;
#&#039;&#039;&#039;urlToOpen:&#039;&#039;&#039; contendrá la URL a abrir al hacer click sobre una notificación de tipo &#039;&#039;&#039;“openUrl”&#039;&#039;&#039;.&lt;br /&gt;
#&#039;&#039;&#039;external1:&#039;&#039;&#039; variable extra que contendrá lo que el usuario quiera para tratar en las notificaciones de tipo &#039;&#039;&#039;“openAppWithExtras”&#039;&#039;&#039; y/o &#039;&#039;&#039;“openAppWithExtras” con “customType”&#039;&#039;&#039;.&lt;br /&gt;
#&#039;&#039;&#039;external2:&#039;&#039;&#039; variable extra que contendrá lo que el usuario quiera para tratar en las notificaciones de tipo &#039;&#039;&#039;“openAppWithExtras”&#039;&#039;&#039; y/o &#039;&#039;&#039;“openAppWithExtras” con “customType”&#039;&#039;&#039;.&lt;br /&gt;
#&#039;&#039;&#039;external3:&#039;&#039;&#039; variable extra que contendrá lo que el usuario quiera para tratar en las notificaciones de tipo &#039;&#039;&#039;“openAppWithExtras”&#039;&#039;&#039; y/o &#039;&#039;&#039;“openAppWithExtras” con “customType”&#039;&#039;&#039;.&lt;br /&gt;
#&#039;&#039;&#039;external4:&#039;&#039;&#039; variable extra que contendrá lo que el usuario quiera para tratar en las notificaciones de tipo &#039;&#039;&#039;“openAppWithExtras”&#039;&#039;&#039; y/o &#039;&#039;&#039;“openAppWithExtras” con “customType”&#039;&#039;&#039;.&lt;br /&gt;
#&#039;&#039;&#039;external5:&#039;&#039;&#039; variable extra que contendrá lo que el usuario quiera para tratar en las notificaciones de tipo &#039;&#039;&#039;“openAppWithExtras”&#039;&#039;&#039; y/o &#039;&#039;&#039;“openAppWithExtras” con “customType”&#039;&#039;&#039;.&lt;br /&gt;
#&#039;&#039;&#039;androidNotyStyle:&#039;&#039;&#039; contendrá &#039;&#039;&#039;“bigPictureStyle”&#039;&#039;&#039; cuando queramos mostrar una imagen junto con la notificación en los dispositivos con &#039;&#039;&#039;SO Android&#039;&#039;&#039;. En caso de no querer mostrar ninguna imagen no se utilizara este campo.&lt;br /&gt;
#&#039;&#039;&#039;bigPictureStyleUrlImage:&#039;&#039;&#039; contendrá la URL de la imagen que se quiera mostrar en los dispositivos con &#039;&#039;&#039;SO Android&#039;&#039;&#039;, siempre habiendo hecho uso del campo previamente expuesto &#039;&#039;&#039;“androidNotyStyle”&#039;&#039;&#039; con el contenido &#039;&#039;&#039;“bigPictureStyle&amp;quot;&#039;&#039;&#039;. Cabe destacar que la URL deberá ser segura ( https ) y deberá contener la extension del contenido en dicha URL.&lt;br /&gt;
#&#039;&#039;&#039;bigPictureStyleExpandedTitle:&#039;&#039;&#039; contendrá el texto que se mostrará como titulo al expandir una notificación que contenga una imagen en dispositivos con &#039;&#039;&#039;SO Android&#039;&#039;&#039;,  siempre habiendo hecho uso del campo previamente expuesto &#039;&#039;&#039;“androidNotyStyle”&#039;&#039;&#039; con el contenido &#039;&#039;&#039;“bigPictureStyle”&#039;&#039;&#039;.&lt;br /&gt;
#&#039;&#039;&#039;bigPictureStyleExpandedSumaryText:&#039;&#039;&#039; contendrá el texto que se mostrará como mensaje al expandir una notificación que contenga una imagen en dispositivos con &#039;&#039;&#039;SO Android&#039;&#039;&#039; ,  siempre habiendo hecho uso del campo previamente expuesto &#039;&#039;&#039;“androidNotyStyle”&#039;&#039;&#039; con el contenido &#039;&#039;&#039;“bigPictureStyle”&#039;&#039;&#039;.&lt;br /&gt;
#&#039;&#039;&#039;extra-content:&#039;&#039;&#039; este campo solo se usará para notificaciones dirigidas a dispositivos con &#039;&#039;&#039;SO iOs&#039;&#039;&#039;. Contendrá la URL del contenido extra que se quiere mostrar junto con la notificación. En este caso y a diferencia de &#039;&#039;&#039;Android ( bigPictureStyleUrlImage )&#039;&#039;&#039;, dicho contenido podrá ser una imagen, un giff, un video o un audio. La URL también deberá ser segura ( https )  y deberá contener la extension del contenido en dicha URL.&lt;br /&gt;
#&#039;&#039;&#039;channel:&#039;&#039;&#039; A partir de Android O, las notificaciones deberán ir por un canal de notificaciones instanciado en su aplicación. Esta variable contendrá el nombre del canal por el que han de salir.&lt;br /&gt;
#&#039;&#039;&#039;thread-id:&#039;&#039;&#039; A partir de iOs 12, las notificaciones pueden ser agrupadas. Para ello deberemos mandar el mismo thread-id en todas las notificaciones que queramos agrupar.&lt;br /&gt;
&lt;br /&gt;
=Notificaciones Android=&lt;br /&gt;
En este apartado veremos los distintos tipos de notificaciones para dispositivos Android mas detalladamente complementándolo con ejemplos funcionales:&lt;br /&gt;
#&#039;&#039;&#039;normal:&#039;&#039;&#039;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;Con imagen:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;normal&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.Normal+IMG&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.Normal+IMG&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyAndroid&#039;;&lt;br /&gt;
$arr_data[&#039;androidNotyStyle&#039;] = &#039;bigPictureStyle&#039;;&lt;br /&gt;
$arr_data[&#039;bigPictureStyleUrlImage&#039;] = &#039;url_image&#039;;&lt;br /&gt;
$arr_data[&#039;bigPictureStypeExpandedTittle&#039;] = &#039;Titulo Noti.Expandida&#039;;&lt;br /&gt;
$arr_data[&#039;bigPictureStyleExpandedSumaryText&#039;] = &#039;Mensaje Noti.Expandida&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;Sin imagen:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;normal&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.Normal&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.Normal&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyAndroid&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
#&#039;&#039;&#039;openApp:&#039;&#039;&#039;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;Con imagen:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;openApp&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.OpenApp+IMG&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.OpenApp+IMG&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyAndroid&#039;;&lt;br /&gt;
$arr_data[&#039;androidNotyStyle&#039;] = &#039;bigPictureStyle&#039;;&lt;br /&gt;
$arr_data[&#039;bigPictureStyleUrlImage&#039;] = &#039;url_image&#039;;&lt;br /&gt;
$arr_data[&#039;bigPictureStypeExpandedTittle&#039;] = &#039;Titulo Noti.Expandida&#039;;&lt;br /&gt;
$arr_data[&#039;bigPictureStyleExpandedSumaryText&#039;] = &#039;Mensaje Noti.Expandida&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;Sin imagen:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;openApp&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.OpenApp&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.OpenApp&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyAndroid&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
#&#039;&#039;&#039;openUrl:&#039;&#039;&#039;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;Con imagen:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;openUrl&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.OpenUrl+IMG&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.OpenUrl+IMG&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyAndroid&#039;;&lt;br /&gt;
$arr_data[&#039;urlToOpen&#039;] = &#039;url_pagina_abrir&#039;;&lt;br /&gt;
$arr_data[&#039;androidNotyStyle&#039;] = &#039;bigPictureStyle&#039;;&lt;br /&gt;
$arr_data[&#039;bigPictureStyleUrlImage&#039;] = &#039;url_image&#039;;&lt;br /&gt;
$arr_data[&#039;bigPictureStypeExpandedTittle&#039;] = &#039;Titulo Noti.Expandida&#039;;&lt;br /&gt;
$arr_data[&#039;bigPictureStyleExpandedSumaryText&#039;] = &#039;Mensaje Noti.Expandida&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;Sin imagen:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;openUrl&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.OpenUrl&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.OpenUrl&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyAndroid&#039;;&lt;br /&gt;
$arr_data[&#039;urlToOpen&#039;] = &#039;url_pagina_abrir&#039;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
#&#039;&#039;&#039;openApppWithExtras:&#039;&#039;&#039;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;Con customType:&#039;&#039;&#039; Las notificaciones personalizadas, solo lanzarán la notificación si la APP se encuentra en background, en caso de estar en foreground (primer plano), no lanzará la notificación.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;Con imagen:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;openAppWithExtras&#039;;&lt;br /&gt;
$arr_data[&#039;customType&#039;] = &#039;tipo_personalizado&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.OpenAppWithExtras+IMG&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.OpenAppWithExtras+IMG&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyAndroid&#039;;&lt;br /&gt;
$arr_data[&#039;external4&#039;] = &#039;variable4&#039;;&lt;br /&gt;
$arr_data[&#039;silent&#039;] = &#039;no&#039;;&lt;br /&gt;
$arr_data[&#039;androidNotyStyle&#039;] = &#039;bigPictureStyle&#039;;&lt;br /&gt;
$arr_data[&#039;bigPictureStyleUrlImage&#039;] = &#039;url_image&#039;;&lt;br /&gt;
$arr_data[&#039;bigPictureStypeExpandedTittle&#039;] = &#039;Titulo Noti.Expandida&#039;;&lt;br /&gt;
$arr_data[&#039;bigPictureStyleExpandedSumaryText&#039;] = &#039;Mensaje Noti.Expandida&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;Sin imagen:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;openAppWithExtras&#039;;&lt;br /&gt;
$arr_data[&#039;customType&#039;] = &#039;tipo_personalizado&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.OpenAppWithExtras&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.OpenAppWithExtras&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyAndroid&#039;;&lt;br /&gt;
$arr_data[&#039;external4&#039;] = &#039;variable4&#039;;&lt;br /&gt;
$arr_data[&#039;silent&#039;] = &#039;no&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:Push_a_extras_p.png|center]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;Sin notificación:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;openAppWithExtras&#039;;&lt;br /&gt;
$arr_data[&#039;customType&#039;] = &#039;tipo_personalizado&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.Silent&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.Silent&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyAndroid&#039;;&lt;br /&gt;
$arr_data[&#039;silent&#039;] = &#039;yes&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;Sin customType:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;Con imagen:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;openAppWithExtras&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.OpenAppWithExtras+IMG&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.OpenAppWithExtras+IMG&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyAndroid&#039;;&lt;br /&gt;
$arr_data[&#039;external4&#039;] = &#039;variable4&#039;;&lt;br /&gt;
$arr_data[&#039;androidNotyStyle&#039;] = &#039;bigPictureStyle&#039;;&lt;br /&gt;
$arr_data[&#039;bigPictureStyleUrlImage&#039;] = &#039;url_image&#039;;&lt;br /&gt;
$arr_data[&#039;bigPictureStypeExpandedTittle&#039;] = &#039;Titulo Noti.Expandida&#039;;&lt;br /&gt;
$arr_data[&#039;bigPictureStyleExpandedSumaryText&#039;] = &#039;Mensaje Noti.Expandida&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;Sin imagen:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;openAppWithExtras&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.OpenAppWithExtras&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.OpenAppWithExtras&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyAndroid&#039;;&lt;br /&gt;
$arr_data[&#039;external1&#039;] = &#039;variable1&#039;;&lt;br /&gt;
$arr_data[&#039;external3&#039;] = &#039;variable3&#039;;&lt;br /&gt;
$arr_data[&#039;external5&#039;] = &#039;variable5&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
#&#039;&#039;&#039;Independientemente de los anteriores tipos:&#039;&#039;&#039;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;sendingId:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token_exchange = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token_exchange);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;normal&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.Normal + sendingId&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.Normal + sendingId&#039;;&lt;br /&gt;
&lt;br /&gt;
$array_tokens = array(); // ARRAY CON TODOS LOS USUARIOS QUE QUEREMOS QUE RECIBAN LA NOTIFICACION&lt;br /&gt;
$array_tokens_enviar = array(); // ARRAY QUE SE USA PARA MANDAR DE 500 EN 500&lt;br /&gt;
$contador = 0; // VARIABLE DE CONTROL PARA ENVIAR 500 USUARIOS&lt;br /&gt;
$json_datos_devueltos = array(); // ARRAY QUE CONTENDRA LA RESPUESTA RECIBIDA DE LA API&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
foreach( $array_tokens as $token ){ // 1.- MANDAMOS A LA API DE 500 EN 500 PARA NO SATURARLA&lt;br /&gt;
	&lt;br /&gt;
	if( $contador &amp;gt;= 500 ){&lt;br /&gt;
		&lt;br /&gt;
		$arr_data[&#039;terminalTokens&#039;] = $array_tokens_enviar; // ASIGNAMOS LOS USUARIOS A ENVIAR&lt;br /&gt;
		&lt;br /&gt;
		$conexionapi = new spsapiXchange($token_exchange);&lt;br /&gt;
		$json_datos_devueltos = json_decode($conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data), true);&lt;br /&gt;
		&lt;br /&gt;
		if ( isset($json_datos_devueltos[&#039;data&#039;][&#039;sendingId&#039;]) AND !empty($json_datos_devueltos[&#039;data&#039;][&#039;sendingId&#039;]) ){ // ESTO SE OBTENDRA DESPUES DE LANZAR LOS PRIMEROS 500 USUARIOS&lt;br /&gt;
			&lt;br /&gt;
			$arr_data[&#039;sendingId&#039;] = $json_datos_devueltos[&#039;data&#039;][&#039;sendingId&#039;];&lt;br /&gt;
		&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		$contador = 0;&lt;br /&gt;
		$array_tokens_enviar = array();&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	$array_tokens_enviar[] = $token[&#039;token_del_usuario&#039;]; // EN NUESTRO CASO LA VARIABLE $token ES UN ARRAY CON MAS DATOS&lt;br /&gt;
	$contador += 1;&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if( count($array_tokens_enviar) &amp;gt; 0 ) { // 2.- MANDAMOS LOS QUE FALTEN, LOS RESTOS QUE NO HAYAN LLEGADO A 500&lt;br /&gt;
				&lt;br /&gt;
	$conexionapi = new spsapiXchange($token_exchange);&lt;br /&gt;
	$arr_data[&#039;terminalTokens&#039;] = $array_tokens_enviar; // ASIGNAMOS LOS USUARIOS A ENVIAR&lt;br /&gt;
	&lt;br /&gt;
	$json_datos_devueltos = json_decode($conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data), true);&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;language:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;normal&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.Normal + Idioma&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.Normal + Idioma&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyAndroid&#039;;&lt;br /&gt;
$arr_data[&#039;language&#039;] = &#039;es&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;country:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;normal&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.Normal + Pais&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.Normal + Pais&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyAndroid&#039;;&lt;br /&gt;
$arr_data[&#039;country&#039;] = &#039;ES&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;deviceType:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;normal&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.Normal + TipoDispositivo&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.Normal + TipoDispositivo&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyAndroid&#039;;&lt;br /&gt;
$arr_data[&#039;deviceType&#039;] = &#039;movil&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;appVersion:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;normal&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.Normal + VersionAplicacion&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.Normal + VersionAplicacion&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyAndroid&#039;;&lt;br /&gt;
$arr_data[&#039;appVersion&#039;] = &#039;1.0&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;terminalVersion:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;normal&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.Normal + VersionTerminal&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.Normal + VersionTerminal&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyAndroid&#039;;&lt;br /&gt;
$arr_data[&#039;terminalVersion&#039;] = &#039;6.0.1&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Notificaciones iOs=&lt;br /&gt;
En este apartado veremos los distintos tipos de notificaciones para dispositivos iOs mas detalladamente complementándolo con ejemplos funcionales:&lt;br /&gt;
#&#039;&#039;&#039;normal:&#039;&#039;&#039;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;Con imagen:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;normal&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.Normal Imagen&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.Normal Imagen&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyIOS&#039;;&lt;br /&gt;
$arr_data[&#039;sandbox&#039;] = &#039;yes&#039;;&lt;br /&gt;
$arr_data[&#039;isTest&#039;] = &#039;yes&#039;;&lt;br /&gt;
$arr_data[&#039;extra_content&#039;] = &#039;https://.....&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;Sin imagen:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;normal&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.Normal&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.Normal&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyIOS&#039;;&lt;br /&gt;
$arr_data[&#039;sandbox&#039;] = &#039;yes&#039;;&lt;br /&gt;
$arr_data[&#039;isTest&#039;] = &#039;yes&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
#&#039;&#039;&#039;openApp:&#039;&#039;&#039;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;Con imagen:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;openApp&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.Abrir App Con Imagen&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.Abrir App Con Imagen&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyIOS&#039;;&lt;br /&gt;
$arr_data[&#039;sandbox&#039;] = &#039;yes&#039;;&lt;br /&gt;
$arr_data[&#039;isTest&#039;] = &#039;yes&#039;;&lt;br /&gt;
$arr_data[&#039;extra_content&#039;] = &#039;https://.....&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;Sin imagen:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;openApp&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.Abrir App&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.Abrir App&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyIOS&#039;;&lt;br /&gt;
$arr_data[&#039;sandbox&#039;] = &#039;yes&#039;;&lt;br /&gt;
$arr_data[&#039;isTest&#039;] = &#039;yes&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
#&#039;&#039;&#039;openUrl:&#039;&#039;&#039;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;Con imagen:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;openUrl&#039;;&lt;br /&gt;
$arr_data[&#039;urlToOpen&#039;] = &#039;https://....&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.Abrir Url Imagen&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.Abrir Url Imagen&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyIOS&#039;;&lt;br /&gt;
$arr_data[&#039;sandbox&#039;] = &#039;yes&#039;;&lt;br /&gt;
$arr_data[&#039;isTest&#039;] = &#039;yes&#039;;&lt;br /&gt;
$arr_data[&#039;extra_content&#039;] = &#039;https://.....&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;Sin imagen:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;openUrl&#039;;&lt;br /&gt;
$arr_data[&#039;urlToOpen&#039;] = &#039;https://....&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.Abrir Url&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.Abrir Url&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyIOS&#039;;&lt;br /&gt;
$arr_data[&#039;sandbox&#039;] = &#039;yes&#039;;&lt;br /&gt;
$arr_data[&#039;isTest&#039;] = &#039;yes&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
#&#039;&#039;&#039;openApppWithExtras:&#039;&#039;&#039;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;Con customType:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;Silenciosa:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;openAppWithExtras&#039;;&lt;br /&gt;
$arr_data[&#039;customType&#039;] = &#039;tipo_eleccion_desarrollador&#039;;&lt;br /&gt;
$arr_data[&#039;external_1&#039;] = &#039;variable_extra_1&#039;;&lt;br /&gt;
$arr_data[&#039;external_2&#039;] = &#039;variable_extra_2&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;SilentPush&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;SilentPush&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyIOS&#039;;&lt;br /&gt;
$arr_data[&#039;silent&#039;] = &#039;yes&#039;;&lt;br /&gt;
$arr_data[&#039;silentNumber&#039;] = &#039;6&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:Push_i_extras_p_s.png|center]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;Sin customType:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;Silenciosa:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;openAppWithExtras&#039;;&lt;br /&gt;
$arr_data[&#039;external_1&#039;] = &#039;variable_extra_1&#039;;&lt;br /&gt;
$arr_data[&#039;external_2&#039;] = &#039;variable_extra_2&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;SilentPush&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;SilentPush&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyIOS&#039;;&lt;br /&gt;
$arr_data[&#039;silent&#039;] = &#039;yes&#039;;&lt;br /&gt;
$arr_data[&#039;silentNumber&#039;] = &#039;6&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
#&#039;&#039;&#039;Independientemente de los anteriores tipos:&#039;&#039;&#039;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;sendingId:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token_exchange = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token_exchange);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;normal&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.Normal + sendingId&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.Normal + sendingId&#039;;&lt;br /&gt;
&lt;br /&gt;
$array_tokens = array(); // ARRAY CON TODOS LOS USUARIOS QUE QUEREMOS QUE RECIBAN LA NOTIFICACION&lt;br /&gt;
$array_tokens_enviar = array(); // ARRAY QUE SE USA PARA MANDAR DE 500 EN 500&lt;br /&gt;
$contador = 0; // VARIABLE DE CONTROL PARA ENVIAR 500 USUARIOS&lt;br /&gt;
$json_datos_devueltos = array(); // ARRAY QUE CONTENDRA LA RESPUESTA RECIBIDA DE LA API&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
foreach( $array_tokens as $token ){ // 1.- MANDAMOS A LA API DE 500 EN 500 PARA NO SATURARLA&lt;br /&gt;
	&lt;br /&gt;
	if( $contador &amp;gt;= 500 ){&lt;br /&gt;
		&lt;br /&gt;
		$arr_data[&#039;terminalTokens&#039;] = $array_tokens_enviar; // ASIGNAMOS LOS USUARIOS A ENVIAR&lt;br /&gt;
		&lt;br /&gt;
		$conexionapi = new spsapiXchange($token_exchange);&lt;br /&gt;
		$json_datos_devueltos = json_decode($conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data), true);&lt;br /&gt;
		&lt;br /&gt;
		if ( isset($json_datos_devueltos[&#039;data&#039;][&#039;sendingId&#039;]) AND !empty($json_datos_devueltos[&#039;data&#039;][&#039;sendingId&#039;]) ){ // ESTO SE OBTENDRA DESPUES DE LANZAR LOS PRIMEROS 500 USUARIOS&lt;br /&gt;
			&lt;br /&gt;
			$arr_data[&#039;sendingId&#039;] = $json_datos_devueltos[&#039;data&#039;][&#039;sendingId&#039;];&lt;br /&gt;
		&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		$contador = 0;&lt;br /&gt;
		$array_tokens_enviar = array();&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	$array_tokens_enviar[] = $token[&#039;token_del_usuario&#039;]; // EN NUESTRO CASO LA VARIABLE $token ES UN ARRAY CON MAS DATOS&lt;br /&gt;
	$contador += 1;&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if( count($array_tokens_enviar) &amp;gt; 0 ) { // 2.- MANDAMOS LOS QUE FALTEN, LOS RESTOS QUE NO HAYAN LLEGADO A 500&lt;br /&gt;
				&lt;br /&gt;
	$conexionapi = new spsapiXchange($token_exchange);&lt;br /&gt;
	$arr_data[&#039;terminalTokens&#039;] = $array_tokens_enviar; // ASIGNAMOS LOS USUARIOS A ENVIAR&lt;br /&gt;
	&lt;br /&gt;
	$json_datos_devueltos = json_decode($conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data), true);&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;language:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;normal&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.Normal + Idioma&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.Normal + Idioma&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyIOS&#039;;&lt;br /&gt;
$arr_data[&#039;language&#039;] = &#039;es&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;country:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;normal&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.Normal + Pais&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.Normal + Pais&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyIOS&#039;;&lt;br /&gt;
$arr_data[&#039;country&#039;] = &#039;ES&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;deviceType:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;normal&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.Normal + Tipo Dispositivo&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.Normal + Tipo Dispositivo&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyIOS&#039;;&lt;br /&gt;
$arr_data[&#039;deviceType&#039;] = &#039;iphone&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;appVersion:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;normal&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.Normal + Version Aplicacion&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.Normal + Version Aplicacion&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyIOS&#039;;&lt;br /&gt;
$arr_data[&#039;appVersion&#039;] = &#039;3.4&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;terminalVersion:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;direct&#039;] = &amp;quot;yes&amp;quot;;&lt;br /&gt;
$arr_data[&#039;whenSend&#039;] = &amp;quot;inmediately&amp;quot;;&lt;br /&gt;
$arr_data[&#039;type&#039;] = &#039;normal&#039;;&lt;br /&gt;
$arr_data[&#039;title&#039;] = &#039;Titulo Noti.Normal + Version Terminal&#039;;&lt;br /&gt;
$arr_data[&#039;message&#039;] = &#039;Mensaje Noti.Normal + Version Terminal&#039;;&lt;br /&gt;
$arr_data[&#039;terminalTokens&#039;] = &#039;onlyIOS&#039;;&lt;br /&gt;
$arr_data[&#039;terminalVersion&#039;] = &#039;10.3&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;setPush&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Respuesta setPush=&lt;br /&gt;
La respuesta que recibiremos por parte de la API siempre será un JSON.  Dicho JSON contendrá de tres a cinco posiciones/elementos:&lt;br /&gt;
#&#039;&#039;&#039;responsecode:&#039;&#039;&#039; determinará si la acción a realizar sobre la API ha funcionado o no. En caso de ser &#039;&#039;&#039;negativo&#039;&#039;&#039; devolverá &#039;&#039;&#039;“KO”&#039;&#039;&#039; y en caso de ser &#039;&#039;&#039;positivo&#039;&#039;&#039; será &#039;&#039;&#039;“OK”&#039;&#039;&#039;.&lt;br /&gt;
#&#039;&#039;&#039;errorcode:&#039;&#039;&#039; en caso de que el &#039;&#039;&#039;responsecode&#039;&#039;&#039; sea &#039;&#039;&#039;“KO”&#039;&#039;&#039;, devolverá el código de error en nuestro sistema. Por el contrario, si el &#039;&#039;&#039;responsecode&#039;&#039;&#039; es &#039;&#039;&#039;“OK”&#039;&#039;&#039;, devolverá un 0.&lt;br /&gt;
#&#039;&#039;&#039;errortext:&#039;&#039;&#039; contendrá el texto del error que se ha producido, por lo que como se deduce esto solo saldrá cuando la acción sobre la API no se haya podido ejecutar. &lt;br /&gt;
#&#039;&#039;&#039;data:&#039;&#039;&#039; contendrá el resultado de la acción realizada satisfactoriamente sobre la API. Si ha habido un error esta posición &#039;&#039;&#039;no se generará&#039;&#039;&#039;.&lt;br /&gt;
#&#039;&#039;&#039;timestamp:&#039;&#039;&#039; devolverá la fecha en timestamp en la que la acción sobre la API ha sido realizada correctamente. Si ha habido un error esta posición &#039;&#039;&#039;no se generará&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
En resumen, si la acción a realizar sobre la API ha dado error, el JSON contendrá los elementos ( responsecode, errorcode y errortext).&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:Api_exchange_error.png|center]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Por el contrario si la acción ha finalizado correcta y satisfactoriamente, el JSON contendrá los elementos ( responsecode, errorcode, data y timestamp). &lt;br /&gt;
Para el caso de crear una notificación ( &#039;&#039;&#039;setPush&#039;&#039;&#039; ), y que haya funcionado correctamente, en la respuesta se generará algo tal que la siguiente imágen:&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:Api_exchange_noerror.png|center]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
En el contenido del elemento &#039;&#039;&#039;data&#039;&#039;&#039;, se mostrara las notificaciones que se han podido enviar, las que no se han podido enviar, el ID que se genera en nuestro sistema asociado al envío solicitado y un array con los tokens enviados ( &#039;&#039;&#039;deletedArray&#039;&#039;&#039; ) y un array con los tokens que no se han podido enviar ( &#039;&#039;&#039;deletedWithoutSend&#039;&#039;&#039; ).&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Este último caso, el del array con los tokens que no se han podido enviar solo se informará en el caso de que al enviar la acción &#039;&#039;&#039;setPush&#039;&#039;&#039;, en la posición &#039;&#039;&#039;terminalTokens&#039;&#039;&#039;, se mande &#039;&#039;&#039;un array con los terminales en concreto que se quieren notificar&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
En el caso del array con los dispositivos notificados, se apreciará una segmentación por &#039;&#039;&#039;SO&#039;&#039;&#039;. En caso de que uno de estos dispositivos no haya podido recibir la notificación por problemas  como bien puede ser un token obsoleto, se borrará de nuestro sistema y el token se informará en la posición  ( &#039;&#039;&#039;deletedTokens&#039;&#039;&#039; ).&lt;br /&gt;
&lt;br /&gt;
=Obtención de usuarios registrados en su aplicación=&lt;br /&gt;
Para obtener un conteo de usuarios registrados en nuestra aplicación y los datos de estos, deberemos hacer uso de la tarea &#039;&#039;&#039;“getPushTokens”&#039;&#039;&#039; y el hash de la aplicación registrada en el panel de Mobeleader. Dicho hash podremos verlo en cualquier momento desde la sección https://panel.mobeleader.com/index.php?sec=6. Una vez obtengamos dicho hash procederemos a conectarnos a la API de la manera expuesta en la a continuación:&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;getPushTokens&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:Api_exchange_getPushTokens.png|center]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Como se puede apreciar en la respuesta, &#039;&#039;&#039;la posición respondecode es “OK”&#039;&#039;&#039;. Al igual que en el caso del &#039;&#039;&#039;“ping”&#039;&#039;&#039;, siempre que el &#039;&#039;&#039;responsecode&#039;&#039;&#039; sea &#039;&#039;&#039;”OK”&#039;&#039;&#039; significara que la acción a realizar sobre la API ha finalizado correctamente y que en la posición &#039;&#039;&#039;“data”&#039;&#039;&#039; vendrá los solicitado, en este caso los datos de los terminales registrados en la aplicación.&lt;br /&gt;
&lt;br /&gt;
=Borrado de usuarios registrados en su aplicación=&lt;br /&gt;
Una vez obtenidos los datos mediante la tarea &#039;&#039;&#039;“getPushTokens”&#039;&#039;&#039;, si quisiéramos  borrar alguno de dichos tokens del sistema de Mobeleader, deberemos hacer uso de la tarea &#039;&#039;&#039;“deletePushTokens”&#039;&#039;&#039; usando el hash de la aplicación de la misma manera que en la obtención de usuarios, y pasándole el token o los tokens que quisiéramos borrar. Lo haremos de la siguiente manera:&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$token = &#039;token_generado_por_mobeleader&#039;;&lt;br /&gt;
$conexionapi = new spsapiXchange($token);&lt;br /&gt;
&lt;br /&gt;
$arr_data = array();&lt;br /&gt;
$arr_data[&#039;appHash&#039;] = &#039;token_de_la_aplicacion_registrada&#039;;&lt;br /&gt;
$arr_data[&#039;tokens&#039;][] = &#039;token_del_usuario_registrado&#039;;&lt;br /&gt;
&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;deletePushTokens&#039;, $arr_data);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:Api_exchange_deletePushTokens.png|center]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Como siempre, en caso de que el &#039;&#039;&#039;responsecode sea “OK”&#039;&#039;&#039;, en la &#039;&#039;&#039;posición “data”&#039;&#039;&#039; veremos el número de tokens borrados.&lt;/div&gt;</summary>
		<author><name>Kevin</name></author>
	</entry>
	<entry>
		<id>https://wiki.mobeleader.com/index.php?title=Documentaci%C3%B3n_Webservice_NickCenter&amp;diff=2183</id>
		<title>Documentación Webservice NickCenter</title>
		<link rel="alternate" type="text/html" href="https://wiki.mobeleader.com/index.php?title=Documentaci%C3%B3n_Webservice_NickCenter&amp;diff=2183"/>
		<updated>2018-09-12T10:49:11Z</updated>

		<summary type="html">&lt;p&gt;Kevin: /* Llamada directa */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduccion=&lt;br /&gt;
En ésta documentación se expondrá como deberemos hacer uso del Webservice de NickCenter, de manera que emule la propia librería de NickCenter y así no haya la necesidad de usarla ni implementarla en las aplicaciones. A pesar de ello, la configuración en el panel de Mobeleader será la misma, siendo necesario dar de alta la aplicación en éste, y configurandola para el uso de NickCenter. Podremos hacer uso de dicho Webservice de dos maneras:&lt;br /&gt;
#Llamada directa al Webservice. Ésta opción será menos segura debido a que los datos irán sin cifrar.&lt;br /&gt;
#Usando la clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039; creada por Mobeleader. Esta opción será mas segura ya que cuenta con un cifrado mediante RSA Keys generadas en nuestro sistema.&lt;br /&gt;
&lt;br /&gt;
=Llamada directa=&lt;br /&gt;
Si queremos usar directamente el Webservice de Nickcenter sin la necesidad de usar la clase &#039;&#039;&#039;spsApiNickCenter&#039;&#039;&#039;, esta será la URL a la que deberemos conectarnos mediante POST &#039;&#039;https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=&#039;&#039;. Más adelante se expondrán que tareas hay disponibles y como hay que mandar los datos para su ejecución.&lt;br /&gt;
&lt;br /&gt;
=Uso de la clase spsApiNickcenter=&lt;br /&gt;
Esta clase accesible desde [[Medio:Api_nickcenter_client.zip|aquí]], esta pensada para una mayor comodidad del cliente, permitiendo que todo se gestione desde ésta sin necesidad de tener que programar las llamadas y retornos del Webservice. A continuación se expondrán los pasos a seguir para un correcto funcionamiento de la clase:&lt;br /&gt;
==Instalación PHPSECLIB==&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Será necesario disponer de phpseclib versión 2.0.11 o superior.&lt;br /&gt;
Los pasos para instalar esta versión de phpseclib son:&amp;lt;br /&amp;gt;&lt;br /&gt;
- Disponer de la herramienta &amp;quot;composer.phar&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
- Ejecutar &amp;quot;composer&amp;quot; en la carpeta donde vaya a instalar nuestra librería.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.- Descargar composer desde: https://getcomposer.org/composer.phar&lt;br /&gt;
&amp;lt;pre&amp;gt;curl https://getcomposer.org/composer.phar -o composer.phar&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.- Ejecutar el comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;php composer.phar --working-dir=. require phpseclib/phpseclib:~2.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hecho esto, obtendrá la siguiente salida por consola:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./composer.json has been created&lt;br /&gt;
Loading composer repositories with package information&lt;br /&gt;
Updating dependencies (including require-dev)&lt;br /&gt;
Package operations: 1 install, 0 updates, 0 removals&lt;br /&gt;
  - Installing phpseclib/phpseclib (2.0.11): Downloading (100%)         &lt;br /&gt;
phpseclib/phpseclib suggests installing ext-libsodium (SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.)&lt;br /&gt;
phpseclib/phpseclib suggests installing ext-mcrypt (Install the Mcrypt extension in order to speed up a few other cryptographic operations.)&lt;br /&gt;
phpseclib/phpseclib suggests installing ext-gmp (Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.)&lt;br /&gt;
Writing lock file&lt;br /&gt;
Generating autoload files&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto significa que está todo lo necesario instalado en su carpeta vendor.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Clase spsApiNickcenter==&lt;br /&gt;
Una vez instalada la librería &#039;&#039;&#039;PHPSECLIB&#039;&#039;&#039; en nuestra carpeta vendor, lo primero que debemos hacer es abrir la clase y modificar la ruta de acceso a dicha carpeta.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
require_once &#039;PATH..../vendor/autoload.php&#039;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Una vez modificada la ruta, para poder instanciar la clase deberemos coger la cadena de la &#039;&#039;&#039;RSA KEY Privada&#039;&#039;&#039;, accesible desde https://panel.mobeleader.com/index.php?sec=6, y reemplazarla en el siguiente codigo.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA]);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Si la instalación de la librería es correcta, la ruta de acceso a ésta ha sido cambiada y es correcta, y la &#039;&#039;&#039;RSA KEY Privada&#039;&#039;&#039; es correcta, para realizar las llamadas al Webservice usaremos la funcion &#039;&#039;&#039;getData()&#039;&#039;&#039; de la clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039;. Dicha función será la encargada de realizar todas las conexiones al Webservice, de cifrar los datos que enviaremos a éste y de descifrar los que datos que nos retorne.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(tarea, array_datos)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
A continuación se exponen cuales son las distintas tareas ejecutables, y como ha de ser el array de datos para posibilitar dicha ejecución.&lt;br /&gt;
&lt;br /&gt;
=Tareas=&lt;br /&gt;
La clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039; consta de la función &#039;&#039;getData(&#039;&#039;&#039;tarea, array_datos&#039;&#039;&#039;)&#039;&#039;, con la que ejecutaremos las distintas operaciones que el Webservice permite y a la que le deberemos mandar los siguientes parámetros:&lt;br /&gt;
#&#039;&#039;&#039;tarea:&#039;&#039;&#039; Sera la propia tarea a realizar, puediendo ser:&lt;br /&gt;
##&#039;&#039;&#039;checkActive&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;requestFields&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;register&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;update&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;login&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;rescuePassword&#039;&#039;&#039;.&lt;br /&gt;
#&#039;&#039;&#039;array_datos:&#039;&#039;&#039; Contendrá un array con los datos necesarios para la ejecución de la tarea.&lt;br /&gt;
===Llamadas al Webservice===&lt;br /&gt;
&#039;&#039;Recuerde reemplazar el contenido de los ejemplos por los valores reales&#039;&#039;.&lt;br /&gt;
*&#039;&#039;&#039;checkActive:&#039;&#039;&#039; Esta tarea comprobará que la aplicación tenga NickCenter activo, independientemente de usarla directamente o no, el resto de tareas harán uso de ella antes de realizar sus operaciones propias.&lt;br /&gt;
:*&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de Mobeleader.&lt;br /&gt;
:*&#039;&#039;&#039;country:&#039;&#039;&#039; Contendrá el país del dispositivo, necesario para comprobar si NickCenter esta activo para esa aplicación en ese país.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=checkActive&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;country=[código país, ej: ES]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;country&#039;] = [código país, ej: ES];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;checkActive&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;requestFields:&#039;&#039;&#039; Mediante ésta tarea obtendremos la configuración de campos y traducciones para una determinada vista.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de  Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;view:&#039;&#039;&#039; Indicará los campos de que vista solicitamos.&lt;br /&gt;
***&#039;&#039;&#039;register:&#039;&#039;&#039; Pantalla inicial del registro.&lt;br /&gt;
***&#039;&#039;&#039;login:&#039;&#039;&#039; Pantalla de login.&lt;br /&gt;
***&#039;&#039;&#039;rescue:&#039;&#039;&#039; Pantalla de recuperación de contraseña.&lt;br /&gt;
**&#039;&#039;&#039;country:&#039;&#039;&#039; Contendrá el país del dispositivo, necesario para comprobar si NickCenter esta activo para esa aplicación en ese país.&lt;br /&gt;
**&#039;&#039;&#039;language:&#039;&#039;&#039; Idioma del dispositivo, necesario para las traducciones y las configuraciones de los campos que se retornarán.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=requestFields&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;view=[vista, ej: register]&amp;amp;country=[código país, ej: ES]&amp;amp;language=[código idioma, ej: es]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;view&#039;] = [vista, ej: register];&lt;br /&gt;
$array_datos[&#039;country&#039;] = [código país, ej: ES];&lt;br /&gt;
$array_datos[&#039;language&#039;] = [código idioma, ej: es];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;requestFields&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;register:&#039;&#039;&#039; Esta tarea servirá para registrar un usuario en nuestro sistema.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de  Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039; Contendrá los datos del dispositivo. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonApp:&#039;&#039;&#039; Contendrá los datos de la aplicación. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonUser:&#039;&#039;&#039; Contendrá los datos del usuario. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=register&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;jsonDevice=[json con toda la información del dispositivo]&amp;amp;jsonApp=[json con toda la información de la app]&amp;amp;jsonUser=[json con toda la información a registrar del usuario]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;jsonDevice&#039;] = [json con toda la información del dispositivo];&lt;br /&gt;
$array_datos[&#039;jsonApp&#039;] = [json con toda la información de la app];&lt;br /&gt;
$array_datos[&#039;jsonUser&#039;] = [json con toda la información a registrar del usuario];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;register&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;update:&#039;&#039;&#039; Esta tarea servirá para actualizar un usuario que previamente haya sido registrado en nuestro sistema.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de  Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039; Contendrá los datos del dispositivo. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonApp:&#039;&#039;&#039; Contendrá los datos de la aplicación. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonUser:&#039;&#039;&#039; Contendrá los datos del usuario. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=update&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;jsonDevice=[json con toda la información del dispositivo]&amp;amp;jsonApp=[json con toda la información de la app]&amp;amp;jsonUser=[json con toda la información a actualizar del usuario]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;jsonDevice&#039;] = [json con toda la información del dispositivo];&lt;br /&gt;
$array_datos[&#039;jsonApp&#039;] = [json con toda la información de la app];&lt;br /&gt;
$array_datos[&#039;jsonUser&#039;] = [json con toda la información a actualizar del usuario];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;update&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;login:&#039;&#039;&#039; Esta tarea servirá para hacer login en las aplicaciones registradas en NickCenter, con usuarios previamente registrados en nuestro sistema.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta el panel de  en Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039; Contendrá los datos del dispositivo. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonApp:&#039;&#039;&#039; Contendrá los datos de la aplicación. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonUser:&#039;&#039;&#039; Contendrá los datos del usuario. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=login&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;jsonDevice=[json con toda la información del dispositivo]&amp;amp;jsonApp=[json con toda la información de la app]&amp;amp;jsonUser=[json con toda la información necesaria para el login]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;jsonDevice&#039;] = [json con toda la información del dispositivo];&lt;br /&gt;
$array_datos[&#039;jsonApp&#039;] = [json con toda la información de la app];&lt;br /&gt;
$array_datos[&#039;jsonUser&#039;] = [json con toda la información necesaria para el login];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;login&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;rescuePassword:&#039;&#039;&#039; Mediante ésta tarea restauraremos la contraseña de usuarios previamente registrados en nuestro sistema y que no esten dados de baja.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta el panel de  en Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;country:&#039;&#039;&#039; Contendrá el país del dispositivo, necesario para comprobar si NickCenter esta activo para esa aplicación en ese país.&lt;br /&gt;
**&#039;&#039;&#039;language:&#039;&#039;&#039; Idioma del dispositivo, necesario para las traducciones que se retornarán.&lt;br /&gt;
**&#039;&#039;&#039;email:&#039;&#039;&#039; Email al que hay que restaurar la contraseña.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=rescuePassword&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;country=[código país, ej: ES]&amp;amp;language=[código idioma, ej: es]&amp;amp;email=[email a recuperar, ej: prueba@prueba.com]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;country&#039;] = [código país, ej: ES];&lt;br /&gt;
$array_datos[&#039;language&#039;] = [código idioma, ej: es];&lt;br /&gt;
$array_datos[&#039;email&#039;] = [email a recuperar, ej: prueba@prueba.com];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;rescuePassword&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Retornos del Webservice===&lt;br /&gt;
Cada tarea tendrá su propio JSON de retorno:&lt;br /&gt;
*&#039;&#039;&#039;checkActive:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;active:&#039;&#039;&#039; Indicará si la aplicación esta activa o no.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;requestFields:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;general:&#039;&#039;&#039; En caso de no haber ningún error devolverá un array con todas las traducciones generales para el idioma seleccionado.&lt;br /&gt;
**&#039;&#039;&#039;fields:&#039;&#039;&#039; En caso de no haber ningún error devolverá un array con todos los campos y sus traducciones para el idioma seleccionado.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;register:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de no haber error indicará que el registro se ha completado.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;update:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de no haber error indicará que se ha actualizado correctamente.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;login:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de no haber error indicará que se ha logeado correctamente.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;rescuePassword:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de que no haya habido un error, se mandará una cadena en el idioma seleccionado, con las instrucciones para recuperar la contraseña.&lt;br /&gt;
&lt;br /&gt;
=Campos y Formatos=&lt;br /&gt;
*&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;ua:&#039;&#039;&#039; User Agent. Es la cadena de texto que identifica al usuario ante el servidor que se esta conectando mediante HTTP. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;lmt:&#039;&#039;&#039; Limit Ad Tracking. Indicará si esta permitido el acceso al ifa del dispositivo. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;0:&#039;&#039;&#039; Inactivo/Permitido.&lt;br /&gt;
***&#039;&#039;&#039;1:&#039;&#039;&#039; Activo/No permitido.&lt;br /&gt;
**&#039;&#039;&#039;devicetype:&#039;&#039;&#039; Tipo de dispositivo. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;4:&#039;&#039;&#039; Smartphone.&lt;br /&gt;
***&#039;&#039;&#039;5:&#039;&#039;&#039; Tablet/iPad.&lt;br /&gt;
**&#039;&#039;&#039;make:&#039;&#039;&#039; Marca del dispositivo. &#039;&#039;Ejemplo: bq&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;model:&#039;&#039;&#039; Modelo del dispositivo. &#039;&#039;Ejemplo: Aquaris E5&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;os:&#039;&#039;&#039; Sistema operativo. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;Android:&#039;&#039;&#039; Android.&lt;br /&gt;
***&#039;&#039;&#039;iOs:&#039;&#039;&#039; ios.&lt;br /&gt;
**&#039;&#039;&#039;osv:&#039;&#039;&#039; Version del sistema operativo. &#039;&#039;Ejemplo: 6.0.1&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;hwv:&#039;&#039;&#039; Version del hardware. &#039;&#039;Ejemplo: Aquaris_E5&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;h:&#039;&#039;&#039; Altura de pantalla. &#039;&#039;Ejemplo: 1920&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;w:&#039;&#039;&#039; Anchura de pantalla. &#039;&#039;Ejemplo: 1080&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;ppi:&#039;&#039;&#039; Pixeles por pulgada. &#039;&#039;Ejemplo: 480&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;pxratio:&#039;&#039;&#039; Densidad de pixeles. &#039;&#039;Ejemplo: 3&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;inches:&#039;&#039;&#039; Pulgadas. &#039;&#039;Ejemplo: 4.9&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;js:&#039;&#039;&#039; Soporte para JavaScript. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;0:&#039;&#039;&#039; No.&lt;br /&gt;
***&#039;&#039;&#039;1:&#039;&#039;&#039; Si.&lt;br /&gt;
**&#039;&#039;&#039;connectiontype:&#039;&#039;&#039; Tipo de conexión. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;0:&#039;&#039;&#039; Unknown.&lt;br /&gt;
***&#039;&#039;&#039;1:&#039;&#039;&#039; Ethernet.&lt;br /&gt;
***&#039;&#039;&#039;2:&#039;&#039;&#039; WiFI.&lt;br /&gt;
***&#039;&#039;&#039;3:&#039;&#039;&#039; Cellular Network - Unkown Generation.&lt;br /&gt;
***&#039;&#039;&#039;4:&#039;&#039;&#039; Cellular Network - 2G.&lt;br /&gt;
***&#039;&#039;&#039;5:&#039;&#039;&#039; Cellular Network - 3G.&lt;br /&gt;
***&#039;&#039;&#039;6:&#039;&#039;&#039; Cellular Network - 4G.&lt;br /&gt;
**&#039;&#039;&#039;ifa:&#039;&#039;&#039; Identificador para la publicidad.  &#039;&#039;&#039;Campo obligatorio, debe de estar o el ifa o el uuid.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;Android:&#039;&#039;&#039; Google AID (Google Advertising Identifier). &#039;&#039;Ejemplo: 38400000-8cf0-11bd-b23e-10b96e40000d&#039;&#039;.&lt;br /&gt;
***&#039;&#039;&#039;iOs:&#039;&#039;&#039; iOS IFA (Apple Identifier for Advertiser). &#039;&#039;Ejemplo: AAAAAAAAA-BBBB-CCCC-1111-222222220000&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;uuid:&#039;&#039;&#039; Identificador único universal. &#039;&#039;Ejemplo: 550e8400-e29b-41d4-a716-446655440000&#039;&#039;. &#039;&#039;&#039;Campo obligatorio, debe estar el uuid o el ifa.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;language:&#039;&#039;&#039; Idioma del dispositivo ( locale ). &#039;&#039;Ejemplo: es&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;country:&#039;&#039;&#039; Pais del dispositivo ( locale ). &#039;&#039;Ejemplo: ES&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;carrier:&#039;&#039;&#039; Operador Telefónico del dispositivo. &#039;&#039;Ejemplo: Movistar&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;carriercode:&#039;&#039;&#039; Código del operador telefónico. &#039;&#039;Ejemplo: 21407&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;carriercountry:&#039;&#039;&#039; País del operador telefónico. &#039;&#039;Ejemplo: ES&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;mac: ( Solo para Android )&#039;&#039;&#039; Mac del dispositivo. &#039;&#039;Ejemplo: 00:1B:44:11:3A:B7&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;imsi: ( Solo para Android )&#039;&#039;&#039; Identidad Internacional del Abonado Móvil. &#039;&#039;Ejemplo: 7160652952503786&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;did: ( Solo para Android )&#039;&#039;&#039; Identificador Direct inward dialing (DID).&lt;br /&gt;
**&#039;&#039;&#039;dpid: ( Solo para Android )&#039;&#039;&#039; Plataform device id (Android id).&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;jsonUser:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;name:&#039;&#039;&#039; Nombre del usuario. Máximo 100 caracteres. &#039;&#039;Ejemplo: Kevin&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;surname:&#039;&#039;&#039; Apellido del usuario. Máximo 100 caracteres. &#039;&#039;Ejemplo: Lancharro&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;email:&#039;&#039;&#039; Email del usuario. Máximo 250 caracteres. &#039;&#039;Ejemplo: xxxx@xxx.com&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;password:&#039;&#039;&#039; Password del usuario. Deberá ir en md5(). Máximo 50 caracteres. &#039;&#039;Ejemplo: e10adc3949ba59abbe56e057f20f883e&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;nick:&#039;&#039;&#039; Nick del usuario. Máximo 50 caracteres. &#039;&#039;Ejemplo: CocoNilo&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;phone:&#039;&#039;&#039; Teléfono móvil del usuario. Máximo 15 caracteres. &#039;&#039;Ejemplo: 6XX XXX XXX&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;birthDate:&#039;&#039;&#039; Fecha de nacimiento del usuario. &#039;&#039;Ejemplo : 1992-01-12&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;gender:&#039;&#039;&#039; Sexo del usuario.&lt;br /&gt;
***&#039;&#039;&#039;Masculino:&#039;&#039;&#039; M.&lt;br /&gt;
***&#039;&#039;&#039;Femenino:&#039;&#039;&#039; F.&lt;br /&gt;
**&#039;&#039;&#039;allowsCommercials:&#039;&#039;&#039; Termino de privacidad con el que el usuario permite recibir comunicaciones comerciales.&lt;br /&gt;
***&#039;&#039;&#039;Permite:&#039;&#039;&#039; yes.&lt;br /&gt;
***&#039;&#039;&#039;Deniega:&#039;&#039;&#039; no.&lt;br /&gt;
**&#039;&#039;&#039;allowsCession:&#039;&#039;&#039; Termino de privacidad con el que el usuario permite que sus datos sean cedidos a terceras empresas relacionadas con el sector.&lt;br /&gt;
***&#039;&#039;&#039;Permite:&#039;&#039;&#039; yes.&lt;br /&gt;
***&#039;&#039;&#039;Deniega:&#039;&#039;&#039; no.&lt;br /&gt;
**Dependiendo de la tarea que estemos ejecutando los campos obligatorios variarán:&lt;br /&gt;
***&#039;&#039;&#039;register:&#039;&#039;&#039; Dependerá de los campos que hayamos configurado en el apartado de NickCenter en el panel de Mobeleader, como mínimo siempre será obligatorio el &#039;&#039;&#039;email&#039;&#039;&#039; y el &#039;&#039;&#039;password&#039;&#039;&#039;.&lt;br /&gt;
***&#039;&#039;&#039;update:&#039;&#039;&#039; El único campo obligatorio para las actualizaciones será el &#039;&#039;&#039;email&#039;&#039;&#039;, el resto de campos que se añadan serán los campos a actualizar.&lt;br /&gt;
***&#039;&#039;&#039;login:&#039;&#039;&#039; Dependerá de los campos que hayamos configurado en el apartado de NickCenter en el panel de Mobeleader, será obligatorio el &#039;&#039;&#039;email&#039;&#039;&#039; o el &#039;&#039;&#039;nick&#039;&#039;&#039;, junto con el &#039;&#039;&#039;password&#039;&#039;&#039;. En cualquiera de los casos el &#039;&#039;&#039;password&#039;&#039;&#039; siempre será obligatorio.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;jsonApp&#039;&#039;&#039;: Todos los campos son obligatorios&lt;br /&gt;
**&#039;&#039;&#039;name&#039;&#039;&#039;: Nombre de la aplicación dada de alta en el panel de Mobeleader. &#039;&#039;Ejemplo: Mobeleader&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;bundle&#039;&#039;&#039;: Nombre del paquete de la aplicación. &#039;&#039;Ejemplo: com.mobeleader&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;version&#039;&#039;&#039;: Version de la aplicación. &#039;&#039;Ejemplo: 1.0&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;versioncode&#039;&#039;&#039;: Código de versión de la aplicación. &#039;&#039;Ejemplo: 1&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=Códigos de Errores=&lt;br /&gt;
A continuación se expondrá una lista con los posibles errores que devolverá el Webservice en caso de que los datos no sean correctos:&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Errores generales:&#039;&#039;&#039; Estos errores se deben a un mal uso de la clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039; y/o su cifrado, por lo que al no poder devolver la cadena cifrada con la RSA Key pública que le corresponde a la aplicación, se mandarán en texto plano sin cifrar y sin formato JSON.&lt;br /&gt;
**Error 000a - Failure decrypting&lt;br /&gt;
**Error 000b - Invalid Task&lt;br /&gt;
**Error 000c - Empty or invalid app hash&lt;br /&gt;
**Error 000d - Missing public RSA Key for app hash X&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea checkActive:&#039;&#039;&#039;&lt;br /&gt;
**Error 001a - Failure checking app active&lt;br /&gt;
**Error 001b - Failure checking app active&lt;br /&gt;
**Error 001c - Failure checking app active&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea rescuePassword:&#039;&#039;&#039;&lt;br /&gt;
**Error 002a - Failure on rescuePassword&lt;br /&gt;
**Error 002b - Failure on rescuePassword&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea requestFields:&#039;&#039;&#039;&lt;br /&gt;
**Error 003a - Failure on requestFields&lt;br /&gt;
**Error 003b - Failure on requestFields&lt;br /&gt;
**Error 003c - Failure on requestFields&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 004a - Failure validating user json, there are no fields configured in your application&lt;br /&gt;
**Error 004b - Failure validating user json, incorrect json format&lt;br /&gt;
**Error 004c - Failure validating user json&lt;br /&gt;
**Error 004d - X is missing or empty in user json.&lt;br /&gt;
**Error 004e - Invalid format for X field in user json.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 005a - Failure validating device json, incorrect json format&lt;br /&gt;
**Error 005b - Failure validating device json&lt;br /&gt;
**Error 005c - Field X is missing or empty in device json&lt;br /&gt;
**Error 005c - Field ifa/uuid are missing or empty in device json, one of them must be informed&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 006a - Failure validating app json, incorrect json format&lt;br /&gt;
**Error 006b - Field X is empty in app json&lt;br /&gt;
**Error 006c - The bundle X for os Y, does not exist&lt;br /&gt;
**Error 006c - Invalid X in app json, it must be numeric&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 007a - Failure generating library json, incorrect device json format&lt;br /&gt;
**Error 007b - Failure generating library json, wrong os in device json&lt;br /&gt;
**Error 007c - Failure generating library json, wrong os in device json&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register:&#039;&#039;&#039;&lt;br /&gt;
**Error 008a - Failure registering&lt;br /&gt;
**Error 008b - Failure registering&lt;br /&gt;
**Error 008c - Email already exists&lt;br /&gt;
**Error 008c - Nick already exists&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea login:&#039;&#039;&#039;&lt;br /&gt;
**Error 009 - Failure on login&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea update:&#039;&#039;&#039;&lt;br /&gt;
**Error 010 - Failure updating&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Sin tarea/Tarea erronea:&#039;&#039;&#039;&lt;br /&gt;
**Error 011a - Empty Task&lt;br /&gt;
**Error 011b - Invalid Task&lt;/div&gt;</summary>
		<author><name>Kevin</name></author>
	</entry>
	<entry>
		<id>https://wiki.mobeleader.com/index.php?title=Documentaci%C3%B3n_Webservice_NickCenter&amp;diff=2182</id>
		<title>Documentación Webservice NickCenter</title>
		<link rel="alternate" type="text/html" href="https://wiki.mobeleader.com/index.php?title=Documentaci%C3%B3n_Webservice_NickCenter&amp;diff=2182"/>
		<updated>2018-09-12T07:50:54Z</updated>

		<summary type="html">&lt;p&gt;Kevin: /* Uso de la clase spsApiNickcenter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduccion=&lt;br /&gt;
En ésta documentación se expondrá como deberemos hacer uso del Webservice de NickCenter, de manera que emule la propia librería de NickCenter y así no haya la necesidad de usarla ni implementarla en las aplicaciones. A pesar de ello, la configuración en el panel de Mobeleader será la misma, siendo necesario dar de alta la aplicación en éste, y configurandola para el uso de NickCenter. Podremos hacer uso de dicho Webservice de dos maneras:&lt;br /&gt;
#Llamada directa al Webservice. Ésta opción será menos segura debido a que los datos irán sin cifrar.&lt;br /&gt;
#Usando la clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039; creada por Mobeleader. Esta opción será mas segura ya que cuenta con un cifrado mediante RSA Keys generadas en nuestro sistema.&lt;br /&gt;
&lt;br /&gt;
=Llamada directa=&lt;br /&gt;
Si queremos usar directamente el Webservice de Nickcenter sin la necesidad de usar la clase &#039;&#039;&#039;spsApiNickCenter&#039;&#039;&#039;, esta será la URL a la que deberemos conectarnos &#039;&#039;https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=&#039;&#039;. Más adelante se expondrán que tareas hay disponibles y como hay que mandar los datos para su ejecución.&lt;br /&gt;
&lt;br /&gt;
=Uso de la clase spsApiNickcenter=&lt;br /&gt;
Esta clase accesible desde [[Medio:Api_nickcenter_client.zip|aquí]], esta pensada para una mayor comodidad del cliente, permitiendo que todo se gestione desde ésta sin necesidad de tener que programar las llamadas y retornos del Webservice. A continuación se expondrán los pasos a seguir para un correcto funcionamiento de la clase:&lt;br /&gt;
==Instalación PHPSECLIB==&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Será necesario disponer de phpseclib versión 2.0.11 o superior.&lt;br /&gt;
Los pasos para instalar esta versión de phpseclib son:&amp;lt;br /&amp;gt;&lt;br /&gt;
- Disponer de la herramienta &amp;quot;composer.phar&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
- Ejecutar &amp;quot;composer&amp;quot; en la carpeta donde vaya a instalar nuestra librería.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.- Descargar composer desde: https://getcomposer.org/composer.phar&lt;br /&gt;
&amp;lt;pre&amp;gt;curl https://getcomposer.org/composer.phar -o composer.phar&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.- Ejecutar el comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;php composer.phar --working-dir=. require phpseclib/phpseclib:~2.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hecho esto, obtendrá la siguiente salida por consola:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./composer.json has been created&lt;br /&gt;
Loading composer repositories with package information&lt;br /&gt;
Updating dependencies (including require-dev)&lt;br /&gt;
Package operations: 1 install, 0 updates, 0 removals&lt;br /&gt;
  - Installing phpseclib/phpseclib (2.0.11): Downloading (100%)         &lt;br /&gt;
phpseclib/phpseclib suggests installing ext-libsodium (SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.)&lt;br /&gt;
phpseclib/phpseclib suggests installing ext-mcrypt (Install the Mcrypt extension in order to speed up a few other cryptographic operations.)&lt;br /&gt;
phpseclib/phpseclib suggests installing ext-gmp (Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.)&lt;br /&gt;
Writing lock file&lt;br /&gt;
Generating autoload files&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto significa que está todo lo necesario instalado en su carpeta vendor.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Clase spsApiNickcenter==&lt;br /&gt;
Una vez instalada la librería &#039;&#039;&#039;PHPSECLIB&#039;&#039;&#039; en nuestra carpeta vendor, lo primero que debemos hacer es abrir la clase y modificar la ruta de acceso a dicha carpeta.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
require_once &#039;PATH..../vendor/autoload.php&#039;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Una vez modificada la ruta, para poder instanciar la clase deberemos coger la cadena de la &#039;&#039;&#039;RSA KEY Privada&#039;&#039;&#039;, accesible desde https://panel.mobeleader.com/index.php?sec=6, y reemplazarla en el siguiente codigo.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA]);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Si la instalación de la librería es correcta, la ruta de acceso a ésta ha sido cambiada y es correcta, y la &#039;&#039;&#039;RSA KEY Privada&#039;&#039;&#039; es correcta, para realizar las llamadas al Webservice usaremos la funcion &#039;&#039;&#039;getData()&#039;&#039;&#039; de la clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039;. Dicha función será la encargada de realizar todas las conexiones al Webservice, de cifrar los datos que enviaremos a éste y de descifrar los que datos que nos retorne.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(tarea, array_datos)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
A continuación se exponen cuales son las distintas tareas ejecutables, y como ha de ser el array de datos para posibilitar dicha ejecución.&lt;br /&gt;
&lt;br /&gt;
=Tareas=&lt;br /&gt;
La clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039; consta de la función &#039;&#039;getData(&#039;&#039;&#039;tarea, array_datos&#039;&#039;&#039;)&#039;&#039;, con la que ejecutaremos las distintas operaciones que el Webservice permite y a la que le deberemos mandar los siguientes parámetros:&lt;br /&gt;
#&#039;&#039;&#039;tarea:&#039;&#039;&#039; Sera la propia tarea a realizar, puediendo ser:&lt;br /&gt;
##&#039;&#039;&#039;checkActive&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;requestFields&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;register&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;update&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;login&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;rescuePassword&#039;&#039;&#039;.&lt;br /&gt;
#&#039;&#039;&#039;array_datos:&#039;&#039;&#039; Contendrá un array con los datos necesarios para la ejecución de la tarea.&lt;br /&gt;
===Llamadas al Webservice===&lt;br /&gt;
&#039;&#039;Recuerde reemplazar el contenido de los ejemplos por los valores reales&#039;&#039;.&lt;br /&gt;
*&#039;&#039;&#039;checkActive:&#039;&#039;&#039; Esta tarea comprobará que la aplicación tenga NickCenter activo, independientemente de usarla directamente o no, el resto de tareas harán uso de ella antes de realizar sus operaciones propias.&lt;br /&gt;
:*&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de Mobeleader.&lt;br /&gt;
:*&#039;&#039;&#039;country:&#039;&#039;&#039; Contendrá el país del dispositivo, necesario para comprobar si NickCenter esta activo para esa aplicación en ese país.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=checkActive&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;country=[código país, ej: ES]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;country&#039;] = [código país, ej: ES];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;checkActive&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;requestFields:&#039;&#039;&#039; Mediante ésta tarea obtendremos la configuración de campos y traducciones para una determinada vista.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de  Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;view:&#039;&#039;&#039; Indicará los campos de que vista solicitamos.&lt;br /&gt;
***&#039;&#039;&#039;register:&#039;&#039;&#039; Pantalla inicial del registro.&lt;br /&gt;
***&#039;&#039;&#039;login:&#039;&#039;&#039; Pantalla de login.&lt;br /&gt;
***&#039;&#039;&#039;rescue:&#039;&#039;&#039; Pantalla de recuperación de contraseña.&lt;br /&gt;
**&#039;&#039;&#039;country:&#039;&#039;&#039; Contendrá el país del dispositivo, necesario para comprobar si NickCenter esta activo para esa aplicación en ese país.&lt;br /&gt;
**&#039;&#039;&#039;language:&#039;&#039;&#039; Idioma del dispositivo, necesario para las traducciones y las configuraciones de los campos que se retornarán.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=requestFields&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;view=[vista, ej: register]&amp;amp;country=[código país, ej: ES]&amp;amp;language=[código idioma, ej: es]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;view&#039;] = [vista, ej: register];&lt;br /&gt;
$array_datos[&#039;country&#039;] = [código país, ej: ES];&lt;br /&gt;
$array_datos[&#039;language&#039;] = [código idioma, ej: es];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;requestFields&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;register:&#039;&#039;&#039; Esta tarea servirá para registrar un usuario en nuestro sistema.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de  Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039; Contendrá los datos del dispositivo. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonApp:&#039;&#039;&#039; Contendrá los datos de la aplicación. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonUser:&#039;&#039;&#039; Contendrá los datos del usuario. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=register&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;jsonDevice=[json con toda la información del dispositivo]&amp;amp;jsonApp=[json con toda la información de la app]&amp;amp;jsonUser=[json con toda la información a registrar del usuario]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;jsonDevice&#039;] = [json con toda la información del dispositivo];&lt;br /&gt;
$array_datos[&#039;jsonApp&#039;] = [json con toda la información de la app];&lt;br /&gt;
$array_datos[&#039;jsonUser&#039;] = [json con toda la información a registrar del usuario];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;register&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;update:&#039;&#039;&#039; Esta tarea servirá para actualizar un usuario que previamente haya sido registrado en nuestro sistema.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de  Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039; Contendrá los datos del dispositivo. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonApp:&#039;&#039;&#039; Contendrá los datos de la aplicación. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonUser:&#039;&#039;&#039; Contendrá los datos del usuario. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=update&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;jsonDevice=[json con toda la información del dispositivo]&amp;amp;jsonApp=[json con toda la información de la app]&amp;amp;jsonUser=[json con toda la información a actualizar del usuario]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;jsonDevice&#039;] = [json con toda la información del dispositivo];&lt;br /&gt;
$array_datos[&#039;jsonApp&#039;] = [json con toda la información de la app];&lt;br /&gt;
$array_datos[&#039;jsonUser&#039;] = [json con toda la información a actualizar del usuario];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;update&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;login:&#039;&#039;&#039; Esta tarea servirá para hacer login en las aplicaciones registradas en NickCenter, con usuarios previamente registrados en nuestro sistema.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta el panel de  en Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039; Contendrá los datos del dispositivo. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonApp:&#039;&#039;&#039; Contendrá los datos de la aplicación. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonUser:&#039;&#039;&#039; Contendrá los datos del usuario. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=login&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;jsonDevice=[json con toda la información del dispositivo]&amp;amp;jsonApp=[json con toda la información de la app]&amp;amp;jsonUser=[json con toda la información necesaria para el login]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;jsonDevice&#039;] = [json con toda la información del dispositivo];&lt;br /&gt;
$array_datos[&#039;jsonApp&#039;] = [json con toda la información de la app];&lt;br /&gt;
$array_datos[&#039;jsonUser&#039;] = [json con toda la información necesaria para el login];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;login&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;rescuePassword:&#039;&#039;&#039; Mediante ésta tarea restauraremos la contraseña de usuarios previamente registrados en nuestro sistema y que no esten dados de baja.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta el panel de  en Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;country:&#039;&#039;&#039; Contendrá el país del dispositivo, necesario para comprobar si NickCenter esta activo para esa aplicación en ese país.&lt;br /&gt;
**&#039;&#039;&#039;language:&#039;&#039;&#039; Idioma del dispositivo, necesario para las traducciones que se retornarán.&lt;br /&gt;
**&#039;&#039;&#039;email:&#039;&#039;&#039; Email al que hay que restaurar la contraseña.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=rescuePassword&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;country=[código país, ej: ES]&amp;amp;language=[código idioma, ej: es]&amp;amp;email=[email a recuperar, ej: prueba@prueba.com]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;country&#039;] = [código país, ej: ES];&lt;br /&gt;
$array_datos[&#039;language&#039;] = [código idioma, ej: es];&lt;br /&gt;
$array_datos[&#039;email&#039;] = [email a recuperar, ej: prueba@prueba.com];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;rescuePassword&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Retornos del Webservice===&lt;br /&gt;
Cada tarea tendrá su propio JSON de retorno:&lt;br /&gt;
*&#039;&#039;&#039;checkActive:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;active:&#039;&#039;&#039; Indicará si la aplicación esta activa o no.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;requestFields:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;general:&#039;&#039;&#039; En caso de no haber ningún error devolverá un array con todas las traducciones generales para el idioma seleccionado.&lt;br /&gt;
**&#039;&#039;&#039;fields:&#039;&#039;&#039; En caso de no haber ningún error devolverá un array con todos los campos y sus traducciones para el idioma seleccionado.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;register:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de no haber error indicará que el registro se ha completado.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;update:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de no haber error indicará que se ha actualizado correctamente.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;login:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de no haber error indicará que se ha logeado correctamente.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;rescuePassword:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de que no haya habido un error, se mandará una cadena en el idioma seleccionado, con las instrucciones para recuperar la contraseña.&lt;br /&gt;
&lt;br /&gt;
=Campos y Formatos=&lt;br /&gt;
*&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;ua:&#039;&#039;&#039; User Agent. Es la cadena de texto que identifica al usuario ante el servidor que se esta conectando mediante HTTP. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;lmt:&#039;&#039;&#039; Limit Ad Tracking. Indicará si esta permitido el acceso al ifa del dispositivo. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;0:&#039;&#039;&#039; Inactivo/Permitido.&lt;br /&gt;
***&#039;&#039;&#039;1:&#039;&#039;&#039; Activo/No permitido.&lt;br /&gt;
**&#039;&#039;&#039;devicetype:&#039;&#039;&#039; Tipo de dispositivo. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;4:&#039;&#039;&#039; Smartphone.&lt;br /&gt;
***&#039;&#039;&#039;5:&#039;&#039;&#039; Tablet/iPad.&lt;br /&gt;
**&#039;&#039;&#039;make:&#039;&#039;&#039; Marca del dispositivo. &#039;&#039;Ejemplo: bq&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;model:&#039;&#039;&#039; Modelo del dispositivo. &#039;&#039;Ejemplo: Aquaris E5&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;os:&#039;&#039;&#039; Sistema operativo. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;Android:&#039;&#039;&#039; Android.&lt;br /&gt;
***&#039;&#039;&#039;iOs:&#039;&#039;&#039; ios.&lt;br /&gt;
**&#039;&#039;&#039;osv:&#039;&#039;&#039; Version del sistema operativo. &#039;&#039;Ejemplo: 6.0.1&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;hwv:&#039;&#039;&#039; Version del hardware. &#039;&#039;Ejemplo: Aquaris_E5&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;h:&#039;&#039;&#039; Altura de pantalla. &#039;&#039;Ejemplo: 1920&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;w:&#039;&#039;&#039; Anchura de pantalla. &#039;&#039;Ejemplo: 1080&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;ppi:&#039;&#039;&#039; Pixeles por pulgada. &#039;&#039;Ejemplo: 480&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;pxratio:&#039;&#039;&#039; Densidad de pixeles. &#039;&#039;Ejemplo: 3&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;inches:&#039;&#039;&#039; Pulgadas. &#039;&#039;Ejemplo: 4.9&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;js:&#039;&#039;&#039; Soporte para JavaScript. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;0:&#039;&#039;&#039; No.&lt;br /&gt;
***&#039;&#039;&#039;1:&#039;&#039;&#039; Si.&lt;br /&gt;
**&#039;&#039;&#039;connectiontype:&#039;&#039;&#039; Tipo de conexión. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;0:&#039;&#039;&#039; Unknown.&lt;br /&gt;
***&#039;&#039;&#039;1:&#039;&#039;&#039; Ethernet.&lt;br /&gt;
***&#039;&#039;&#039;2:&#039;&#039;&#039; WiFI.&lt;br /&gt;
***&#039;&#039;&#039;3:&#039;&#039;&#039; Cellular Network - Unkown Generation.&lt;br /&gt;
***&#039;&#039;&#039;4:&#039;&#039;&#039; Cellular Network - 2G.&lt;br /&gt;
***&#039;&#039;&#039;5:&#039;&#039;&#039; Cellular Network - 3G.&lt;br /&gt;
***&#039;&#039;&#039;6:&#039;&#039;&#039; Cellular Network - 4G.&lt;br /&gt;
**&#039;&#039;&#039;ifa:&#039;&#039;&#039; Identificador para la publicidad.  &#039;&#039;&#039;Campo obligatorio, debe de estar o el ifa o el uuid.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;Android:&#039;&#039;&#039; Google AID (Google Advertising Identifier). &#039;&#039;Ejemplo: 38400000-8cf0-11bd-b23e-10b96e40000d&#039;&#039;.&lt;br /&gt;
***&#039;&#039;&#039;iOs:&#039;&#039;&#039; iOS IFA (Apple Identifier for Advertiser). &#039;&#039;Ejemplo: AAAAAAAAA-BBBB-CCCC-1111-222222220000&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;uuid:&#039;&#039;&#039; Identificador único universal. &#039;&#039;Ejemplo: 550e8400-e29b-41d4-a716-446655440000&#039;&#039;. &#039;&#039;&#039;Campo obligatorio, debe estar el uuid o el ifa.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;language:&#039;&#039;&#039; Idioma del dispositivo ( locale ). &#039;&#039;Ejemplo: es&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;country:&#039;&#039;&#039; Pais del dispositivo ( locale ). &#039;&#039;Ejemplo: ES&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;carrier:&#039;&#039;&#039; Operador Telefónico del dispositivo. &#039;&#039;Ejemplo: Movistar&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;carriercode:&#039;&#039;&#039; Código del operador telefónico. &#039;&#039;Ejemplo: 21407&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;carriercountry:&#039;&#039;&#039; País del operador telefónico. &#039;&#039;Ejemplo: ES&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;mac: ( Solo para Android )&#039;&#039;&#039; Mac del dispositivo. &#039;&#039;Ejemplo: 00:1B:44:11:3A:B7&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;imsi: ( Solo para Android )&#039;&#039;&#039; Identidad Internacional del Abonado Móvil. &#039;&#039;Ejemplo: 7160652952503786&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;did: ( Solo para Android )&#039;&#039;&#039; Identificador Direct inward dialing (DID).&lt;br /&gt;
**&#039;&#039;&#039;dpid: ( Solo para Android )&#039;&#039;&#039; Plataform device id (Android id).&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;jsonUser:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;name:&#039;&#039;&#039; Nombre del usuario. Máximo 100 caracteres. &#039;&#039;Ejemplo: Kevin&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;surname:&#039;&#039;&#039; Apellido del usuario. Máximo 100 caracteres. &#039;&#039;Ejemplo: Lancharro&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;email:&#039;&#039;&#039; Email del usuario. Máximo 250 caracteres. &#039;&#039;Ejemplo: xxxx@xxx.com&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;password:&#039;&#039;&#039; Password del usuario. Deberá ir en md5(). Máximo 50 caracteres. &#039;&#039;Ejemplo: e10adc3949ba59abbe56e057f20f883e&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;nick:&#039;&#039;&#039; Nick del usuario. Máximo 50 caracteres. &#039;&#039;Ejemplo: CocoNilo&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;phone:&#039;&#039;&#039; Teléfono móvil del usuario. Máximo 15 caracteres. &#039;&#039;Ejemplo: 6XX XXX XXX&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;birthDate:&#039;&#039;&#039; Fecha de nacimiento del usuario. &#039;&#039;Ejemplo : 1992-01-12&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;gender:&#039;&#039;&#039; Sexo del usuario.&lt;br /&gt;
***&#039;&#039;&#039;Masculino:&#039;&#039;&#039; M.&lt;br /&gt;
***&#039;&#039;&#039;Femenino:&#039;&#039;&#039; F.&lt;br /&gt;
**&#039;&#039;&#039;allowsCommercials:&#039;&#039;&#039; Termino de privacidad con el que el usuario permite recibir comunicaciones comerciales.&lt;br /&gt;
***&#039;&#039;&#039;Permite:&#039;&#039;&#039; yes.&lt;br /&gt;
***&#039;&#039;&#039;Deniega:&#039;&#039;&#039; no.&lt;br /&gt;
**&#039;&#039;&#039;allowsCession:&#039;&#039;&#039; Termino de privacidad con el que el usuario permite que sus datos sean cedidos a terceras empresas relacionadas con el sector.&lt;br /&gt;
***&#039;&#039;&#039;Permite:&#039;&#039;&#039; yes.&lt;br /&gt;
***&#039;&#039;&#039;Deniega:&#039;&#039;&#039; no.&lt;br /&gt;
**Dependiendo de la tarea que estemos ejecutando los campos obligatorios variarán:&lt;br /&gt;
***&#039;&#039;&#039;register:&#039;&#039;&#039; Dependerá de los campos que hayamos configurado en el apartado de NickCenter en el panel de Mobeleader, como mínimo siempre será obligatorio el &#039;&#039;&#039;email&#039;&#039;&#039; y el &#039;&#039;&#039;password&#039;&#039;&#039;.&lt;br /&gt;
***&#039;&#039;&#039;update:&#039;&#039;&#039; El único campo obligatorio para las actualizaciones será el &#039;&#039;&#039;email&#039;&#039;&#039;, el resto de campos que se añadan serán los campos a actualizar.&lt;br /&gt;
***&#039;&#039;&#039;login:&#039;&#039;&#039; Dependerá de los campos que hayamos configurado en el apartado de NickCenter en el panel de Mobeleader, será obligatorio el &#039;&#039;&#039;email&#039;&#039;&#039; o el &#039;&#039;&#039;nick&#039;&#039;&#039;, junto con el &#039;&#039;&#039;password&#039;&#039;&#039;. En cualquiera de los casos el &#039;&#039;&#039;password&#039;&#039;&#039; siempre será obligatorio.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;jsonApp&#039;&#039;&#039;: Todos los campos son obligatorios&lt;br /&gt;
**&#039;&#039;&#039;name&#039;&#039;&#039;: Nombre de la aplicación dada de alta en el panel de Mobeleader. &#039;&#039;Ejemplo: Mobeleader&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;bundle&#039;&#039;&#039;: Nombre del paquete de la aplicación. &#039;&#039;Ejemplo: com.mobeleader&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;version&#039;&#039;&#039;: Version de la aplicación. &#039;&#039;Ejemplo: 1.0&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;versioncode&#039;&#039;&#039;: Código de versión de la aplicación. &#039;&#039;Ejemplo: 1&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=Códigos de Errores=&lt;br /&gt;
A continuación se expondrá una lista con los posibles errores que devolverá el Webservice en caso de que los datos no sean correctos:&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Errores generales:&#039;&#039;&#039; Estos errores se deben a un mal uso de la clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039; y/o su cifrado, por lo que al no poder devolver la cadena cifrada con la RSA Key pública que le corresponde a la aplicación, se mandarán en texto plano sin cifrar y sin formato JSON.&lt;br /&gt;
**Error 000a - Failure decrypting&lt;br /&gt;
**Error 000b - Invalid Task&lt;br /&gt;
**Error 000c - Empty or invalid app hash&lt;br /&gt;
**Error 000d - Missing public RSA Key for app hash X&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea checkActive:&#039;&#039;&#039;&lt;br /&gt;
**Error 001a - Failure checking app active&lt;br /&gt;
**Error 001b - Failure checking app active&lt;br /&gt;
**Error 001c - Failure checking app active&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea rescuePassword:&#039;&#039;&#039;&lt;br /&gt;
**Error 002a - Failure on rescuePassword&lt;br /&gt;
**Error 002b - Failure on rescuePassword&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea requestFields:&#039;&#039;&#039;&lt;br /&gt;
**Error 003a - Failure on requestFields&lt;br /&gt;
**Error 003b - Failure on requestFields&lt;br /&gt;
**Error 003c - Failure on requestFields&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 004a - Failure validating user json, there are no fields configured in your application&lt;br /&gt;
**Error 004b - Failure validating user json, incorrect json format&lt;br /&gt;
**Error 004c - Failure validating user json&lt;br /&gt;
**Error 004d - X is missing or empty in user json.&lt;br /&gt;
**Error 004e - Invalid format for X field in user json.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 005a - Failure validating device json, incorrect json format&lt;br /&gt;
**Error 005b - Failure validating device json&lt;br /&gt;
**Error 005c - Field X is missing or empty in device json&lt;br /&gt;
**Error 005c - Field ifa/uuid are missing or empty in device json, one of them must be informed&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 006a - Failure validating app json, incorrect json format&lt;br /&gt;
**Error 006b - Field X is empty in app json&lt;br /&gt;
**Error 006c - The bundle X for os Y, does not exist&lt;br /&gt;
**Error 006c - Invalid X in app json, it must be numeric&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 007a - Failure generating library json, incorrect device json format&lt;br /&gt;
**Error 007b - Failure generating library json, wrong os in device json&lt;br /&gt;
**Error 007c - Failure generating library json, wrong os in device json&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register:&#039;&#039;&#039;&lt;br /&gt;
**Error 008a - Failure registering&lt;br /&gt;
**Error 008b - Failure registering&lt;br /&gt;
**Error 008c - Email already exists&lt;br /&gt;
**Error 008c - Nick already exists&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea login:&#039;&#039;&#039;&lt;br /&gt;
**Error 009 - Failure on login&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea update:&#039;&#039;&#039;&lt;br /&gt;
**Error 010 - Failure updating&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Sin tarea/Tarea erronea:&#039;&#039;&#039;&lt;br /&gt;
**Error 011a - Empty Task&lt;br /&gt;
**Error 011b - Invalid Task&lt;/div&gt;</summary>
		<author><name>Kevin</name></author>
	</entry>
	<entry>
		<id>https://wiki.mobeleader.com/index.php?title=Documentaci%C3%B3n_Webservice_NickCenter&amp;diff=2181</id>
		<title>Documentación Webservice NickCenter</title>
		<link rel="alternate" type="text/html" href="https://wiki.mobeleader.com/index.php?title=Documentaci%C3%B3n_Webservice_NickCenter&amp;diff=2181"/>
		<updated>2018-09-12T07:50:35Z</updated>

		<summary type="html">&lt;p&gt;Kevin: /* Uso de la clase spsApiNickcenter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduccion=&lt;br /&gt;
En ésta documentación se expondrá como deberemos hacer uso del Webservice de NickCenter, de manera que emule la propia librería de NickCenter y así no haya la necesidad de usarla ni implementarla en las aplicaciones. A pesar de ello, la configuración en el panel de Mobeleader será la misma, siendo necesario dar de alta la aplicación en éste, y configurandola para el uso de NickCenter. Podremos hacer uso de dicho Webservice de dos maneras:&lt;br /&gt;
#Llamada directa al Webservice. Ésta opción será menos segura debido a que los datos irán sin cifrar.&lt;br /&gt;
#Usando la clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039; creada por Mobeleader. Esta opción será mas segura ya que cuenta con un cifrado mediante RSA Keys generadas en nuestro sistema.&lt;br /&gt;
&lt;br /&gt;
=Llamada directa=&lt;br /&gt;
Si queremos usar directamente el Webservice de Nickcenter sin la necesidad de usar la clase &#039;&#039;&#039;spsApiNickCenter&#039;&#039;&#039;, esta será la URL a la que deberemos conectarnos &#039;&#039;https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=&#039;&#039;. Más adelante se expondrán que tareas hay disponibles y como hay que mandar los datos para su ejecución.&lt;br /&gt;
&lt;br /&gt;
=Uso de la clase spsApiNickcenter=&lt;br /&gt;
Esta clase accesible desde [[Medio:Api_nickcenter_client.zip||aquí]], esta pensada para una mayor comodidad del cliente, permitiendo que todo se gestione desde ésta sin necesidad de tener que programar las llamadas y retornos del Webservice. A continuación se expondrán los pasos a seguir para un correcto funcionamiento de la clase:&lt;br /&gt;
==Instalación PHPSECLIB==&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Será necesario disponer de phpseclib versión 2.0.11 o superior.&lt;br /&gt;
Los pasos para instalar esta versión de phpseclib son:&amp;lt;br /&amp;gt;&lt;br /&gt;
- Disponer de la herramienta &amp;quot;composer.phar&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
- Ejecutar &amp;quot;composer&amp;quot; en la carpeta donde vaya a instalar nuestra librería.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.- Descargar composer desde: https://getcomposer.org/composer.phar&lt;br /&gt;
&amp;lt;pre&amp;gt;curl https://getcomposer.org/composer.phar -o composer.phar&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.- Ejecutar el comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;php composer.phar --working-dir=. require phpseclib/phpseclib:~2.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hecho esto, obtendrá la siguiente salida por consola:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./composer.json has been created&lt;br /&gt;
Loading composer repositories with package information&lt;br /&gt;
Updating dependencies (including require-dev)&lt;br /&gt;
Package operations: 1 install, 0 updates, 0 removals&lt;br /&gt;
  - Installing phpseclib/phpseclib (2.0.11): Downloading (100%)         &lt;br /&gt;
phpseclib/phpseclib suggests installing ext-libsodium (SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.)&lt;br /&gt;
phpseclib/phpseclib suggests installing ext-mcrypt (Install the Mcrypt extension in order to speed up a few other cryptographic operations.)&lt;br /&gt;
phpseclib/phpseclib suggests installing ext-gmp (Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.)&lt;br /&gt;
Writing lock file&lt;br /&gt;
Generating autoload files&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto significa que está todo lo necesario instalado en su carpeta vendor.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Clase spsApiNickcenter==&lt;br /&gt;
Una vez instalada la librería &#039;&#039;&#039;PHPSECLIB&#039;&#039;&#039; en nuestra carpeta vendor, lo primero que debemos hacer es abrir la clase y modificar la ruta de acceso a dicha carpeta.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
require_once &#039;PATH..../vendor/autoload.php&#039;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Una vez modificada la ruta, para poder instanciar la clase deberemos coger la cadena de la &#039;&#039;&#039;RSA KEY Privada&#039;&#039;&#039;, accesible desde https://panel.mobeleader.com/index.php?sec=6, y reemplazarla en el siguiente codigo.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA]);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Si la instalación de la librería es correcta, la ruta de acceso a ésta ha sido cambiada y es correcta, y la &#039;&#039;&#039;RSA KEY Privada&#039;&#039;&#039; es correcta, para realizar las llamadas al Webservice usaremos la funcion &#039;&#039;&#039;getData()&#039;&#039;&#039; de la clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039;. Dicha función será la encargada de realizar todas las conexiones al Webservice, de cifrar los datos que enviaremos a éste y de descifrar los que datos que nos retorne.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(tarea, array_datos)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
A continuación se exponen cuales son las distintas tareas ejecutables, y como ha de ser el array de datos para posibilitar dicha ejecución.&lt;br /&gt;
&lt;br /&gt;
=Tareas=&lt;br /&gt;
La clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039; consta de la función &#039;&#039;getData(&#039;&#039;&#039;tarea, array_datos&#039;&#039;&#039;)&#039;&#039;, con la que ejecutaremos las distintas operaciones que el Webservice permite y a la que le deberemos mandar los siguientes parámetros:&lt;br /&gt;
#&#039;&#039;&#039;tarea:&#039;&#039;&#039; Sera la propia tarea a realizar, puediendo ser:&lt;br /&gt;
##&#039;&#039;&#039;checkActive&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;requestFields&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;register&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;update&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;login&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;rescuePassword&#039;&#039;&#039;.&lt;br /&gt;
#&#039;&#039;&#039;array_datos:&#039;&#039;&#039; Contendrá un array con los datos necesarios para la ejecución de la tarea.&lt;br /&gt;
===Llamadas al Webservice===&lt;br /&gt;
&#039;&#039;Recuerde reemplazar el contenido de los ejemplos por los valores reales&#039;&#039;.&lt;br /&gt;
*&#039;&#039;&#039;checkActive:&#039;&#039;&#039; Esta tarea comprobará que la aplicación tenga NickCenter activo, independientemente de usarla directamente o no, el resto de tareas harán uso de ella antes de realizar sus operaciones propias.&lt;br /&gt;
:*&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de Mobeleader.&lt;br /&gt;
:*&#039;&#039;&#039;country:&#039;&#039;&#039; Contendrá el país del dispositivo, necesario para comprobar si NickCenter esta activo para esa aplicación en ese país.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=checkActive&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;country=[código país, ej: ES]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;country&#039;] = [código país, ej: ES];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;checkActive&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;requestFields:&#039;&#039;&#039; Mediante ésta tarea obtendremos la configuración de campos y traducciones para una determinada vista.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de  Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;view:&#039;&#039;&#039; Indicará los campos de que vista solicitamos.&lt;br /&gt;
***&#039;&#039;&#039;register:&#039;&#039;&#039; Pantalla inicial del registro.&lt;br /&gt;
***&#039;&#039;&#039;login:&#039;&#039;&#039; Pantalla de login.&lt;br /&gt;
***&#039;&#039;&#039;rescue:&#039;&#039;&#039; Pantalla de recuperación de contraseña.&lt;br /&gt;
**&#039;&#039;&#039;country:&#039;&#039;&#039; Contendrá el país del dispositivo, necesario para comprobar si NickCenter esta activo para esa aplicación en ese país.&lt;br /&gt;
**&#039;&#039;&#039;language:&#039;&#039;&#039; Idioma del dispositivo, necesario para las traducciones y las configuraciones de los campos que se retornarán.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=requestFields&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;view=[vista, ej: register]&amp;amp;country=[código país, ej: ES]&amp;amp;language=[código idioma, ej: es]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;view&#039;] = [vista, ej: register];&lt;br /&gt;
$array_datos[&#039;country&#039;] = [código país, ej: ES];&lt;br /&gt;
$array_datos[&#039;language&#039;] = [código idioma, ej: es];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;requestFields&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;register:&#039;&#039;&#039; Esta tarea servirá para registrar un usuario en nuestro sistema.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de  Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039; Contendrá los datos del dispositivo. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonApp:&#039;&#039;&#039; Contendrá los datos de la aplicación. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonUser:&#039;&#039;&#039; Contendrá los datos del usuario. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=register&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;jsonDevice=[json con toda la información del dispositivo]&amp;amp;jsonApp=[json con toda la información de la app]&amp;amp;jsonUser=[json con toda la información a registrar del usuario]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;jsonDevice&#039;] = [json con toda la información del dispositivo];&lt;br /&gt;
$array_datos[&#039;jsonApp&#039;] = [json con toda la información de la app];&lt;br /&gt;
$array_datos[&#039;jsonUser&#039;] = [json con toda la información a registrar del usuario];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;register&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;update:&#039;&#039;&#039; Esta tarea servirá para actualizar un usuario que previamente haya sido registrado en nuestro sistema.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de  Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039; Contendrá los datos del dispositivo. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonApp:&#039;&#039;&#039; Contendrá los datos de la aplicación. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonUser:&#039;&#039;&#039; Contendrá los datos del usuario. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=update&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;jsonDevice=[json con toda la información del dispositivo]&amp;amp;jsonApp=[json con toda la información de la app]&amp;amp;jsonUser=[json con toda la información a actualizar del usuario]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;jsonDevice&#039;] = [json con toda la información del dispositivo];&lt;br /&gt;
$array_datos[&#039;jsonApp&#039;] = [json con toda la información de la app];&lt;br /&gt;
$array_datos[&#039;jsonUser&#039;] = [json con toda la información a actualizar del usuario];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;update&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;login:&#039;&#039;&#039; Esta tarea servirá para hacer login en las aplicaciones registradas en NickCenter, con usuarios previamente registrados en nuestro sistema.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta el panel de  en Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039; Contendrá los datos del dispositivo. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonApp:&#039;&#039;&#039; Contendrá los datos de la aplicación. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonUser:&#039;&#039;&#039; Contendrá los datos del usuario. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=login&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;jsonDevice=[json con toda la información del dispositivo]&amp;amp;jsonApp=[json con toda la información de la app]&amp;amp;jsonUser=[json con toda la información necesaria para el login]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;jsonDevice&#039;] = [json con toda la información del dispositivo];&lt;br /&gt;
$array_datos[&#039;jsonApp&#039;] = [json con toda la información de la app];&lt;br /&gt;
$array_datos[&#039;jsonUser&#039;] = [json con toda la información necesaria para el login];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;login&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;rescuePassword:&#039;&#039;&#039; Mediante ésta tarea restauraremos la contraseña de usuarios previamente registrados en nuestro sistema y que no esten dados de baja.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta el panel de  en Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;country:&#039;&#039;&#039; Contendrá el país del dispositivo, necesario para comprobar si NickCenter esta activo para esa aplicación en ese país.&lt;br /&gt;
**&#039;&#039;&#039;language:&#039;&#039;&#039; Idioma del dispositivo, necesario para las traducciones que se retornarán.&lt;br /&gt;
**&#039;&#039;&#039;email:&#039;&#039;&#039; Email al que hay que restaurar la contraseña.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=rescuePassword&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;country=[código país, ej: ES]&amp;amp;language=[código idioma, ej: es]&amp;amp;email=[email a recuperar, ej: prueba@prueba.com]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;country&#039;] = [código país, ej: ES];&lt;br /&gt;
$array_datos[&#039;language&#039;] = [código idioma, ej: es];&lt;br /&gt;
$array_datos[&#039;email&#039;] = [email a recuperar, ej: prueba@prueba.com];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;rescuePassword&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Retornos del Webservice===&lt;br /&gt;
Cada tarea tendrá su propio JSON de retorno:&lt;br /&gt;
*&#039;&#039;&#039;checkActive:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;active:&#039;&#039;&#039; Indicará si la aplicación esta activa o no.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;requestFields:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;general:&#039;&#039;&#039; En caso de no haber ningún error devolverá un array con todas las traducciones generales para el idioma seleccionado.&lt;br /&gt;
**&#039;&#039;&#039;fields:&#039;&#039;&#039; En caso de no haber ningún error devolverá un array con todos los campos y sus traducciones para el idioma seleccionado.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;register:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de no haber error indicará que el registro se ha completado.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;update:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de no haber error indicará que se ha actualizado correctamente.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;login:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de no haber error indicará que se ha logeado correctamente.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;rescuePassword:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de que no haya habido un error, se mandará una cadena en el idioma seleccionado, con las instrucciones para recuperar la contraseña.&lt;br /&gt;
&lt;br /&gt;
=Campos y Formatos=&lt;br /&gt;
*&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;ua:&#039;&#039;&#039; User Agent. Es la cadena de texto que identifica al usuario ante el servidor que se esta conectando mediante HTTP. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;lmt:&#039;&#039;&#039; Limit Ad Tracking. Indicará si esta permitido el acceso al ifa del dispositivo. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;0:&#039;&#039;&#039; Inactivo/Permitido.&lt;br /&gt;
***&#039;&#039;&#039;1:&#039;&#039;&#039; Activo/No permitido.&lt;br /&gt;
**&#039;&#039;&#039;devicetype:&#039;&#039;&#039; Tipo de dispositivo. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;4:&#039;&#039;&#039; Smartphone.&lt;br /&gt;
***&#039;&#039;&#039;5:&#039;&#039;&#039; Tablet/iPad.&lt;br /&gt;
**&#039;&#039;&#039;make:&#039;&#039;&#039; Marca del dispositivo. &#039;&#039;Ejemplo: bq&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;model:&#039;&#039;&#039; Modelo del dispositivo. &#039;&#039;Ejemplo: Aquaris E5&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;os:&#039;&#039;&#039; Sistema operativo. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;Android:&#039;&#039;&#039; Android.&lt;br /&gt;
***&#039;&#039;&#039;iOs:&#039;&#039;&#039; ios.&lt;br /&gt;
**&#039;&#039;&#039;osv:&#039;&#039;&#039; Version del sistema operativo. &#039;&#039;Ejemplo: 6.0.1&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;hwv:&#039;&#039;&#039; Version del hardware. &#039;&#039;Ejemplo: Aquaris_E5&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;h:&#039;&#039;&#039; Altura de pantalla. &#039;&#039;Ejemplo: 1920&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;w:&#039;&#039;&#039; Anchura de pantalla. &#039;&#039;Ejemplo: 1080&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;ppi:&#039;&#039;&#039; Pixeles por pulgada. &#039;&#039;Ejemplo: 480&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;pxratio:&#039;&#039;&#039; Densidad de pixeles. &#039;&#039;Ejemplo: 3&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;inches:&#039;&#039;&#039; Pulgadas. &#039;&#039;Ejemplo: 4.9&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;js:&#039;&#039;&#039; Soporte para JavaScript. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;0:&#039;&#039;&#039; No.&lt;br /&gt;
***&#039;&#039;&#039;1:&#039;&#039;&#039; Si.&lt;br /&gt;
**&#039;&#039;&#039;connectiontype:&#039;&#039;&#039; Tipo de conexión. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;0:&#039;&#039;&#039; Unknown.&lt;br /&gt;
***&#039;&#039;&#039;1:&#039;&#039;&#039; Ethernet.&lt;br /&gt;
***&#039;&#039;&#039;2:&#039;&#039;&#039; WiFI.&lt;br /&gt;
***&#039;&#039;&#039;3:&#039;&#039;&#039; Cellular Network - Unkown Generation.&lt;br /&gt;
***&#039;&#039;&#039;4:&#039;&#039;&#039; Cellular Network - 2G.&lt;br /&gt;
***&#039;&#039;&#039;5:&#039;&#039;&#039; Cellular Network - 3G.&lt;br /&gt;
***&#039;&#039;&#039;6:&#039;&#039;&#039; Cellular Network - 4G.&lt;br /&gt;
**&#039;&#039;&#039;ifa:&#039;&#039;&#039; Identificador para la publicidad.  &#039;&#039;&#039;Campo obligatorio, debe de estar o el ifa o el uuid.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;Android:&#039;&#039;&#039; Google AID (Google Advertising Identifier). &#039;&#039;Ejemplo: 38400000-8cf0-11bd-b23e-10b96e40000d&#039;&#039;.&lt;br /&gt;
***&#039;&#039;&#039;iOs:&#039;&#039;&#039; iOS IFA (Apple Identifier for Advertiser). &#039;&#039;Ejemplo: AAAAAAAAA-BBBB-CCCC-1111-222222220000&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;uuid:&#039;&#039;&#039; Identificador único universal. &#039;&#039;Ejemplo: 550e8400-e29b-41d4-a716-446655440000&#039;&#039;. &#039;&#039;&#039;Campo obligatorio, debe estar el uuid o el ifa.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;language:&#039;&#039;&#039; Idioma del dispositivo ( locale ). &#039;&#039;Ejemplo: es&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;country:&#039;&#039;&#039; Pais del dispositivo ( locale ). &#039;&#039;Ejemplo: ES&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;carrier:&#039;&#039;&#039; Operador Telefónico del dispositivo. &#039;&#039;Ejemplo: Movistar&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;carriercode:&#039;&#039;&#039; Código del operador telefónico. &#039;&#039;Ejemplo: 21407&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;carriercountry:&#039;&#039;&#039; País del operador telefónico. &#039;&#039;Ejemplo: ES&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;mac: ( Solo para Android )&#039;&#039;&#039; Mac del dispositivo. &#039;&#039;Ejemplo: 00:1B:44:11:3A:B7&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;imsi: ( Solo para Android )&#039;&#039;&#039; Identidad Internacional del Abonado Móvil. &#039;&#039;Ejemplo: 7160652952503786&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;did: ( Solo para Android )&#039;&#039;&#039; Identificador Direct inward dialing (DID).&lt;br /&gt;
**&#039;&#039;&#039;dpid: ( Solo para Android )&#039;&#039;&#039; Plataform device id (Android id).&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;jsonUser:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;name:&#039;&#039;&#039; Nombre del usuario. Máximo 100 caracteres. &#039;&#039;Ejemplo: Kevin&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;surname:&#039;&#039;&#039; Apellido del usuario. Máximo 100 caracteres. &#039;&#039;Ejemplo: Lancharro&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;email:&#039;&#039;&#039; Email del usuario. Máximo 250 caracteres. &#039;&#039;Ejemplo: xxxx@xxx.com&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;password:&#039;&#039;&#039; Password del usuario. Deberá ir en md5(). Máximo 50 caracteres. &#039;&#039;Ejemplo: e10adc3949ba59abbe56e057f20f883e&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;nick:&#039;&#039;&#039; Nick del usuario. Máximo 50 caracteres. &#039;&#039;Ejemplo: CocoNilo&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;phone:&#039;&#039;&#039; Teléfono móvil del usuario. Máximo 15 caracteres. &#039;&#039;Ejemplo: 6XX XXX XXX&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;birthDate:&#039;&#039;&#039; Fecha de nacimiento del usuario. &#039;&#039;Ejemplo : 1992-01-12&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;gender:&#039;&#039;&#039; Sexo del usuario.&lt;br /&gt;
***&#039;&#039;&#039;Masculino:&#039;&#039;&#039; M.&lt;br /&gt;
***&#039;&#039;&#039;Femenino:&#039;&#039;&#039; F.&lt;br /&gt;
**&#039;&#039;&#039;allowsCommercials:&#039;&#039;&#039; Termino de privacidad con el que el usuario permite recibir comunicaciones comerciales.&lt;br /&gt;
***&#039;&#039;&#039;Permite:&#039;&#039;&#039; yes.&lt;br /&gt;
***&#039;&#039;&#039;Deniega:&#039;&#039;&#039; no.&lt;br /&gt;
**&#039;&#039;&#039;allowsCession:&#039;&#039;&#039; Termino de privacidad con el que el usuario permite que sus datos sean cedidos a terceras empresas relacionadas con el sector.&lt;br /&gt;
***&#039;&#039;&#039;Permite:&#039;&#039;&#039; yes.&lt;br /&gt;
***&#039;&#039;&#039;Deniega:&#039;&#039;&#039; no.&lt;br /&gt;
**Dependiendo de la tarea que estemos ejecutando los campos obligatorios variarán:&lt;br /&gt;
***&#039;&#039;&#039;register:&#039;&#039;&#039; Dependerá de los campos que hayamos configurado en el apartado de NickCenter en el panel de Mobeleader, como mínimo siempre será obligatorio el &#039;&#039;&#039;email&#039;&#039;&#039; y el &#039;&#039;&#039;password&#039;&#039;&#039;.&lt;br /&gt;
***&#039;&#039;&#039;update:&#039;&#039;&#039; El único campo obligatorio para las actualizaciones será el &#039;&#039;&#039;email&#039;&#039;&#039;, el resto de campos que se añadan serán los campos a actualizar.&lt;br /&gt;
***&#039;&#039;&#039;login:&#039;&#039;&#039; Dependerá de los campos que hayamos configurado en el apartado de NickCenter en el panel de Mobeleader, será obligatorio el &#039;&#039;&#039;email&#039;&#039;&#039; o el &#039;&#039;&#039;nick&#039;&#039;&#039;, junto con el &#039;&#039;&#039;password&#039;&#039;&#039;. En cualquiera de los casos el &#039;&#039;&#039;password&#039;&#039;&#039; siempre será obligatorio.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;jsonApp&#039;&#039;&#039;: Todos los campos son obligatorios&lt;br /&gt;
**&#039;&#039;&#039;name&#039;&#039;&#039;: Nombre de la aplicación dada de alta en el panel de Mobeleader. &#039;&#039;Ejemplo: Mobeleader&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;bundle&#039;&#039;&#039;: Nombre del paquete de la aplicación. &#039;&#039;Ejemplo: com.mobeleader&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;version&#039;&#039;&#039;: Version de la aplicación. &#039;&#039;Ejemplo: 1.0&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;versioncode&#039;&#039;&#039;: Código de versión de la aplicación. &#039;&#039;Ejemplo: 1&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=Códigos de Errores=&lt;br /&gt;
A continuación se expondrá una lista con los posibles errores que devolverá el Webservice en caso de que los datos no sean correctos:&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Errores generales:&#039;&#039;&#039; Estos errores se deben a un mal uso de la clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039; y/o su cifrado, por lo que al no poder devolver la cadena cifrada con la RSA Key pública que le corresponde a la aplicación, se mandarán en texto plano sin cifrar y sin formato JSON.&lt;br /&gt;
**Error 000a - Failure decrypting&lt;br /&gt;
**Error 000b - Invalid Task&lt;br /&gt;
**Error 000c - Empty or invalid app hash&lt;br /&gt;
**Error 000d - Missing public RSA Key for app hash X&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea checkActive:&#039;&#039;&#039;&lt;br /&gt;
**Error 001a - Failure checking app active&lt;br /&gt;
**Error 001b - Failure checking app active&lt;br /&gt;
**Error 001c - Failure checking app active&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea rescuePassword:&#039;&#039;&#039;&lt;br /&gt;
**Error 002a - Failure on rescuePassword&lt;br /&gt;
**Error 002b - Failure on rescuePassword&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea requestFields:&#039;&#039;&#039;&lt;br /&gt;
**Error 003a - Failure on requestFields&lt;br /&gt;
**Error 003b - Failure on requestFields&lt;br /&gt;
**Error 003c - Failure on requestFields&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 004a - Failure validating user json, there are no fields configured in your application&lt;br /&gt;
**Error 004b - Failure validating user json, incorrect json format&lt;br /&gt;
**Error 004c - Failure validating user json&lt;br /&gt;
**Error 004d - X is missing or empty in user json.&lt;br /&gt;
**Error 004e - Invalid format for X field in user json.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 005a - Failure validating device json, incorrect json format&lt;br /&gt;
**Error 005b - Failure validating device json&lt;br /&gt;
**Error 005c - Field X is missing or empty in device json&lt;br /&gt;
**Error 005c - Field ifa/uuid are missing or empty in device json, one of them must be informed&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 006a - Failure validating app json, incorrect json format&lt;br /&gt;
**Error 006b - Field X is empty in app json&lt;br /&gt;
**Error 006c - The bundle X for os Y, does not exist&lt;br /&gt;
**Error 006c - Invalid X in app json, it must be numeric&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 007a - Failure generating library json, incorrect device json format&lt;br /&gt;
**Error 007b - Failure generating library json, wrong os in device json&lt;br /&gt;
**Error 007c - Failure generating library json, wrong os in device json&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register:&#039;&#039;&#039;&lt;br /&gt;
**Error 008a - Failure registering&lt;br /&gt;
**Error 008b - Failure registering&lt;br /&gt;
**Error 008c - Email already exists&lt;br /&gt;
**Error 008c - Nick already exists&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea login:&#039;&#039;&#039;&lt;br /&gt;
**Error 009 - Failure on login&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea update:&#039;&#039;&#039;&lt;br /&gt;
**Error 010 - Failure updating&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Sin tarea/Tarea erronea:&#039;&#039;&#039;&lt;br /&gt;
**Error 011a - Empty Task&lt;br /&gt;
**Error 011b - Invalid Task&lt;/div&gt;</summary>
		<author><name>Kevin</name></author>
	</entry>
	<entry>
		<id>https://wiki.mobeleader.com/index.php?title=Documentaci%C3%B3n_Webservice_NickCenter&amp;diff=2180</id>
		<title>Documentación Webservice NickCenter</title>
		<link rel="alternate" type="text/html" href="https://wiki.mobeleader.com/index.php?title=Documentaci%C3%B3n_Webservice_NickCenter&amp;diff=2180"/>
		<updated>2018-09-12T07:50:11Z</updated>

		<summary type="html">&lt;p&gt;Kevin: /* Uso de la clase spsApiNickcenter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduccion=&lt;br /&gt;
En ésta documentación se expondrá como deberemos hacer uso del Webservice de NickCenter, de manera que emule la propia librería de NickCenter y así no haya la necesidad de usarla ni implementarla en las aplicaciones. A pesar de ello, la configuración en el panel de Mobeleader será la misma, siendo necesario dar de alta la aplicación en éste, y configurandola para el uso de NickCenter. Podremos hacer uso de dicho Webservice de dos maneras:&lt;br /&gt;
#Llamada directa al Webservice. Ésta opción será menos segura debido a que los datos irán sin cifrar.&lt;br /&gt;
#Usando la clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039; creada por Mobeleader. Esta opción será mas segura ya que cuenta con un cifrado mediante RSA Keys generadas en nuestro sistema.&lt;br /&gt;
&lt;br /&gt;
=Llamada directa=&lt;br /&gt;
Si queremos usar directamente el Webservice de Nickcenter sin la necesidad de usar la clase &#039;&#039;&#039;spsApiNickCenter&#039;&#039;&#039;, esta será la URL a la que deberemos conectarnos &#039;&#039;https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=&#039;&#039;. Más adelante se expondrán que tareas hay disponibles y como hay que mandar los datos para su ejecución.&lt;br /&gt;
&lt;br /&gt;
=Uso de la clase spsApiNickcenter=&lt;br /&gt;
Esta clase accesible desde [[Medio:Api_nickcenter_client.zip]], esta pensada para una mayor comodidad del cliente, permitiendo que todo se gestione desde ésta sin necesidad de tener que programar las llamadas y retornos del Webservice. A continuación se expondrán los pasos a seguir para un correcto funcionamiento de la clase:&lt;br /&gt;
==Instalación PHPSECLIB==&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Será necesario disponer de phpseclib versión 2.0.11 o superior.&lt;br /&gt;
Los pasos para instalar esta versión de phpseclib son:&amp;lt;br /&amp;gt;&lt;br /&gt;
- Disponer de la herramienta &amp;quot;composer.phar&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
- Ejecutar &amp;quot;composer&amp;quot; en la carpeta donde vaya a instalar nuestra librería.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.- Descargar composer desde: https://getcomposer.org/composer.phar&lt;br /&gt;
&amp;lt;pre&amp;gt;curl https://getcomposer.org/composer.phar -o composer.phar&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.- Ejecutar el comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;php composer.phar --working-dir=. require phpseclib/phpseclib:~2.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hecho esto, obtendrá la siguiente salida por consola:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./composer.json has been created&lt;br /&gt;
Loading composer repositories with package information&lt;br /&gt;
Updating dependencies (including require-dev)&lt;br /&gt;
Package operations: 1 install, 0 updates, 0 removals&lt;br /&gt;
  - Installing phpseclib/phpseclib (2.0.11): Downloading (100%)         &lt;br /&gt;
phpseclib/phpseclib suggests installing ext-libsodium (SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.)&lt;br /&gt;
phpseclib/phpseclib suggests installing ext-mcrypt (Install the Mcrypt extension in order to speed up a few other cryptographic operations.)&lt;br /&gt;
phpseclib/phpseclib suggests installing ext-gmp (Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.)&lt;br /&gt;
Writing lock file&lt;br /&gt;
Generating autoload files&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto significa que está todo lo necesario instalado en su carpeta vendor.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Clase spsApiNickcenter==&lt;br /&gt;
Una vez instalada la librería &#039;&#039;&#039;PHPSECLIB&#039;&#039;&#039; en nuestra carpeta vendor, lo primero que debemos hacer es abrir la clase y modificar la ruta de acceso a dicha carpeta.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
require_once &#039;PATH..../vendor/autoload.php&#039;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Una vez modificada la ruta, para poder instanciar la clase deberemos coger la cadena de la &#039;&#039;&#039;RSA KEY Privada&#039;&#039;&#039;, accesible desde https://panel.mobeleader.com/index.php?sec=6, y reemplazarla en el siguiente codigo.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA]);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Si la instalación de la librería es correcta, la ruta de acceso a ésta ha sido cambiada y es correcta, y la &#039;&#039;&#039;RSA KEY Privada&#039;&#039;&#039; es correcta, para realizar las llamadas al Webservice usaremos la funcion &#039;&#039;&#039;getData()&#039;&#039;&#039; de la clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039;. Dicha función será la encargada de realizar todas las conexiones al Webservice, de cifrar los datos que enviaremos a éste y de descifrar los que datos que nos retorne.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(tarea, array_datos)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
A continuación se exponen cuales son las distintas tareas ejecutables, y como ha de ser el array de datos para posibilitar dicha ejecución.&lt;br /&gt;
&lt;br /&gt;
=Tareas=&lt;br /&gt;
La clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039; consta de la función &#039;&#039;getData(&#039;&#039;&#039;tarea, array_datos&#039;&#039;&#039;)&#039;&#039;, con la que ejecutaremos las distintas operaciones que el Webservice permite y a la que le deberemos mandar los siguientes parámetros:&lt;br /&gt;
#&#039;&#039;&#039;tarea:&#039;&#039;&#039; Sera la propia tarea a realizar, puediendo ser:&lt;br /&gt;
##&#039;&#039;&#039;checkActive&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;requestFields&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;register&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;update&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;login&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;rescuePassword&#039;&#039;&#039;.&lt;br /&gt;
#&#039;&#039;&#039;array_datos:&#039;&#039;&#039; Contendrá un array con los datos necesarios para la ejecución de la tarea.&lt;br /&gt;
===Llamadas al Webservice===&lt;br /&gt;
&#039;&#039;Recuerde reemplazar el contenido de los ejemplos por los valores reales&#039;&#039;.&lt;br /&gt;
*&#039;&#039;&#039;checkActive:&#039;&#039;&#039; Esta tarea comprobará que la aplicación tenga NickCenter activo, independientemente de usarla directamente o no, el resto de tareas harán uso de ella antes de realizar sus operaciones propias.&lt;br /&gt;
:*&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de Mobeleader.&lt;br /&gt;
:*&#039;&#039;&#039;country:&#039;&#039;&#039; Contendrá el país del dispositivo, necesario para comprobar si NickCenter esta activo para esa aplicación en ese país.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=checkActive&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;country=[código país, ej: ES]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;country&#039;] = [código país, ej: ES];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;checkActive&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;requestFields:&#039;&#039;&#039; Mediante ésta tarea obtendremos la configuración de campos y traducciones para una determinada vista.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de  Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;view:&#039;&#039;&#039; Indicará los campos de que vista solicitamos.&lt;br /&gt;
***&#039;&#039;&#039;register:&#039;&#039;&#039; Pantalla inicial del registro.&lt;br /&gt;
***&#039;&#039;&#039;login:&#039;&#039;&#039; Pantalla de login.&lt;br /&gt;
***&#039;&#039;&#039;rescue:&#039;&#039;&#039; Pantalla de recuperación de contraseña.&lt;br /&gt;
**&#039;&#039;&#039;country:&#039;&#039;&#039; Contendrá el país del dispositivo, necesario para comprobar si NickCenter esta activo para esa aplicación en ese país.&lt;br /&gt;
**&#039;&#039;&#039;language:&#039;&#039;&#039; Idioma del dispositivo, necesario para las traducciones y las configuraciones de los campos que se retornarán.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=requestFields&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;view=[vista, ej: register]&amp;amp;country=[código país, ej: ES]&amp;amp;language=[código idioma, ej: es]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;view&#039;] = [vista, ej: register];&lt;br /&gt;
$array_datos[&#039;country&#039;] = [código país, ej: ES];&lt;br /&gt;
$array_datos[&#039;language&#039;] = [código idioma, ej: es];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;requestFields&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;register:&#039;&#039;&#039; Esta tarea servirá para registrar un usuario en nuestro sistema.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de  Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039; Contendrá los datos del dispositivo. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonApp:&#039;&#039;&#039; Contendrá los datos de la aplicación. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonUser:&#039;&#039;&#039; Contendrá los datos del usuario. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=register&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;jsonDevice=[json con toda la información del dispositivo]&amp;amp;jsonApp=[json con toda la información de la app]&amp;amp;jsonUser=[json con toda la información a registrar del usuario]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;jsonDevice&#039;] = [json con toda la información del dispositivo];&lt;br /&gt;
$array_datos[&#039;jsonApp&#039;] = [json con toda la información de la app];&lt;br /&gt;
$array_datos[&#039;jsonUser&#039;] = [json con toda la información a registrar del usuario];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;register&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;update:&#039;&#039;&#039; Esta tarea servirá para actualizar un usuario que previamente haya sido registrado en nuestro sistema.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de  Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039; Contendrá los datos del dispositivo. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonApp:&#039;&#039;&#039; Contendrá los datos de la aplicación. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonUser:&#039;&#039;&#039; Contendrá los datos del usuario. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=update&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;jsonDevice=[json con toda la información del dispositivo]&amp;amp;jsonApp=[json con toda la información de la app]&amp;amp;jsonUser=[json con toda la información a actualizar del usuario]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;jsonDevice&#039;] = [json con toda la información del dispositivo];&lt;br /&gt;
$array_datos[&#039;jsonApp&#039;] = [json con toda la información de la app];&lt;br /&gt;
$array_datos[&#039;jsonUser&#039;] = [json con toda la información a actualizar del usuario];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;update&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;login:&#039;&#039;&#039; Esta tarea servirá para hacer login en las aplicaciones registradas en NickCenter, con usuarios previamente registrados en nuestro sistema.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta el panel de  en Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039; Contendrá los datos del dispositivo. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonApp:&#039;&#039;&#039; Contendrá los datos de la aplicación. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonUser:&#039;&#039;&#039; Contendrá los datos del usuario. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=login&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;jsonDevice=[json con toda la información del dispositivo]&amp;amp;jsonApp=[json con toda la información de la app]&amp;amp;jsonUser=[json con toda la información necesaria para el login]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;jsonDevice&#039;] = [json con toda la información del dispositivo];&lt;br /&gt;
$array_datos[&#039;jsonApp&#039;] = [json con toda la información de la app];&lt;br /&gt;
$array_datos[&#039;jsonUser&#039;] = [json con toda la información necesaria para el login];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;login&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;rescuePassword:&#039;&#039;&#039; Mediante ésta tarea restauraremos la contraseña de usuarios previamente registrados en nuestro sistema y que no esten dados de baja.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta el panel de  en Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;country:&#039;&#039;&#039; Contendrá el país del dispositivo, necesario para comprobar si NickCenter esta activo para esa aplicación en ese país.&lt;br /&gt;
**&#039;&#039;&#039;language:&#039;&#039;&#039; Idioma del dispositivo, necesario para las traducciones que se retornarán.&lt;br /&gt;
**&#039;&#039;&#039;email:&#039;&#039;&#039; Email al que hay que restaurar la contraseña.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=rescuePassword&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;country=[código país, ej: ES]&amp;amp;language=[código idioma, ej: es]&amp;amp;email=[email a recuperar, ej: prueba@prueba.com]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;country&#039;] = [código país, ej: ES];&lt;br /&gt;
$array_datos[&#039;language&#039;] = [código idioma, ej: es];&lt;br /&gt;
$array_datos[&#039;email&#039;] = [email a recuperar, ej: prueba@prueba.com];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;rescuePassword&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Retornos del Webservice===&lt;br /&gt;
Cada tarea tendrá su propio JSON de retorno:&lt;br /&gt;
*&#039;&#039;&#039;checkActive:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;active:&#039;&#039;&#039; Indicará si la aplicación esta activa o no.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;requestFields:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;general:&#039;&#039;&#039; En caso de no haber ningún error devolverá un array con todas las traducciones generales para el idioma seleccionado.&lt;br /&gt;
**&#039;&#039;&#039;fields:&#039;&#039;&#039; En caso de no haber ningún error devolverá un array con todos los campos y sus traducciones para el idioma seleccionado.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;register:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de no haber error indicará que el registro se ha completado.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;update:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de no haber error indicará que se ha actualizado correctamente.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;login:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de no haber error indicará que se ha logeado correctamente.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;rescuePassword:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de que no haya habido un error, se mandará una cadena en el idioma seleccionado, con las instrucciones para recuperar la contraseña.&lt;br /&gt;
&lt;br /&gt;
=Campos y Formatos=&lt;br /&gt;
*&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;ua:&#039;&#039;&#039; User Agent. Es la cadena de texto que identifica al usuario ante el servidor que se esta conectando mediante HTTP. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;lmt:&#039;&#039;&#039; Limit Ad Tracking. Indicará si esta permitido el acceso al ifa del dispositivo. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;0:&#039;&#039;&#039; Inactivo/Permitido.&lt;br /&gt;
***&#039;&#039;&#039;1:&#039;&#039;&#039; Activo/No permitido.&lt;br /&gt;
**&#039;&#039;&#039;devicetype:&#039;&#039;&#039; Tipo de dispositivo. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;4:&#039;&#039;&#039; Smartphone.&lt;br /&gt;
***&#039;&#039;&#039;5:&#039;&#039;&#039; Tablet/iPad.&lt;br /&gt;
**&#039;&#039;&#039;make:&#039;&#039;&#039; Marca del dispositivo. &#039;&#039;Ejemplo: bq&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;model:&#039;&#039;&#039; Modelo del dispositivo. &#039;&#039;Ejemplo: Aquaris E5&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;os:&#039;&#039;&#039; Sistema operativo. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;Android:&#039;&#039;&#039; Android.&lt;br /&gt;
***&#039;&#039;&#039;iOs:&#039;&#039;&#039; ios.&lt;br /&gt;
**&#039;&#039;&#039;osv:&#039;&#039;&#039; Version del sistema operativo. &#039;&#039;Ejemplo: 6.0.1&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;hwv:&#039;&#039;&#039; Version del hardware. &#039;&#039;Ejemplo: Aquaris_E5&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;h:&#039;&#039;&#039; Altura de pantalla. &#039;&#039;Ejemplo: 1920&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;w:&#039;&#039;&#039; Anchura de pantalla. &#039;&#039;Ejemplo: 1080&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;ppi:&#039;&#039;&#039; Pixeles por pulgada. &#039;&#039;Ejemplo: 480&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;pxratio:&#039;&#039;&#039; Densidad de pixeles. &#039;&#039;Ejemplo: 3&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;inches:&#039;&#039;&#039; Pulgadas. &#039;&#039;Ejemplo: 4.9&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;js:&#039;&#039;&#039; Soporte para JavaScript. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;0:&#039;&#039;&#039; No.&lt;br /&gt;
***&#039;&#039;&#039;1:&#039;&#039;&#039; Si.&lt;br /&gt;
**&#039;&#039;&#039;connectiontype:&#039;&#039;&#039; Tipo de conexión. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;0:&#039;&#039;&#039; Unknown.&lt;br /&gt;
***&#039;&#039;&#039;1:&#039;&#039;&#039; Ethernet.&lt;br /&gt;
***&#039;&#039;&#039;2:&#039;&#039;&#039; WiFI.&lt;br /&gt;
***&#039;&#039;&#039;3:&#039;&#039;&#039; Cellular Network - Unkown Generation.&lt;br /&gt;
***&#039;&#039;&#039;4:&#039;&#039;&#039; Cellular Network - 2G.&lt;br /&gt;
***&#039;&#039;&#039;5:&#039;&#039;&#039; Cellular Network - 3G.&lt;br /&gt;
***&#039;&#039;&#039;6:&#039;&#039;&#039; Cellular Network - 4G.&lt;br /&gt;
**&#039;&#039;&#039;ifa:&#039;&#039;&#039; Identificador para la publicidad.  &#039;&#039;&#039;Campo obligatorio, debe de estar o el ifa o el uuid.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;Android:&#039;&#039;&#039; Google AID (Google Advertising Identifier). &#039;&#039;Ejemplo: 38400000-8cf0-11bd-b23e-10b96e40000d&#039;&#039;.&lt;br /&gt;
***&#039;&#039;&#039;iOs:&#039;&#039;&#039; iOS IFA (Apple Identifier for Advertiser). &#039;&#039;Ejemplo: AAAAAAAAA-BBBB-CCCC-1111-222222220000&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;uuid:&#039;&#039;&#039; Identificador único universal. &#039;&#039;Ejemplo: 550e8400-e29b-41d4-a716-446655440000&#039;&#039;. &#039;&#039;&#039;Campo obligatorio, debe estar el uuid o el ifa.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;language:&#039;&#039;&#039; Idioma del dispositivo ( locale ). &#039;&#039;Ejemplo: es&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;country:&#039;&#039;&#039; Pais del dispositivo ( locale ). &#039;&#039;Ejemplo: ES&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;carrier:&#039;&#039;&#039; Operador Telefónico del dispositivo. &#039;&#039;Ejemplo: Movistar&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;carriercode:&#039;&#039;&#039; Código del operador telefónico. &#039;&#039;Ejemplo: 21407&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;carriercountry:&#039;&#039;&#039; País del operador telefónico. &#039;&#039;Ejemplo: ES&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;mac: ( Solo para Android )&#039;&#039;&#039; Mac del dispositivo. &#039;&#039;Ejemplo: 00:1B:44:11:3A:B7&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;imsi: ( Solo para Android )&#039;&#039;&#039; Identidad Internacional del Abonado Móvil. &#039;&#039;Ejemplo: 7160652952503786&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;did: ( Solo para Android )&#039;&#039;&#039; Identificador Direct inward dialing (DID).&lt;br /&gt;
**&#039;&#039;&#039;dpid: ( Solo para Android )&#039;&#039;&#039; Plataform device id (Android id).&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;jsonUser:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;name:&#039;&#039;&#039; Nombre del usuario. Máximo 100 caracteres. &#039;&#039;Ejemplo: Kevin&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;surname:&#039;&#039;&#039; Apellido del usuario. Máximo 100 caracteres. &#039;&#039;Ejemplo: Lancharro&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;email:&#039;&#039;&#039; Email del usuario. Máximo 250 caracteres. &#039;&#039;Ejemplo: xxxx@xxx.com&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;password:&#039;&#039;&#039; Password del usuario. Deberá ir en md5(). Máximo 50 caracteres. &#039;&#039;Ejemplo: e10adc3949ba59abbe56e057f20f883e&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;nick:&#039;&#039;&#039; Nick del usuario. Máximo 50 caracteres. &#039;&#039;Ejemplo: CocoNilo&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;phone:&#039;&#039;&#039; Teléfono móvil del usuario. Máximo 15 caracteres. &#039;&#039;Ejemplo: 6XX XXX XXX&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;birthDate:&#039;&#039;&#039; Fecha de nacimiento del usuario. &#039;&#039;Ejemplo : 1992-01-12&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;gender:&#039;&#039;&#039; Sexo del usuario.&lt;br /&gt;
***&#039;&#039;&#039;Masculino:&#039;&#039;&#039; M.&lt;br /&gt;
***&#039;&#039;&#039;Femenino:&#039;&#039;&#039; F.&lt;br /&gt;
**&#039;&#039;&#039;allowsCommercials:&#039;&#039;&#039; Termino de privacidad con el que el usuario permite recibir comunicaciones comerciales.&lt;br /&gt;
***&#039;&#039;&#039;Permite:&#039;&#039;&#039; yes.&lt;br /&gt;
***&#039;&#039;&#039;Deniega:&#039;&#039;&#039; no.&lt;br /&gt;
**&#039;&#039;&#039;allowsCession:&#039;&#039;&#039; Termino de privacidad con el que el usuario permite que sus datos sean cedidos a terceras empresas relacionadas con el sector.&lt;br /&gt;
***&#039;&#039;&#039;Permite:&#039;&#039;&#039; yes.&lt;br /&gt;
***&#039;&#039;&#039;Deniega:&#039;&#039;&#039; no.&lt;br /&gt;
**Dependiendo de la tarea que estemos ejecutando los campos obligatorios variarán:&lt;br /&gt;
***&#039;&#039;&#039;register:&#039;&#039;&#039; Dependerá de los campos que hayamos configurado en el apartado de NickCenter en el panel de Mobeleader, como mínimo siempre será obligatorio el &#039;&#039;&#039;email&#039;&#039;&#039; y el &#039;&#039;&#039;password&#039;&#039;&#039;.&lt;br /&gt;
***&#039;&#039;&#039;update:&#039;&#039;&#039; El único campo obligatorio para las actualizaciones será el &#039;&#039;&#039;email&#039;&#039;&#039;, el resto de campos que se añadan serán los campos a actualizar.&lt;br /&gt;
***&#039;&#039;&#039;login:&#039;&#039;&#039; Dependerá de los campos que hayamos configurado en el apartado de NickCenter en el panel de Mobeleader, será obligatorio el &#039;&#039;&#039;email&#039;&#039;&#039; o el &#039;&#039;&#039;nick&#039;&#039;&#039;, junto con el &#039;&#039;&#039;password&#039;&#039;&#039;. En cualquiera de los casos el &#039;&#039;&#039;password&#039;&#039;&#039; siempre será obligatorio.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;jsonApp&#039;&#039;&#039;: Todos los campos son obligatorios&lt;br /&gt;
**&#039;&#039;&#039;name&#039;&#039;&#039;: Nombre de la aplicación dada de alta en el panel de Mobeleader. &#039;&#039;Ejemplo: Mobeleader&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;bundle&#039;&#039;&#039;: Nombre del paquete de la aplicación. &#039;&#039;Ejemplo: com.mobeleader&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;version&#039;&#039;&#039;: Version de la aplicación. &#039;&#039;Ejemplo: 1.0&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;versioncode&#039;&#039;&#039;: Código de versión de la aplicación. &#039;&#039;Ejemplo: 1&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=Códigos de Errores=&lt;br /&gt;
A continuación se expondrá una lista con los posibles errores que devolverá el Webservice en caso de que los datos no sean correctos:&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Errores generales:&#039;&#039;&#039; Estos errores se deben a un mal uso de la clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039; y/o su cifrado, por lo que al no poder devolver la cadena cifrada con la RSA Key pública que le corresponde a la aplicación, se mandarán en texto plano sin cifrar y sin formato JSON.&lt;br /&gt;
**Error 000a - Failure decrypting&lt;br /&gt;
**Error 000b - Invalid Task&lt;br /&gt;
**Error 000c - Empty or invalid app hash&lt;br /&gt;
**Error 000d - Missing public RSA Key for app hash X&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea checkActive:&#039;&#039;&#039;&lt;br /&gt;
**Error 001a - Failure checking app active&lt;br /&gt;
**Error 001b - Failure checking app active&lt;br /&gt;
**Error 001c - Failure checking app active&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea rescuePassword:&#039;&#039;&#039;&lt;br /&gt;
**Error 002a - Failure on rescuePassword&lt;br /&gt;
**Error 002b - Failure on rescuePassword&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea requestFields:&#039;&#039;&#039;&lt;br /&gt;
**Error 003a - Failure on requestFields&lt;br /&gt;
**Error 003b - Failure on requestFields&lt;br /&gt;
**Error 003c - Failure on requestFields&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 004a - Failure validating user json, there are no fields configured in your application&lt;br /&gt;
**Error 004b - Failure validating user json, incorrect json format&lt;br /&gt;
**Error 004c - Failure validating user json&lt;br /&gt;
**Error 004d - X is missing or empty in user json.&lt;br /&gt;
**Error 004e - Invalid format for X field in user json.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 005a - Failure validating device json, incorrect json format&lt;br /&gt;
**Error 005b - Failure validating device json&lt;br /&gt;
**Error 005c - Field X is missing or empty in device json&lt;br /&gt;
**Error 005c - Field ifa/uuid are missing or empty in device json, one of them must be informed&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 006a - Failure validating app json, incorrect json format&lt;br /&gt;
**Error 006b - Field X is empty in app json&lt;br /&gt;
**Error 006c - The bundle X for os Y, does not exist&lt;br /&gt;
**Error 006c - Invalid X in app json, it must be numeric&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 007a - Failure generating library json, incorrect device json format&lt;br /&gt;
**Error 007b - Failure generating library json, wrong os in device json&lt;br /&gt;
**Error 007c - Failure generating library json, wrong os in device json&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register:&#039;&#039;&#039;&lt;br /&gt;
**Error 008a - Failure registering&lt;br /&gt;
**Error 008b - Failure registering&lt;br /&gt;
**Error 008c - Email already exists&lt;br /&gt;
**Error 008c - Nick already exists&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea login:&#039;&#039;&#039;&lt;br /&gt;
**Error 009 - Failure on login&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea update:&#039;&#039;&#039;&lt;br /&gt;
**Error 010 - Failure updating&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Sin tarea/Tarea erronea:&#039;&#039;&#039;&lt;br /&gt;
**Error 011a - Empty Task&lt;br /&gt;
**Error 011b - Invalid Task&lt;/div&gt;</summary>
		<author><name>Kevin</name></author>
	</entry>
	<entry>
		<id>https://wiki.mobeleader.com/index.php?title=Documentaci%C3%B3n_Webservice_NickCenter&amp;diff=2179</id>
		<title>Documentación Webservice NickCenter</title>
		<link rel="alternate" type="text/html" href="https://wiki.mobeleader.com/index.php?title=Documentaci%C3%B3n_Webservice_NickCenter&amp;diff=2179"/>
		<updated>2018-09-12T07:49:54Z</updated>

		<summary type="html">&lt;p&gt;Kevin: /* Uso de la clase spsApiNickcenter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduccion=&lt;br /&gt;
En ésta documentación se expondrá como deberemos hacer uso del Webservice de NickCenter, de manera que emule la propia librería de NickCenter y así no haya la necesidad de usarla ni implementarla en las aplicaciones. A pesar de ello, la configuración en el panel de Mobeleader será la misma, siendo necesario dar de alta la aplicación en éste, y configurandola para el uso de NickCenter. Podremos hacer uso de dicho Webservice de dos maneras:&lt;br /&gt;
#Llamada directa al Webservice. Ésta opción será menos segura debido a que los datos irán sin cifrar.&lt;br /&gt;
#Usando la clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039; creada por Mobeleader. Esta opción será mas segura ya que cuenta con un cifrado mediante RSA Keys generadas en nuestro sistema.&lt;br /&gt;
&lt;br /&gt;
=Llamada directa=&lt;br /&gt;
Si queremos usar directamente el Webservice de Nickcenter sin la necesidad de usar la clase &#039;&#039;&#039;spsApiNickCenter&#039;&#039;&#039;, esta será la URL a la que deberemos conectarnos &#039;&#039;https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=&#039;&#039;. Más adelante se expondrán que tareas hay disponibles y como hay que mandar los datos para su ejecución.&lt;br /&gt;
&lt;br /&gt;
=Uso de la clase spsApiNickcenter=&lt;br /&gt;
Esta clase accesible desde [[Archive:Api_nickcenter_client.zip]], esta pensada para una mayor comodidad del cliente, permitiendo que todo se gestione desde ésta sin necesidad de tener que programar las llamadas y retornos del Webservice. A continuación se expondrán los pasos a seguir para un correcto funcionamiento de la clase:&lt;br /&gt;
==Instalación PHPSECLIB==&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Será necesario disponer de phpseclib versión 2.0.11 o superior.&lt;br /&gt;
Los pasos para instalar esta versión de phpseclib son:&amp;lt;br /&amp;gt;&lt;br /&gt;
- Disponer de la herramienta &amp;quot;composer.phar&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
- Ejecutar &amp;quot;composer&amp;quot; en la carpeta donde vaya a instalar nuestra librería.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.- Descargar composer desde: https://getcomposer.org/composer.phar&lt;br /&gt;
&amp;lt;pre&amp;gt;curl https://getcomposer.org/composer.phar -o composer.phar&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.- Ejecutar el comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;php composer.phar --working-dir=. require phpseclib/phpseclib:~2.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hecho esto, obtendrá la siguiente salida por consola:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./composer.json has been created&lt;br /&gt;
Loading composer repositories with package information&lt;br /&gt;
Updating dependencies (including require-dev)&lt;br /&gt;
Package operations: 1 install, 0 updates, 0 removals&lt;br /&gt;
  - Installing phpseclib/phpseclib (2.0.11): Downloading (100%)         &lt;br /&gt;
phpseclib/phpseclib suggests installing ext-libsodium (SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.)&lt;br /&gt;
phpseclib/phpseclib suggests installing ext-mcrypt (Install the Mcrypt extension in order to speed up a few other cryptographic operations.)&lt;br /&gt;
phpseclib/phpseclib suggests installing ext-gmp (Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.)&lt;br /&gt;
Writing lock file&lt;br /&gt;
Generating autoload files&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto significa que está todo lo necesario instalado en su carpeta vendor.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Clase spsApiNickcenter==&lt;br /&gt;
Una vez instalada la librería &#039;&#039;&#039;PHPSECLIB&#039;&#039;&#039; en nuestra carpeta vendor, lo primero que debemos hacer es abrir la clase y modificar la ruta de acceso a dicha carpeta.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
require_once &#039;PATH..../vendor/autoload.php&#039;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Una vez modificada la ruta, para poder instanciar la clase deberemos coger la cadena de la &#039;&#039;&#039;RSA KEY Privada&#039;&#039;&#039;, accesible desde https://panel.mobeleader.com/index.php?sec=6, y reemplazarla en el siguiente codigo.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA]);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Si la instalación de la librería es correcta, la ruta de acceso a ésta ha sido cambiada y es correcta, y la &#039;&#039;&#039;RSA KEY Privada&#039;&#039;&#039; es correcta, para realizar las llamadas al Webservice usaremos la funcion &#039;&#039;&#039;getData()&#039;&#039;&#039; de la clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039;. Dicha función será la encargada de realizar todas las conexiones al Webservice, de cifrar los datos que enviaremos a éste y de descifrar los que datos que nos retorne.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(tarea, array_datos)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
A continuación se exponen cuales son las distintas tareas ejecutables, y como ha de ser el array de datos para posibilitar dicha ejecución.&lt;br /&gt;
&lt;br /&gt;
=Tareas=&lt;br /&gt;
La clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039; consta de la función &#039;&#039;getData(&#039;&#039;&#039;tarea, array_datos&#039;&#039;&#039;)&#039;&#039;, con la que ejecutaremos las distintas operaciones que el Webservice permite y a la que le deberemos mandar los siguientes parámetros:&lt;br /&gt;
#&#039;&#039;&#039;tarea:&#039;&#039;&#039; Sera la propia tarea a realizar, puediendo ser:&lt;br /&gt;
##&#039;&#039;&#039;checkActive&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;requestFields&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;register&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;update&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;login&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;rescuePassword&#039;&#039;&#039;.&lt;br /&gt;
#&#039;&#039;&#039;array_datos:&#039;&#039;&#039; Contendrá un array con los datos necesarios para la ejecución de la tarea.&lt;br /&gt;
===Llamadas al Webservice===&lt;br /&gt;
&#039;&#039;Recuerde reemplazar el contenido de los ejemplos por los valores reales&#039;&#039;.&lt;br /&gt;
*&#039;&#039;&#039;checkActive:&#039;&#039;&#039; Esta tarea comprobará que la aplicación tenga NickCenter activo, independientemente de usarla directamente o no, el resto de tareas harán uso de ella antes de realizar sus operaciones propias.&lt;br /&gt;
:*&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de Mobeleader.&lt;br /&gt;
:*&#039;&#039;&#039;country:&#039;&#039;&#039; Contendrá el país del dispositivo, necesario para comprobar si NickCenter esta activo para esa aplicación en ese país.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=checkActive&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;country=[código país, ej: ES]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;country&#039;] = [código país, ej: ES];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;checkActive&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;requestFields:&#039;&#039;&#039; Mediante ésta tarea obtendremos la configuración de campos y traducciones para una determinada vista.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de  Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;view:&#039;&#039;&#039; Indicará los campos de que vista solicitamos.&lt;br /&gt;
***&#039;&#039;&#039;register:&#039;&#039;&#039; Pantalla inicial del registro.&lt;br /&gt;
***&#039;&#039;&#039;login:&#039;&#039;&#039; Pantalla de login.&lt;br /&gt;
***&#039;&#039;&#039;rescue:&#039;&#039;&#039; Pantalla de recuperación de contraseña.&lt;br /&gt;
**&#039;&#039;&#039;country:&#039;&#039;&#039; Contendrá el país del dispositivo, necesario para comprobar si NickCenter esta activo para esa aplicación en ese país.&lt;br /&gt;
**&#039;&#039;&#039;language:&#039;&#039;&#039; Idioma del dispositivo, necesario para las traducciones y las configuraciones de los campos que se retornarán.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=requestFields&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;view=[vista, ej: register]&amp;amp;country=[código país, ej: ES]&amp;amp;language=[código idioma, ej: es]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;view&#039;] = [vista, ej: register];&lt;br /&gt;
$array_datos[&#039;country&#039;] = [código país, ej: ES];&lt;br /&gt;
$array_datos[&#039;language&#039;] = [código idioma, ej: es];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;requestFields&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;register:&#039;&#039;&#039; Esta tarea servirá para registrar un usuario en nuestro sistema.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de  Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039; Contendrá los datos del dispositivo. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonApp:&#039;&#039;&#039; Contendrá los datos de la aplicación. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonUser:&#039;&#039;&#039; Contendrá los datos del usuario. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=register&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;jsonDevice=[json con toda la información del dispositivo]&amp;amp;jsonApp=[json con toda la información de la app]&amp;amp;jsonUser=[json con toda la información a registrar del usuario]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;jsonDevice&#039;] = [json con toda la información del dispositivo];&lt;br /&gt;
$array_datos[&#039;jsonApp&#039;] = [json con toda la información de la app];&lt;br /&gt;
$array_datos[&#039;jsonUser&#039;] = [json con toda la información a registrar del usuario];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;register&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;update:&#039;&#039;&#039; Esta tarea servirá para actualizar un usuario que previamente haya sido registrado en nuestro sistema.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de  Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039; Contendrá los datos del dispositivo. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonApp:&#039;&#039;&#039; Contendrá los datos de la aplicación. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonUser:&#039;&#039;&#039; Contendrá los datos del usuario. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=update&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;jsonDevice=[json con toda la información del dispositivo]&amp;amp;jsonApp=[json con toda la información de la app]&amp;amp;jsonUser=[json con toda la información a actualizar del usuario]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;jsonDevice&#039;] = [json con toda la información del dispositivo];&lt;br /&gt;
$array_datos[&#039;jsonApp&#039;] = [json con toda la información de la app];&lt;br /&gt;
$array_datos[&#039;jsonUser&#039;] = [json con toda la información a actualizar del usuario];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;update&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;login:&#039;&#039;&#039; Esta tarea servirá para hacer login en las aplicaciones registradas en NickCenter, con usuarios previamente registrados en nuestro sistema.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta el panel de  en Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039; Contendrá los datos del dispositivo. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonApp:&#039;&#039;&#039; Contendrá los datos de la aplicación. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonUser:&#039;&#039;&#039; Contendrá los datos del usuario. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=login&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;jsonDevice=[json con toda la información del dispositivo]&amp;amp;jsonApp=[json con toda la información de la app]&amp;amp;jsonUser=[json con toda la información necesaria para el login]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;jsonDevice&#039;] = [json con toda la información del dispositivo];&lt;br /&gt;
$array_datos[&#039;jsonApp&#039;] = [json con toda la información de la app];&lt;br /&gt;
$array_datos[&#039;jsonUser&#039;] = [json con toda la información necesaria para el login];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;login&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;rescuePassword:&#039;&#039;&#039; Mediante ésta tarea restauraremos la contraseña de usuarios previamente registrados en nuestro sistema y que no esten dados de baja.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta el panel de  en Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;country:&#039;&#039;&#039; Contendrá el país del dispositivo, necesario para comprobar si NickCenter esta activo para esa aplicación en ese país.&lt;br /&gt;
**&#039;&#039;&#039;language:&#039;&#039;&#039; Idioma del dispositivo, necesario para las traducciones que se retornarán.&lt;br /&gt;
**&#039;&#039;&#039;email:&#039;&#039;&#039; Email al que hay que restaurar la contraseña.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=rescuePassword&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;country=[código país, ej: ES]&amp;amp;language=[código idioma, ej: es]&amp;amp;email=[email a recuperar, ej: prueba@prueba.com]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;country&#039;] = [código país, ej: ES];&lt;br /&gt;
$array_datos[&#039;language&#039;] = [código idioma, ej: es];&lt;br /&gt;
$array_datos[&#039;email&#039;] = [email a recuperar, ej: prueba@prueba.com];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;rescuePassword&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Retornos del Webservice===&lt;br /&gt;
Cada tarea tendrá su propio JSON de retorno:&lt;br /&gt;
*&#039;&#039;&#039;checkActive:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;active:&#039;&#039;&#039; Indicará si la aplicación esta activa o no.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;requestFields:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;general:&#039;&#039;&#039; En caso de no haber ningún error devolverá un array con todas las traducciones generales para el idioma seleccionado.&lt;br /&gt;
**&#039;&#039;&#039;fields:&#039;&#039;&#039; En caso de no haber ningún error devolverá un array con todos los campos y sus traducciones para el idioma seleccionado.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;register:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de no haber error indicará que el registro se ha completado.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;update:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de no haber error indicará que se ha actualizado correctamente.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;login:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de no haber error indicará que se ha logeado correctamente.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;rescuePassword:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de que no haya habido un error, se mandará una cadena en el idioma seleccionado, con las instrucciones para recuperar la contraseña.&lt;br /&gt;
&lt;br /&gt;
=Campos y Formatos=&lt;br /&gt;
*&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;ua:&#039;&#039;&#039; User Agent. Es la cadena de texto que identifica al usuario ante el servidor que se esta conectando mediante HTTP. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;lmt:&#039;&#039;&#039; Limit Ad Tracking. Indicará si esta permitido el acceso al ifa del dispositivo. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;0:&#039;&#039;&#039; Inactivo/Permitido.&lt;br /&gt;
***&#039;&#039;&#039;1:&#039;&#039;&#039; Activo/No permitido.&lt;br /&gt;
**&#039;&#039;&#039;devicetype:&#039;&#039;&#039; Tipo de dispositivo. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;4:&#039;&#039;&#039; Smartphone.&lt;br /&gt;
***&#039;&#039;&#039;5:&#039;&#039;&#039; Tablet/iPad.&lt;br /&gt;
**&#039;&#039;&#039;make:&#039;&#039;&#039; Marca del dispositivo. &#039;&#039;Ejemplo: bq&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;model:&#039;&#039;&#039; Modelo del dispositivo. &#039;&#039;Ejemplo: Aquaris E5&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;os:&#039;&#039;&#039; Sistema operativo. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;Android:&#039;&#039;&#039; Android.&lt;br /&gt;
***&#039;&#039;&#039;iOs:&#039;&#039;&#039; ios.&lt;br /&gt;
**&#039;&#039;&#039;osv:&#039;&#039;&#039; Version del sistema operativo. &#039;&#039;Ejemplo: 6.0.1&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;hwv:&#039;&#039;&#039; Version del hardware. &#039;&#039;Ejemplo: Aquaris_E5&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;h:&#039;&#039;&#039; Altura de pantalla. &#039;&#039;Ejemplo: 1920&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;w:&#039;&#039;&#039; Anchura de pantalla. &#039;&#039;Ejemplo: 1080&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;ppi:&#039;&#039;&#039; Pixeles por pulgada. &#039;&#039;Ejemplo: 480&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;pxratio:&#039;&#039;&#039; Densidad de pixeles. &#039;&#039;Ejemplo: 3&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;inches:&#039;&#039;&#039; Pulgadas. &#039;&#039;Ejemplo: 4.9&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;js:&#039;&#039;&#039; Soporte para JavaScript. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;0:&#039;&#039;&#039; No.&lt;br /&gt;
***&#039;&#039;&#039;1:&#039;&#039;&#039; Si.&lt;br /&gt;
**&#039;&#039;&#039;connectiontype:&#039;&#039;&#039; Tipo de conexión. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;0:&#039;&#039;&#039; Unknown.&lt;br /&gt;
***&#039;&#039;&#039;1:&#039;&#039;&#039; Ethernet.&lt;br /&gt;
***&#039;&#039;&#039;2:&#039;&#039;&#039; WiFI.&lt;br /&gt;
***&#039;&#039;&#039;3:&#039;&#039;&#039; Cellular Network - Unkown Generation.&lt;br /&gt;
***&#039;&#039;&#039;4:&#039;&#039;&#039; Cellular Network - 2G.&lt;br /&gt;
***&#039;&#039;&#039;5:&#039;&#039;&#039; Cellular Network - 3G.&lt;br /&gt;
***&#039;&#039;&#039;6:&#039;&#039;&#039; Cellular Network - 4G.&lt;br /&gt;
**&#039;&#039;&#039;ifa:&#039;&#039;&#039; Identificador para la publicidad.  &#039;&#039;&#039;Campo obligatorio, debe de estar o el ifa o el uuid.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;Android:&#039;&#039;&#039; Google AID (Google Advertising Identifier). &#039;&#039;Ejemplo: 38400000-8cf0-11bd-b23e-10b96e40000d&#039;&#039;.&lt;br /&gt;
***&#039;&#039;&#039;iOs:&#039;&#039;&#039; iOS IFA (Apple Identifier for Advertiser). &#039;&#039;Ejemplo: AAAAAAAAA-BBBB-CCCC-1111-222222220000&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;uuid:&#039;&#039;&#039; Identificador único universal. &#039;&#039;Ejemplo: 550e8400-e29b-41d4-a716-446655440000&#039;&#039;. &#039;&#039;&#039;Campo obligatorio, debe estar el uuid o el ifa.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;language:&#039;&#039;&#039; Idioma del dispositivo ( locale ). &#039;&#039;Ejemplo: es&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;country:&#039;&#039;&#039; Pais del dispositivo ( locale ). &#039;&#039;Ejemplo: ES&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;carrier:&#039;&#039;&#039; Operador Telefónico del dispositivo. &#039;&#039;Ejemplo: Movistar&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;carriercode:&#039;&#039;&#039; Código del operador telefónico. &#039;&#039;Ejemplo: 21407&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;carriercountry:&#039;&#039;&#039; País del operador telefónico. &#039;&#039;Ejemplo: ES&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;mac: ( Solo para Android )&#039;&#039;&#039; Mac del dispositivo. &#039;&#039;Ejemplo: 00:1B:44:11:3A:B7&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;imsi: ( Solo para Android )&#039;&#039;&#039; Identidad Internacional del Abonado Móvil. &#039;&#039;Ejemplo: 7160652952503786&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;did: ( Solo para Android )&#039;&#039;&#039; Identificador Direct inward dialing (DID).&lt;br /&gt;
**&#039;&#039;&#039;dpid: ( Solo para Android )&#039;&#039;&#039; Plataform device id (Android id).&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;jsonUser:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;name:&#039;&#039;&#039; Nombre del usuario. Máximo 100 caracteres. &#039;&#039;Ejemplo: Kevin&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;surname:&#039;&#039;&#039; Apellido del usuario. Máximo 100 caracteres. &#039;&#039;Ejemplo: Lancharro&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;email:&#039;&#039;&#039; Email del usuario. Máximo 250 caracteres. &#039;&#039;Ejemplo: xxxx@xxx.com&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;password:&#039;&#039;&#039; Password del usuario. Deberá ir en md5(). Máximo 50 caracteres. &#039;&#039;Ejemplo: e10adc3949ba59abbe56e057f20f883e&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;nick:&#039;&#039;&#039; Nick del usuario. Máximo 50 caracteres. &#039;&#039;Ejemplo: CocoNilo&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;phone:&#039;&#039;&#039; Teléfono móvil del usuario. Máximo 15 caracteres. &#039;&#039;Ejemplo: 6XX XXX XXX&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;birthDate:&#039;&#039;&#039; Fecha de nacimiento del usuario. &#039;&#039;Ejemplo : 1992-01-12&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;gender:&#039;&#039;&#039; Sexo del usuario.&lt;br /&gt;
***&#039;&#039;&#039;Masculino:&#039;&#039;&#039; M.&lt;br /&gt;
***&#039;&#039;&#039;Femenino:&#039;&#039;&#039; F.&lt;br /&gt;
**&#039;&#039;&#039;allowsCommercials:&#039;&#039;&#039; Termino de privacidad con el que el usuario permite recibir comunicaciones comerciales.&lt;br /&gt;
***&#039;&#039;&#039;Permite:&#039;&#039;&#039; yes.&lt;br /&gt;
***&#039;&#039;&#039;Deniega:&#039;&#039;&#039; no.&lt;br /&gt;
**&#039;&#039;&#039;allowsCession:&#039;&#039;&#039; Termino de privacidad con el que el usuario permite que sus datos sean cedidos a terceras empresas relacionadas con el sector.&lt;br /&gt;
***&#039;&#039;&#039;Permite:&#039;&#039;&#039; yes.&lt;br /&gt;
***&#039;&#039;&#039;Deniega:&#039;&#039;&#039; no.&lt;br /&gt;
**Dependiendo de la tarea que estemos ejecutando los campos obligatorios variarán:&lt;br /&gt;
***&#039;&#039;&#039;register:&#039;&#039;&#039; Dependerá de los campos que hayamos configurado en el apartado de NickCenter en el panel de Mobeleader, como mínimo siempre será obligatorio el &#039;&#039;&#039;email&#039;&#039;&#039; y el &#039;&#039;&#039;password&#039;&#039;&#039;.&lt;br /&gt;
***&#039;&#039;&#039;update:&#039;&#039;&#039; El único campo obligatorio para las actualizaciones será el &#039;&#039;&#039;email&#039;&#039;&#039;, el resto de campos que se añadan serán los campos a actualizar.&lt;br /&gt;
***&#039;&#039;&#039;login:&#039;&#039;&#039; Dependerá de los campos que hayamos configurado en el apartado de NickCenter en el panel de Mobeleader, será obligatorio el &#039;&#039;&#039;email&#039;&#039;&#039; o el &#039;&#039;&#039;nick&#039;&#039;&#039;, junto con el &#039;&#039;&#039;password&#039;&#039;&#039;. En cualquiera de los casos el &#039;&#039;&#039;password&#039;&#039;&#039; siempre será obligatorio.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;jsonApp&#039;&#039;&#039;: Todos los campos son obligatorios&lt;br /&gt;
**&#039;&#039;&#039;name&#039;&#039;&#039;: Nombre de la aplicación dada de alta en el panel de Mobeleader. &#039;&#039;Ejemplo: Mobeleader&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;bundle&#039;&#039;&#039;: Nombre del paquete de la aplicación. &#039;&#039;Ejemplo: com.mobeleader&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;version&#039;&#039;&#039;: Version de la aplicación. &#039;&#039;Ejemplo: 1.0&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;versioncode&#039;&#039;&#039;: Código de versión de la aplicación. &#039;&#039;Ejemplo: 1&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=Códigos de Errores=&lt;br /&gt;
A continuación se expondrá una lista con los posibles errores que devolverá el Webservice en caso de que los datos no sean correctos:&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Errores generales:&#039;&#039;&#039; Estos errores se deben a un mal uso de la clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039; y/o su cifrado, por lo que al no poder devolver la cadena cifrada con la RSA Key pública que le corresponde a la aplicación, se mandarán en texto plano sin cifrar y sin formato JSON.&lt;br /&gt;
**Error 000a - Failure decrypting&lt;br /&gt;
**Error 000b - Invalid Task&lt;br /&gt;
**Error 000c - Empty or invalid app hash&lt;br /&gt;
**Error 000d - Missing public RSA Key for app hash X&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea checkActive:&#039;&#039;&#039;&lt;br /&gt;
**Error 001a - Failure checking app active&lt;br /&gt;
**Error 001b - Failure checking app active&lt;br /&gt;
**Error 001c - Failure checking app active&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea rescuePassword:&#039;&#039;&#039;&lt;br /&gt;
**Error 002a - Failure on rescuePassword&lt;br /&gt;
**Error 002b - Failure on rescuePassword&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea requestFields:&#039;&#039;&#039;&lt;br /&gt;
**Error 003a - Failure on requestFields&lt;br /&gt;
**Error 003b - Failure on requestFields&lt;br /&gt;
**Error 003c - Failure on requestFields&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 004a - Failure validating user json, there are no fields configured in your application&lt;br /&gt;
**Error 004b - Failure validating user json, incorrect json format&lt;br /&gt;
**Error 004c - Failure validating user json&lt;br /&gt;
**Error 004d - X is missing or empty in user json.&lt;br /&gt;
**Error 004e - Invalid format for X field in user json.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 005a - Failure validating device json, incorrect json format&lt;br /&gt;
**Error 005b - Failure validating device json&lt;br /&gt;
**Error 005c - Field X is missing or empty in device json&lt;br /&gt;
**Error 005c - Field ifa/uuid are missing or empty in device json, one of them must be informed&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 006a - Failure validating app json, incorrect json format&lt;br /&gt;
**Error 006b - Field X is empty in app json&lt;br /&gt;
**Error 006c - The bundle X for os Y, does not exist&lt;br /&gt;
**Error 006c - Invalid X in app json, it must be numeric&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 007a - Failure generating library json, incorrect device json format&lt;br /&gt;
**Error 007b - Failure generating library json, wrong os in device json&lt;br /&gt;
**Error 007c - Failure generating library json, wrong os in device json&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register:&#039;&#039;&#039;&lt;br /&gt;
**Error 008a - Failure registering&lt;br /&gt;
**Error 008b - Failure registering&lt;br /&gt;
**Error 008c - Email already exists&lt;br /&gt;
**Error 008c - Nick already exists&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea login:&#039;&#039;&#039;&lt;br /&gt;
**Error 009 - Failure on login&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea update:&#039;&#039;&#039;&lt;br /&gt;
**Error 010 - Failure updating&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Sin tarea/Tarea erronea:&#039;&#039;&#039;&lt;br /&gt;
**Error 011a - Empty Task&lt;br /&gt;
**Error 011b - Invalid Task&lt;/div&gt;</summary>
		<author><name>Kevin</name></author>
	</entry>
	<entry>
		<id>https://wiki.mobeleader.com/index.php?title=Documentaci%C3%B3n_Webservice_NickCenter&amp;diff=2178</id>
		<title>Documentación Webservice NickCenter</title>
		<link rel="alternate" type="text/html" href="https://wiki.mobeleader.com/index.php?title=Documentaci%C3%B3n_Webservice_NickCenter&amp;diff=2178"/>
		<updated>2018-09-12T07:48:36Z</updated>

		<summary type="html">&lt;p&gt;Kevin: /* Uso de la clase spsApiNickcenter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduccion=&lt;br /&gt;
En ésta documentación se expondrá como deberemos hacer uso del Webservice de NickCenter, de manera que emule la propia librería de NickCenter y así no haya la necesidad de usarla ni implementarla en las aplicaciones. A pesar de ello, la configuración en el panel de Mobeleader será la misma, siendo necesario dar de alta la aplicación en éste, y configurandola para el uso de NickCenter. Podremos hacer uso de dicho Webservice de dos maneras:&lt;br /&gt;
#Llamada directa al Webservice. Ésta opción será menos segura debido a que los datos irán sin cifrar.&lt;br /&gt;
#Usando la clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039; creada por Mobeleader. Esta opción será mas segura ya que cuenta con un cifrado mediante RSA Keys generadas en nuestro sistema.&lt;br /&gt;
&lt;br /&gt;
=Llamada directa=&lt;br /&gt;
Si queremos usar directamente el Webservice de Nickcenter sin la necesidad de usar la clase &#039;&#039;&#039;spsApiNickCenter&#039;&#039;&#039;, esta será la URL a la que deberemos conectarnos &#039;&#039;https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=&#039;&#039;. Más adelante se expondrán que tareas hay disponibles y como hay que mandar los datos para su ejecución.&lt;br /&gt;
&lt;br /&gt;
=Uso de la clase spsApiNickcenter=&lt;br /&gt;
Esta clase accesible desde [[Medio:Api_nickcenter_client.zip]], esta pensada para una mayor comodidad del cliente, permitiendo que todo se gestione desde ésta sin necesidad de tener que programar las llamadas y retornos del Webservice. A continuación se expondrán los pasos a seguir para un correcto funcionamiento de la clase:&lt;br /&gt;
==Instalación PHPSECLIB==&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Será necesario disponer de phpseclib versión 2.0.11 o superior.&lt;br /&gt;
Los pasos para instalar esta versión de phpseclib son:&amp;lt;br /&amp;gt;&lt;br /&gt;
- Disponer de la herramienta &amp;quot;composer.phar&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
- Ejecutar &amp;quot;composer&amp;quot; en la carpeta donde vaya a instalar nuestra librería.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.- Descargar composer desde: https://getcomposer.org/composer.phar&lt;br /&gt;
&amp;lt;pre&amp;gt;curl https://getcomposer.org/composer.phar -o composer.phar&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.- Ejecutar el comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;php composer.phar --working-dir=. require phpseclib/phpseclib:~2.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hecho esto, obtendrá la siguiente salida por consola:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./composer.json has been created&lt;br /&gt;
Loading composer repositories with package information&lt;br /&gt;
Updating dependencies (including require-dev)&lt;br /&gt;
Package operations: 1 install, 0 updates, 0 removals&lt;br /&gt;
  - Installing phpseclib/phpseclib (2.0.11): Downloading (100%)         &lt;br /&gt;
phpseclib/phpseclib suggests installing ext-libsodium (SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.)&lt;br /&gt;
phpseclib/phpseclib suggests installing ext-mcrypt (Install the Mcrypt extension in order to speed up a few other cryptographic operations.)&lt;br /&gt;
phpseclib/phpseclib suggests installing ext-gmp (Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.)&lt;br /&gt;
Writing lock file&lt;br /&gt;
Generating autoload files&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto significa que está todo lo necesario instalado en su carpeta vendor.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Clase spsApiNickcenter==&lt;br /&gt;
Una vez instalada la librería &#039;&#039;&#039;PHPSECLIB&#039;&#039;&#039; en nuestra carpeta vendor, lo primero que debemos hacer es abrir la clase y modificar la ruta de acceso a dicha carpeta.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
require_once &#039;PATH..../vendor/autoload.php&#039;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Una vez modificada la ruta, para poder instanciar la clase deberemos coger la cadena de la &#039;&#039;&#039;RSA KEY Privada&#039;&#039;&#039;, accesible desde https://panel.mobeleader.com/index.php?sec=6, y reemplazarla en el siguiente codigo.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA]);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Si la instalación de la librería es correcta, la ruta de acceso a ésta ha sido cambiada y es correcta, y la &#039;&#039;&#039;RSA KEY Privada&#039;&#039;&#039; es correcta, para realizar las llamadas al Webservice usaremos la funcion &#039;&#039;&#039;getData()&#039;&#039;&#039; de la clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039;. Dicha función será la encargada de realizar todas las conexiones al Webservice, de cifrar los datos que enviaremos a éste y de descifrar los que datos que nos retorne.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(tarea, array_datos)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
A continuación se exponen cuales son las distintas tareas ejecutables, y como ha de ser el array de datos para posibilitar dicha ejecución.&lt;br /&gt;
&lt;br /&gt;
=Tareas=&lt;br /&gt;
La clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039; consta de la función &#039;&#039;getData(&#039;&#039;&#039;tarea, array_datos&#039;&#039;&#039;)&#039;&#039;, con la que ejecutaremos las distintas operaciones que el Webservice permite y a la que le deberemos mandar los siguientes parámetros:&lt;br /&gt;
#&#039;&#039;&#039;tarea:&#039;&#039;&#039; Sera la propia tarea a realizar, puediendo ser:&lt;br /&gt;
##&#039;&#039;&#039;checkActive&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;requestFields&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;register&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;update&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;login&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;rescuePassword&#039;&#039;&#039;.&lt;br /&gt;
#&#039;&#039;&#039;array_datos:&#039;&#039;&#039; Contendrá un array con los datos necesarios para la ejecución de la tarea.&lt;br /&gt;
===Llamadas al Webservice===&lt;br /&gt;
&#039;&#039;Recuerde reemplazar el contenido de los ejemplos por los valores reales&#039;&#039;.&lt;br /&gt;
*&#039;&#039;&#039;checkActive:&#039;&#039;&#039; Esta tarea comprobará que la aplicación tenga NickCenter activo, independientemente de usarla directamente o no, el resto de tareas harán uso de ella antes de realizar sus operaciones propias.&lt;br /&gt;
:*&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de Mobeleader.&lt;br /&gt;
:*&#039;&#039;&#039;country:&#039;&#039;&#039; Contendrá el país del dispositivo, necesario para comprobar si NickCenter esta activo para esa aplicación en ese país.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=checkActive&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;country=[código país, ej: ES]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;country&#039;] = [código país, ej: ES];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;checkActive&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;requestFields:&#039;&#039;&#039; Mediante ésta tarea obtendremos la configuración de campos y traducciones para una determinada vista.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de  Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;view:&#039;&#039;&#039; Indicará los campos de que vista solicitamos.&lt;br /&gt;
***&#039;&#039;&#039;register:&#039;&#039;&#039; Pantalla inicial del registro.&lt;br /&gt;
***&#039;&#039;&#039;login:&#039;&#039;&#039; Pantalla de login.&lt;br /&gt;
***&#039;&#039;&#039;rescue:&#039;&#039;&#039; Pantalla de recuperación de contraseña.&lt;br /&gt;
**&#039;&#039;&#039;country:&#039;&#039;&#039; Contendrá el país del dispositivo, necesario para comprobar si NickCenter esta activo para esa aplicación en ese país.&lt;br /&gt;
**&#039;&#039;&#039;language:&#039;&#039;&#039; Idioma del dispositivo, necesario para las traducciones y las configuraciones de los campos que se retornarán.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=requestFields&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;view=[vista, ej: register]&amp;amp;country=[código país, ej: ES]&amp;amp;language=[código idioma, ej: es]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;view&#039;] = [vista, ej: register];&lt;br /&gt;
$array_datos[&#039;country&#039;] = [código país, ej: ES];&lt;br /&gt;
$array_datos[&#039;language&#039;] = [código idioma, ej: es];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;requestFields&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;register:&#039;&#039;&#039; Esta tarea servirá para registrar un usuario en nuestro sistema.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de  Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039; Contendrá los datos del dispositivo. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonApp:&#039;&#039;&#039; Contendrá los datos de la aplicación. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonUser:&#039;&#039;&#039; Contendrá los datos del usuario. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=register&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;jsonDevice=[json con toda la información del dispositivo]&amp;amp;jsonApp=[json con toda la información de la app]&amp;amp;jsonUser=[json con toda la información a registrar del usuario]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;jsonDevice&#039;] = [json con toda la información del dispositivo];&lt;br /&gt;
$array_datos[&#039;jsonApp&#039;] = [json con toda la información de la app];&lt;br /&gt;
$array_datos[&#039;jsonUser&#039;] = [json con toda la información a registrar del usuario];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;register&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;update:&#039;&#039;&#039; Esta tarea servirá para actualizar un usuario que previamente haya sido registrado en nuestro sistema.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de  Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039; Contendrá los datos del dispositivo. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonApp:&#039;&#039;&#039; Contendrá los datos de la aplicación. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonUser:&#039;&#039;&#039; Contendrá los datos del usuario. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=update&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;jsonDevice=[json con toda la información del dispositivo]&amp;amp;jsonApp=[json con toda la información de la app]&amp;amp;jsonUser=[json con toda la información a actualizar del usuario]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;jsonDevice&#039;] = [json con toda la información del dispositivo];&lt;br /&gt;
$array_datos[&#039;jsonApp&#039;] = [json con toda la información de la app];&lt;br /&gt;
$array_datos[&#039;jsonUser&#039;] = [json con toda la información a actualizar del usuario];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;update&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;login:&#039;&#039;&#039; Esta tarea servirá para hacer login en las aplicaciones registradas en NickCenter, con usuarios previamente registrados en nuestro sistema.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta el panel de  en Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039; Contendrá los datos del dispositivo. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonApp:&#039;&#039;&#039; Contendrá los datos de la aplicación. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonUser:&#039;&#039;&#039; Contendrá los datos del usuario. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=login&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;jsonDevice=[json con toda la información del dispositivo]&amp;amp;jsonApp=[json con toda la información de la app]&amp;amp;jsonUser=[json con toda la información necesaria para el login]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;jsonDevice&#039;] = [json con toda la información del dispositivo];&lt;br /&gt;
$array_datos[&#039;jsonApp&#039;] = [json con toda la información de la app];&lt;br /&gt;
$array_datos[&#039;jsonUser&#039;] = [json con toda la información necesaria para el login];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;login&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;rescuePassword:&#039;&#039;&#039; Mediante ésta tarea restauraremos la contraseña de usuarios previamente registrados en nuestro sistema y que no esten dados de baja.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta el panel de  en Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;country:&#039;&#039;&#039; Contendrá el país del dispositivo, necesario para comprobar si NickCenter esta activo para esa aplicación en ese país.&lt;br /&gt;
**&#039;&#039;&#039;language:&#039;&#039;&#039; Idioma del dispositivo, necesario para las traducciones que se retornarán.&lt;br /&gt;
**&#039;&#039;&#039;email:&#039;&#039;&#039; Email al que hay que restaurar la contraseña.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=rescuePassword&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;country=[código país, ej: ES]&amp;amp;language=[código idioma, ej: es]&amp;amp;email=[email a recuperar, ej: prueba@prueba.com]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;country&#039;] = [código país, ej: ES];&lt;br /&gt;
$array_datos[&#039;language&#039;] = [código idioma, ej: es];&lt;br /&gt;
$array_datos[&#039;email&#039;] = [email a recuperar, ej: prueba@prueba.com];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;rescuePassword&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Retornos del Webservice===&lt;br /&gt;
Cada tarea tendrá su propio JSON de retorno:&lt;br /&gt;
*&#039;&#039;&#039;checkActive:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;active:&#039;&#039;&#039; Indicará si la aplicación esta activa o no.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;requestFields:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;general:&#039;&#039;&#039; En caso de no haber ningún error devolverá un array con todas las traducciones generales para el idioma seleccionado.&lt;br /&gt;
**&#039;&#039;&#039;fields:&#039;&#039;&#039; En caso de no haber ningún error devolverá un array con todos los campos y sus traducciones para el idioma seleccionado.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;register:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de no haber error indicará que el registro se ha completado.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;update:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de no haber error indicará que se ha actualizado correctamente.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;login:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de no haber error indicará que se ha logeado correctamente.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;rescuePassword:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de que no haya habido un error, se mandará una cadena en el idioma seleccionado, con las instrucciones para recuperar la contraseña.&lt;br /&gt;
&lt;br /&gt;
=Campos y Formatos=&lt;br /&gt;
*&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;ua:&#039;&#039;&#039; User Agent. Es la cadena de texto que identifica al usuario ante el servidor que se esta conectando mediante HTTP. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;lmt:&#039;&#039;&#039; Limit Ad Tracking. Indicará si esta permitido el acceso al ifa del dispositivo. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;0:&#039;&#039;&#039; Inactivo/Permitido.&lt;br /&gt;
***&#039;&#039;&#039;1:&#039;&#039;&#039; Activo/No permitido.&lt;br /&gt;
**&#039;&#039;&#039;devicetype:&#039;&#039;&#039; Tipo de dispositivo. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;4:&#039;&#039;&#039; Smartphone.&lt;br /&gt;
***&#039;&#039;&#039;5:&#039;&#039;&#039; Tablet/iPad.&lt;br /&gt;
**&#039;&#039;&#039;make:&#039;&#039;&#039; Marca del dispositivo. &#039;&#039;Ejemplo: bq&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;model:&#039;&#039;&#039; Modelo del dispositivo. &#039;&#039;Ejemplo: Aquaris E5&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;os:&#039;&#039;&#039; Sistema operativo. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;Android:&#039;&#039;&#039; Android.&lt;br /&gt;
***&#039;&#039;&#039;iOs:&#039;&#039;&#039; ios.&lt;br /&gt;
**&#039;&#039;&#039;osv:&#039;&#039;&#039; Version del sistema operativo. &#039;&#039;Ejemplo: 6.0.1&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;hwv:&#039;&#039;&#039; Version del hardware. &#039;&#039;Ejemplo: Aquaris_E5&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;h:&#039;&#039;&#039; Altura de pantalla. &#039;&#039;Ejemplo: 1920&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;w:&#039;&#039;&#039; Anchura de pantalla. &#039;&#039;Ejemplo: 1080&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;ppi:&#039;&#039;&#039; Pixeles por pulgada. &#039;&#039;Ejemplo: 480&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;pxratio:&#039;&#039;&#039; Densidad de pixeles. &#039;&#039;Ejemplo: 3&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;inches:&#039;&#039;&#039; Pulgadas. &#039;&#039;Ejemplo: 4.9&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;js:&#039;&#039;&#039; Soporte para JavaScript. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;0:&#039;&#039;&#039; No.&lt;br /&gt;
***&#039;&#039;&#039;1:&#039;&#039;&#039; Si.&lt;br /&gt;
**&#039;&#039;&#039;connectiontype:&#039;&#039;&#039; Tipo de conexión. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;0:&#039;&#039;&#039; Unknown.&lt;br /&gt;
***&#039;&#039;&#039;1:&#039;&#039;&#039; Ethernet.&lt;br /&gt;
***&#039;&#039;&#039;2:&#039;&#039;&#039; WiFI.&lt;br /&gt;
***&#039;&#039;&#039;3:&#039;&#039;&#039; Cellular Network - Unkown Generation.&lt;br /&gt;
***&#039;&#039;&#039;4:&#039;&#039;&#039; Cellular Network - 2G.&lt;br /&gt;
***&#039;&#039;&#039;5:&#039;&#039;&#039; Cellular Network - 3G.&lt;br /&gt;
***&#039;&#039;&#039;6:&#039;&#039;&#039; Cellular Network - 4G.&lt;br /&gt;
**&#039;&#039;&#039;ifa:&#039;&#039;&#039; Identificador para la publicidad.  &#039;&#039;&#039;Campo obligatorio, debe de estar o el ifa o el uuid.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;Android:&#039;&#039;&#039; Google AID (Google Advertising Identifier). &#039;&#039;Ejemplo: 38400000-8cf0-11bd-b23e-10b96e40000d&#039;&#039;.&lt;br /&gt;
***&#039;&#039;&#039;iOs:&#039;&#039;&#039; iOS IFA (Apple Identifier for Advertiser). &#039;&#039;Ejemplo: AAAAAAAAA-BBBB-CCCC-1111-222222220000&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;uuid:&#039;&#039;&#039; Identificador único universal. &#039;&#039;Ejemplo: 550e8400-e29b-41d4-a716-446655440000&#039;&#039;. &#039;&#039;&#039;Campo obligatorio, debe estar el uuid o el ifa.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;language:&#039;&#039;&#039; Idioma del dispositivo ( locale ). &#039;&#039;Ejemplo: es&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;country:&#039;&#039;&#039; Pais del dispositivo ( locale ). &#039;&#039;Ejemplo: ES&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;carrier:&#039;&#039;&#039; Operador Telefónico del dispositivo. &#039;&#039;Ejemplo: Movistar&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;carriercode:&#039;&#039;&#039; Código del operador telefónico. &#039;&#039;Ejemplo: 21407&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;carriercountry:&#039;&#039;&#039; País del operador telefónico. &#039;&#039;Ejemplo: ES&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;mac: ( Solo para Android )&#039;&#039;&#039; Mac del dispositivo. &#039;&#039;Ejemplo: 00:1B:44:11:3A:B7&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;imsi: ( Solo para Android )&#039;&#039;&#039; Identidad Internacional del Abonado Móvil. &#039;&#039;Ejemplo: 7160652952503786&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;did: ( Solo para Android )&#039;&#039;&#039; Identificador Direct inward dialing (DID).&lt;br /&gt;
**&#039;&#039;&#039;dpid: ( Solo para Android )&#039;&#039;&#039; Plataform device id (Android id).&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;jsonUser:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;name:&#039;&#039;&#039; Nombre del usuario. Máximo 100 caracteres. &#039;&#039;Ejemplo: Kevin&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;surname:&#039;&#039;&#039; Apellido del usuario. Máximo 100 caracteres. &#039;&#039;Ejemplo: Lancharro&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;email:&#039;&#039;&#039; Email del usuario. Máximo 250 caracteres. &#039;&#039;Ejemplo: xxxx@xxx.com&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;password:&#039;&#039;&#039; Password del usuario. Deberá ir en md5(). Máximo 50 caracteres. &#039;&#039;Ejemplo: e10adc3949ba59abbe56e057f20f883e&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;nick:&#039;&#039;&#039; Nick del usuario. Máximo 50 caracteres. &#039;&#039;Ejemplo: CocoNilo&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;phone:&#039;&#039;&#039; Teléfono móvil del usuario. Máximo 15 caracteres. &#039;&#039;Ejemplo: 6XX XXX XXX&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;birthDate:&#039;&#039;&#039; Fecha de nacimiento del usuario. &#039;&#039;Ejemplo : 1992-01-12&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;gender:&#039;&#039;&#039; Sexo del usuario.&lt;br /&gt;
***&#039;&#039;&#039;Masculino:&#039;&#039;&#039; M.&lt;br /&gt;
***&#039;&#039;&#039;Femenino:&#039;&#039;&#039; F.&lt;br /&gt;
**&#039;&#039;&#039;allowsCommercials:&#039;&#039;&#039; Termino de privacidad con el que el usuario permite recibir comunicaciones comerciales.&lt;br /&gt;
***&#039;&#039;&#039;Permite:&#039;&#039;&#039; yes.&lt;br /&gt;
***&#039;&#039;&#039;Deniega:&#039;&#039;&#039; no.&lt;br /&gt;
**&#039;&#039;&#039;allowsCession:&#039;&#039;&#039; Termino de privacidad con el que el usuario permite que sus datos sean cedidos a terceras empresas relacionadas con el sector.&lt;br /&gt;
***&#039;&#039;&#039;Permite:&#039;&#039;&#039; yes.&lt;br /&gt;
***&#039;&#039;&#039;Deniega:&#039;&#039;&#039; no.&lt;br /&gt;
**Dependiendo de la tarea que estemos ejecutando los campos obligatorios variarán:&lt;br /&gt;
***&#039;&#039;&#039;register:&#039;&#039;&#039; Dependerá de los campos que hayamos configurado en el apartado de NickCenter en el panel de Mobeleader, como mínimo siempre será obligatorio el &#039;&#039;&#039;email&#039;&#039;&#039; y el &#039;&#039;&#039;password&#039;&#039;&#039;.&lt;br /&gt;
***&#039;&#039;&#039;update:&#039;&#039;&#039; El único campo obligatorio para las actualizaciones será el &#039;&#039;&#039;email&#039;&#039;&#039;, el resto de campos que se añadan serán los campos a actualizar.&lt;br /&gt;
***&#039;&#039;&#039;login:&#039;&#039;&#039; Dependerá de los campos que hayamos configurado en el apartado de NickCenter en el panel de Mobeleader, será obligatorio el &#039;&#039;&#039;email&#039;&#039;&#039; o el &#039;&#039;&#039;nick&#039;&#039;&#039;, junto con el &#039;&#039;&#039;password&#039;&#039;&#039;. En cualquiera de los casos el &#039;&#039;&#039;password&#039;&#039;&#039; siempre será obligatorio.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;jsonApp&#039;&#039;&#039;: Todos los campos son obligatorios&lt;br /&gt;
**&#039;&#039;&#039;name&#039;&#039;&#039;: Nombre de la aplicación dada de alta en el panel de Mobeleader. &#039;&#039;Ejemplo: Mobeleader&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;bundle&#039;&#039;&#039;: Nombre del paquete de la aplicación. &#039;&#039;Ejemplo: com.mobeleader&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;version&#039;&#039;&#039;: Version de la aplicación. &#039;&#039;Ejemplo: 1.0&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;versioncode&#039;&#039;&#039;: Código de versión de la aplicación. &#039;&#039;Ejemplo: 1&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=Códigos de Errores=&lt;br /&gt;
A continuación se expondrá una lista con los posibles errores que devolverá el Webservice en caso de que los datos no sean correctos:&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Errores generales:&#039;&#039;&#039; Estos errores se deben a un mal uso de la clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039; y/o su cifrado, por lo que al no poder devolver la cadena cifrada con la RSA Key pública que le corresponde a la aplicación, se mandarán en texto plano sin cifrar y sin formato JSON.&lt;br /&gt;
**Error 000a - Failure decrypting&lt;br /&gt;
**Error 000b - Invalid Task&lt;br /&gt;
**Error 000c - Empty or invalid app hash&lt;br /&gt;
**Error 000d - Missing public RSA Key for app hash X&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea checkActive:&#039;&#039;&#039;&lt;br /&gt;
**Error 001a - Failure checking app active&lt;br /&gt;
**Error 001b - Failure checking app active&lt;br /&gt;
**Error 001c - Failure checking app active&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea rescuePassword:&#039;&#039;&#039;&lt;br /&gt;
**Error 002a - Failure on rescuePassword&lt;br /&gt;
**Error 002b - Failure on rescuePassword&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea requestFields:&#039;&#039;&#039;&lt;br /&gt;
**Error 003a - Failure on requestFields&lt;br /&gt;
**Error 003b - Failure on requestFields&lt;br /&gt;
**Error 003c - Failure on requestFields&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 004a - Failure validating user json, there are no fields configured in your application&lt;br /&gt;
**Error 004b - Failure validating user json, incorrect json format&lt;br /&gt;
**Error 004c - Failure validating user json&lt;br /&gt;
**Error 004d - X is missing or empty in user json.&lt;br /&gt;
**Error 004e - Invalid format for X field in user json.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 005a - Failure validating device json, incorrect json format&lt;br /&gt;
**Error 005b - Failure validating device json&lt;br /&gt;
**Error 005c - Field X is missing or empty in device json&lt;br /&gt;
**Error 005c - Field ifa/uuid are missing or empty in device json, one of them must be informed&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 006a - Failure validating app json, incorrect json format&lt;br /&gt;
**Error 006b - Field X is empty in app json&lt;br /&gt;
**Error 006c - The bundle X for os Y, does not exist&lt;br /&gt;
**Error 006c - Invalid X in app json, it must be numeric&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 007a - Failure generating library json, incorrect device json format&lt;br /&gt;
**Error 007b - Failure generating library json, wrong os in device json&lt;br /&gt;
**Error 007c - Failure generating library json, wrong os in device json&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register:&#039;&#039;&#039;&lt;br /&gt;
**Error 008a - Failure registering&lt;br /&gt;
**Error 008b - Failure registering&lt;br /&gt;
**Error 008c - Email already exists&lt;br /&gt;
**Error 008c - Nick already exists&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea login:&#039;&#039;&#039;&lt;br /&gt;
**Error 009 - Failure on login&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea update:&#039;&#039;&#039;&lt;br /&gt;
**Error 010 - Failure updating&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Sin tarea/Tarea erronea:&#039;&#039;&#039;&lt;br /&gt;
**Error 011a - Empty Task&lt;br /&gt;
**Error 011b - Invalid Task&lt;/div&gt;</summary>
		<author><name>Kevin</name></author>
	</entry>
	<entry>
		<id>https://wiki.mobeleader.com/index.php?title=Archivo:Api_nickcenter_client.zip&amp;diff=2177</id>
		<title>Archivo:Api nickcenter client.zip</title>
		<link rel="alternate" type="text/html" href="https://wiki.mobeleader.com/index.php?title=Archivo:Api_nickcenter_client.zip&amp;diff=2177"/>
		<updated>2018-09-12T07:47:58Z</updated>

		<summary type="html">&lt;p&gt;Kevin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kevin</name></author>
	</entry>
	<entry>
		<id>https://wiki.mobeleader.com/index.php?title=P%C3%A1gina_principal&amp;diff=2175</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.mobeleader.com/index.php?title=P%C3%A1gina_principal&amp;diff=2175"/>
		<updated>2018-09-11T16:06:25Z</updated>

		<summary type="html">&lt;p&gt;Kevin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Librerias:index|Librerías]]&lt;br /&gt;
* [[Panel:Anuncios:Anunciantes|Anuncios para anunciantes]]&lt;br /&gt;
* Bases de Datos&lt;br /&gt;
** [[BBDDs:AltasYBajas|Webservice Altas y Bajas]]&lt;br /&gt;
**[[Guía eMailing y BBDD]]&lt;br /&gt;
**[[Email 360 - Amazon SES]]&lt;br /&gt;
* [[Panel:Desarrolladores:AppExchange|App Exchange]]&lt;br /&gt;
* [[Documentación_Webservice_NickCenter|Documentación Webservice NickCenter - Manual de Usuario]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Ayuda de wikimedia ==&lt;br /&gt;
&lt;br /&gt;
Consulta la [https://meta.wikimedia.org/wiki/Help:Contents/es guía del usuario] para obtener información sobre el uso del software wiki.&lt;br /&gt;
&lt;br /&gt;
== Primeros pasos ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista de ajustes de configuración]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Manual:FAQ/es Preguntas frecuentes sobre MediaWiki]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correo de anuncios de publicación de MediaWiki]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Traducir MediaWiki en tu idioma]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Aprende cómo combatir el spam en tu wiki]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kevin</name></author>
	</entry>
	<entry>
		<id>https://wiki.mobeleader.com/index.php?title=Documentaci%C3%B3n_Webservice_NickCenter&amp;diff=2174</id>
		<title>Documentación Webservice NickCenter</title>
		<link rel="alternate" type="text/html" href="https://wiki.mobeleader.com/index.php?title=Documentaci%C3%B3n_Webservice_NickCenter&amp;diff=2174"/>
		<updated>2018-09-11T16:05:52Z</updated>

		<summary type="html">&lt;p&gt;Kevin: Página creada con «=Introduccion= En ésta documentación se expondrá como deberemos hacer uso del Webservice de NickCenter, de manera que emule la propia librería de NickCenter y así no h...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduccion=&lt;br /&gt;
En ésta documentación se expondrá como deberemos hacer uso del Webservice de NickCenter, de manera que emule la propia librería de NickCenter y así no haya la necesidad de usarla ni implementarla en las aplicaciones. A pesar de ello, la configuración en el panel de Mobeleader será la misma, siendo necesario dar de alta la aplicación en éste, y configurandola para el uso de NickCenter. Podremos hacer uso de dicho Webservice de dos maneras:&lt;br /&gt;
#Llamada directa al Webservice. Ésta opción será menos segura debido a que los datos irán sin cifrar.&lt;br /&gt;
#Usando la clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039; creada por Mobeleader. Esta opción será mas segura ya que cuenta con un cifrado mediante RSA Keys generadas en nuestro sistema.&lt;br /&gt;
&lt;br /&gt;
=Llamada directa=&lt;br /&gt;
Si queremos usar directamente el Webservice de Nickcenter sin la necesidad de usar la clase &#039;&#039;&#039;spsApiNickCenter&#039;&#039;&#039;, esta será la URL a la que deberemos conectarnos &#039;&#039;https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=&#039;&#039;. Más adelante se expondrán que tareas hay disponibles y como hay que mandar los datos para su ejecución.&lt;br /&gt;
&lt;br /&gt;
=Uso de la clase spsApiNickcenter=&lt;br /&gt;
Esta clase accesible desde ----&amp;gt;URL DE DESCARGA&amp;lt;---, esta pensada para una mayor comodidad del cliente, permitiendo que todo se gestione desde ésta sin necesidad de tener que programar las llamadas y retornos del Webservice. A continuación se expondrán los pasos a seguir para un correcto funcionamiento de la clase:&lt;br /&gt;
==Instalación PHPSECLIB==&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Será necesario disponer de phpseclib versión 2.0.11 o superior.&lt;br /&gt;
Los pasos para instalar esta versión de phpseclib son:&amp;lt;br /&amp;gt;&lt;br /&gt;
- Disponer de la herramienta &amp;quot;composer.phar&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
- Ejecutar &amp;quot;composer&amp;quot; en la carpeta donde vaya a instalar nuestra librería.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.- Descargar composer desde: https://getcomposer.org/composer.phar&lt;br /&gt;
&amp;lt;pre&amp;gt;curl https://getcomposer.org/composer.phar -o composer.phar&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.- Ejecutar el comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;php composer.phar --working-dir=. require phpseclib/phpseclib:~2.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hecho esto, obtendrá la siguiente salida por consola:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./composer.json has been created&lt;br /&gt;
Loading composer repositories with package information&lt;br /&gt;
Updating dependencies (including require-dev)&lt;br /&gt;
Package operations: 1 install, 0 updates, 0 removals&lt;br /&gt;
  - Installing phpseclib/phpseclib (2.0.11): Downloading (100%)         &lt;br /&gt;
phpseclib/phpseclib suggests installing ext-libsodium (SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.)&lt;br /&gt;
phpseclib/phpseclib suggests installing ext-mcrypt (Install the Mcrypt extension in order to speed up a few other cryptographic operations.)&lt;br /&gt;
phpseclib/phpseclib suggests installing ext-gmp (Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.)&lt;br /&gt;
Writing lock file&lt;br /&gt;
Generating autoload files&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto significa que está todo lo necesario instalado en su carpeta vendor.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Clase spsApiNickcenter==&lt;br /&gt;
Una vez instalada la librería &#039;&#039;&#039;PHPSECLIB&#039;&#039;&#039; en nuestra carpeta vendor, lo primero que debemos hacer es abrir la clase y modificar la ruta de acceso a dicha carpeta.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
require_once &#039;PATH..../vendor/autoload.php&#039;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Una vez modificada la ruta, para poder instanciar la clase deberemos coger la cadena de la &#039;&#039;&#039;RSA KEY Privada&#039;&#039;&#039;, accesible desde https://panel.mobeleader.com/index.php?sec=6, y reemplazarla en el siguiente codigo.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA]);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Si la instalación de la librería es correcta, la ruta de acceso a ésta ha sido cambiada y es correcta, y la &#039;&#039;&#039;RSA KEY Privada&#039;&#039;&#039; es correcta, para realizar las llamadas al Webservice usaremos la funcion &#039;&#039;&#039;getData()&#039;&#039;&#039; de la clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039;. Dicha función será la encargada de realizar todas las conexiones al Webservice, de cifrar los datos que enviaremos a éste y de descifrar los que datos que nos retorne.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(tarea, array_datos)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
A continuación se exponen cuales son las distintas tareas ejecutables, y como ha de ser el array de datos para posibilitar dicha ejecución.&lt;br /&gt;
&lt;br /&gt;
=Tareas=&lt;br /&gt;
La clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039; consta de la función &#039;&#039;getData(&#039;&#039;&#039;tarea, array_datos&#039;&#039;&#039;)&#039;&#039;, con la que ejecutaremos las distintas operaciones que el Webservice permite y a la que le deberemos mandar los siguientes parámetros:&lt;br /&gt;
#&#039;&#039;&#039;tarea:&#039;&#039;&#039; Sera la propia tarea a realizar, puediendo ser:&lt;br /&gt;
##&#039;&#039;&#039;checkActive&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;requestFields&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;register&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;update&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;login&#039;&#039;&#039;.&lt;br /&gt;
##&#039;&#039;&#039;rescuePassword&#039;&#039;&#039;.&lt;br /&gt;
#&#039;&#039;&#039;array_datos:&#039;&#039;&#039; Contendrá un array con los datos necesarios para la ejecución de la tarea.&lt;br /&gt;
===Llamadas al Webservice===&lt;br /&gt;
&#039;&#039;Recuerde reemplazar el contenido de los ejemplos por los valores reales&#039;&#039;.&lt;br /&gt;
*&#039;&#039;&#039;checkActive:&#039;&#039;&#039; Esta tarea comprobará que la aplicación tenga NickCenter activo, independientemente de usarla directamente o no, el resto de tareas harán uso de ella antes de realizar sus operaciones propias.&lt;br /&gt;
:*&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de Mobeleader.&lt;br /&gt;
:*&#039;&#039;&#039;country:&#039;&#039;&#039; Contendrá el país del dispositivo, necesario para comprobar si NickCenter esta activo para esa aplicación en ese país.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=checkActive&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;country=[código país, ej: ES]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;country&#039;] = [código país, ej: ES];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;checkActive&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;requestFields:&#039;&#039;&#039; Mediante ésta tarea obtendremos la configuración de campos y traducciones para una determinada vista.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de  Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;view:&#039;&#039;&#039; Indicará los campos de que vista solicitamos.&lt;br /&gt;
***&#039;&#039;&#039;register:&#039;&#039;&#039; Pantalla inicial del registro.&lt;br /&gt;
***&#039;&#039;&#039;login:&#039;&#039;&#039; Pantalla de login.&lt;br /&gt;
***&#039;&#039;&#039;rescue:&#039;&#039;&#039; Pantalla de recuperación de contraseña.&lt;br /&gt;
**&#039;&#039;&#039;country:&#039;&#039;&#039; Contendrá el país del dispositivo, necesario para comprobar si NickCenter esta activo para esa aplicación en ese país.&lt;br /&gt;
**&#039;&#039;&#039;language:&#039;&#039;&#039; Idioma del dispositivo, necesario para las traducciones y las configuraciones de los campos que se retornarán.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=requestFields&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;view=[vista, ej: register]&amp;amp;country=[código país, ej: ES]&amp;amp;language=[código idioma, ej: es]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;view&#039;] = [vista, ej: register];&lt;br /&gt;
$array_datos[&#039;country&#039;] = [código país, ej: ES];&lt;br /&gt;
$array_datos[&#039;language&#039;] = [código idioma, ej: es];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;requestFields&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;register:&#039;&#039;&#039; Esta tarea servirá para registrar un usuario en nuestro sistema.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de  Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039; Contendrá los datos del dispositivo. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonApp:&#039;&#039;&#039; Contendrá los datos de la aplicación. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonUser:&#039;&#039;&#039; Contendrá los datos del usuario. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=register&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;jsonDevice=[json con toda la información del dispositivo]&amp;amp;jsonApp=[json con toda la información de la app]&amp;amp;jsonUser=[json con toda la información a registrar del usuario]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;jsonDevice&#039;] = [json con toda la información del dispositivo];&lt;br /&gt;
$array_datos[&#039;jsonApp&#039;] = [json con toda la información de la app];&lt;br /&gt;
$array_datos[&#039;jsonUser&#039;] = [json con toda la información a registrar del usuario];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;register&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;update:&#039;&#039;&#039; Esta tarea servirá para actualizar un usuario que previamente haya sido registrado en nuestro sistema.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta en el panel de  Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039; Contendrá los datos del dispositivo. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonApp:&#039;&#039;&#039; Contendrá los datos de la aplicación. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonUser:&#039;&#039;&#039; Contendrá los datos del usuario. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=update&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;jsonDevice=[json con toda la información del dispositivo]&amp;amp;jsonApp=[json con toda la información de la app]&amp;amp;jsonUser=[json con toda la información a actualizar del usuario]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;jsonDevice&#039;] = [json con toda la información del dispositivo];&lt;br /&gt;
$array_datos[&#039;jsonApp&#039;] = [json con toda la información de la app];&lt;br /&gt;
$array_datos[&#039;jsonUser&#039;] = [json con toda la información a actualizar del usuario];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;update&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;login:&#039;&#039;&#039; Esta tarea servirá para hacer login en las aplicaciones registradas en NickCenter, con usuarios previamente registrados en nuestro sistema.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta el panel de  en Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039; Contendrá los datos del dispositivo. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonApp:&#039;&#039;&#039; Contendrá los datos de la aplicación. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
**&#039;&#039;&#039;jsonUser:&#039;&#039;&#039; Contendrá los datos del usuario. Más adelante se exponen que campos son obligatorios.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=login&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;jsonDevice=[json con toda la información del dispositivo]&amp;amp;jsonApp=[json con toda la información de la app]&amp;amp;jsonUser=[json con toda la información necesaria para el login]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;jsonDevice&#039;] = [json con toda la información del dispositivo];&lt;br /&gt;
$array_datos[&#039;jsonApp&#039;] = [json con toda la información de la app];&lt;br /&gt;
$array_datos[&#039;jsonUser&#039;] = [json con toda la información necesaria para el login];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;login&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;rescuePassword:&#039;&#039;&#039; Mediante ésta tarea restauraremos la contraseña de usuarios previamente registrados en nuestro sistema y que no esten dados de baja.&lt;br /&gt;
**&#039;&#039;&#039;app:&#039;&#039;&#039; Contendrá el hash de la aplicación dada de alta el panel de  en Mobeleader.&lt;br /&gt;
**&#039;&#039;&#039;country:&#039;&#039;&#039; Contendrá el país del dispositivo, necesario para comprobar si NickCenter esta activo para esa aplicación en ese país.&lt;br /&gt;
**&#039;&#039;&#039;language:&#039;&#039;&#039; Idioma del dispositivo, necesario para las traducciones que se retornarán.&lt;br /&gt;
**&#039;&#039;&#039;email:&#039;&#039;&#039; Email al que hay que restaurar la contraseña.&lt;br /&gt;
:*&#039;&#039;Ejemplo llamada directa:&#039;&#039; &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
https://nickcenter.mobeleader.com/webservice_nickcenter.php?data=task=rescuePassword&amp;amp;app=[hash aplicacion, ej: 1234567890ABCDEF]&amp;amp;country=[código país, ej: ES]&amp;amp;language=[código idioma, ej: es]&amp;amp;email=[email a recuperar, ej: prueba@prueba.com]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:*&#039;&#039;Ejemplo spsApiNickcenter:&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$array_datos = array();&lt;br /&gt;
$array_datos[&#039;app&#039;] = [hash aplicacion, ej: 1234567890ABCDEF];&lt;br /&gt;
$array_datos[&#039;country&#039;] = [código país, ej: ES];&lt;br /&gt;
$array_datos[&#039;language&#039;] = [código idioma, ej: es];&lt;br /&gt;
$array_datos[&#039;email&#039;] = [email a recuperar, ej: prueba@prueba.com];&lt;br /&gt;
&lt;br /&gt;
$conexionapi = new spsApiNickcenter([RSA KEY PRIVADA asociada a su aplicación]);&lt;br /&gt;
$json_datos_devueltos = $conexionapi-&amp;gt;getData(&#039;rescuePassword&#039;, $array_datos);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Retornos del Webservice===&lt;br /&gt;
Cada tarea tendrá su propio JSON de retorno:&lt;br /&gt;
*&#039;&#039;&#039;checkActive:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;active:&#039;&#039;&#039; Indicará si la aplicación esta activa o no.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;requestFields:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;general:&#039;&#039;&#039; En caso de no haber ningún error devolverá un array con todas las traducciones generales para el idioma seleccionado.&lt;br /&gt;
**&#039;&#039;&#039;fields:&#039;&#039;&#039; En caso de no haber ningún error devolverá un array con todos los campos y sus traducciones para el idioma seleccionado.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;register:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de no haber error indicará que el registro se ha completado.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;update:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de no haber error indicará que se ha actualizado correctamente.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;login:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de no haber error indicará que se ha logeado correctamente.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;rescuePassword:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;error:&#039;&#039;&#039; Indicará si ha habido un error o no.&lt;br /&gt;
**&#039;&#039;&#039;errorTxt:&#039;&#039;&#039; En caso de haber un error indicará a que se debe dicho error.&lt;br /&gt;
**&#039;&#039;&#039;okTxt:&#039;&#039;&#039; En caso de que no haya habido un error, se mandará una cadena en el idioma seleccionado, con las instrucciones para recuperar la contraseña.&lt;br /&gt;
&lt;br /&gt;
=Campos y Formatos=&lt;br /&gt;
*&#039;&#039;&#039;jsonDevice:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;ua:&#039;&#039;&#039; User Agent. Es la cadena de texto que identifica al usuario ante el servidor que se esta conectando mediante HTTP. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;lmt:&#039;&#039;&#039; Limit Ad Tracking. Indicará si esta permitido el acceso al ifa del dispositivo. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;0:&#039;&#039;&#039; Inactivo/Permitido.&lt;br /&gt;
***&#039;&#039;&#039;1:&#039;&#039;&#039; Activo/No permitido.&lt;br /&gt;
**&#039;&#039;&#039;devicetype:&#039;&#039;&#039; Tipo de dispositivo. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;4:&#039;&#039;&#039; Smartphone.&lt;br /&gt;
***&#039;&#039;&#039;5:&#039;&#039;&#039; Tablet/iPad.&lt;br /&gt;
**&#039;&#039;&#039;make:&#039;&#039;&#039; Marca del dispositivo. &#039;&#039;Ejemplo: bq&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;model:&#039;&#039;&#039; Modelo del dispositivo. &#039;&#039;Ejemplo: Aquaris E5&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;os:&#039;&#039;&#039; Sistema operativo. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;Android:&#039;&#039;&#039; Android.&lt;br /&gt;
***&#039;&#039;&#039;iOs:&#039;&#039;&#039; ios.&lt;br /&gt;
**&#039;&#039;&#039;osv:&#039;&#039;&#039; Version del sistema operativo. &#039;&#039;Ejemplo: 6.0.1&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;hwv:&#039;&#039;&#039; Version del hardware. &#039;&#039;Ejemplo: Aquaris_E5&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;h:&#039;&#039;&#039; Altura de pantalla. &#039;&#039;Ejemplo: 1920&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;w:&#039;&#039;&#039; Anchura de pantalla. &#039;&#039;Ejemplo: 1080&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;ppi:&#039;&#039;&#039; Pixeles por pulgada. &#039;&#039;Ejemplo: 480&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;pxratio:&#039;&#039;&#039; Densidad de pixeles. &#039;&#039;Ejemplo: 3&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;inches:&#039;&#039;&#039; Pulgadas. &#039;&#039;Ejemplo: 4.9&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;js:&#039;&#039;&#039; Soporte para JavaScript. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;0:&#039;&#039;&#039; No.&lt;br /&gt;
***&#039;&#039;&#039;1:&#039;&#039;&#039; Si.&lt;br /&gt;
**&#039;&#039;&#039;connectiontype:&#039;&#039;&#039; Tipo de conexión. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;0:&#039;&#039;&#039; Unknown.&lt;br /&gt;
***&#039;&#039;&#039;1:&#039;&#039;&#039; Ethernet.&lt;br /&gt;
***&#039;&#039;&#039;2:&#039;&#039;&#039; WiFI.&lt;br /&gt;
***&#039;&#039;&#039;3:&#039;&#039;&#039; Cellular Network - Unkown Generation.&lt;br /&gt;
***&#039;&#039;&#039;4:&#039;&#039;&#039; Cellular Network - 2G.&lt;br /&gt;
***&#039;&#039;&#039;5:&#039;&#039;&#039; Cellular Network - 3G.&lt;br /&gt;
***&#039;&#039;&#039;6:&#039;&#039;&#039; Cellular Network - 4G.&lt;br /&gt;
**&#039;&#039;&#039;ifa:&#039;&#039;&#039; Identificador para la publicidad.  &#039;&#039;&#039;Campo obligatorio, debe de estar o el ifa o el uuid.&#039;&#039;&#039;&lt;br /&gt;
***&#039;&#039;&#039;Android:&#039;&#039;&#039; Google AID (Google Advertising Identifier). &#039;&#039;Ejemplo: 38400000-8cf0-11bd-b23e-10b96e40000d&#039;&#039;.&lt;br /&gt;
***&#039;&#039;&#039;iOs:&#039;&#039;&#039; iOS IFA (Apple Identifier for Advertiser). &#039;&#039;Ejemplo: AAAAAAAAA-BBBB-CCCC-1111-222222220000&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;uuid:&#039;&#039;&#039; Identificador único universal. &#039;&#039;Ejemplo: 550e8400-e29b-41d4-a716-446655440000&#039;&#039;. &#039;&#039;&#039;Campo obligatorio, debe estar el uuid o el ifa.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;language:&#039;&#039;&#039; Idioma del dispositivo ( locale ). &#039;&#039;Ejemplo: es&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;country:&#039;&#039;&#039; Pais del dispositivo ( locale ). &#039;&#039;Ejemplo: ES&#039;&#039;. &#039;&#039;&#039;Campo obligatorio.&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;carrier:&#039;&#039;&#039; Operador Telefónico del dispositivo. &#039;&#039;Ejemplo: Movistar&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;carriercode:&#039;&#039;&#039; Código del operador telefónico. &#039;&#039;Ejemplo: 21407&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;carriercountry:&#039;&#039;&#039; País del operador telefónico. &#039;&#039;Ejemplo: ES&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;mac: ( Solo para Android )&#039;&#039;&#039; Mac del dispositivo. &#039;&#039;Ejemplo: 00:1B:44:11:3A:B7&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;imsi: ( Solo para Android )&#039;&#039;&#039; Identidad Internacional del Abonado Móvil. &#039;&#039;Ejemplo: 7160652952503786&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;did: ( Solo para Android )&#039;&#039;&#039; Identificador Direct inward dialing (DID).&lt;br /&gt;
**&#039;&#039;&#039;dpid: ( Solo para Android )&#039;&#039;&#039; Plataform device id (Android id).&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;jsonUser:&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;name:&#039;&#039;&#039; Nombre del usuario. Máximo 100 caracteres. &#039;&#039;Ejemplo: Kevin&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;surname:&#039;&#039;&#039; Apellido del usuario. Máximo 100 caracteres. &#039;&#039;Ejemplo: Lancharro&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;email:&#039;&#039;&#039; Email del usuario. Máximo 250 caracteres. &#039;&#039;Ejemplo: xxxx@xxx.com&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;password:&#039;&#039;&#039; Password del usuario. Deberá ir en md5(). Máximo 50 caracteres. &#039;&#039;Ejemplo: e10adc3949ba59abbe56e057f20f883e&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;nick:&#039;&#039;&#039; Nick del usuario. Máximo 50 caracteres. &#039;&#039;Ejemplo: CocoNilo&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;phone:&#039;&#039;&#039; Teléfono móvil del usuario. Máximo 15 caracteres. &#039;&#039;Ejemplo: 6XX XXX XXX&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;birthDate:&#039;&#039;&#039; Fecha de nacimiento del usuario. &#039;&#039;Ejemplo : 1992-01-12&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;gender:&#039;&#039;&#039; Sexo del usuario.&lt;br /&gt;
***&#039;&#039;&#039;Masculino:&#039;&#039;&#039; M.&lt;br /&gt;
***&#039;&#039;&#039;Femenino:&#039;&#039;&#039; F.&lt;br /&gt;
**&#039;&#039;&#039;allowsCommercials:&#039;&#039;&#039; Termino de privacidad con el que el usuario permite recibir comunicaciones comerciales.&lt;br /&gt;
***&#039;&#039;&#039;Permite:&#039;&#039;&#039; yes.&lt;br /&gt;
***&#039;&#039;&#039;Deniega:&#039;&#039;&#039; no.&lt;br /&gt;
**&#039;&#039;&#039;allowsCession:&#039;&#039;&#039; Termino de privacidad con el que el usuario permite que sus datos sean cedidos a terceras empresas relacionadas con el sector.&lt;br /&gt;
***&#039;&#039;&#039;Permite:&#039;&#039;&#039; yes.&lt;br /&gt;
***&#039;&#039;&#039;Deniega:&#039;&#039;&#039; no.&lt;br /&gt;
**Dependiendo de la tarea que estemos ejecutando los campos obligatorios variarán:&lt;br /&gt;
***&#039;&#039;&#039;register:&#039;&#039;&#039; Dependerá de los campos que hayamos configurado en el apartado de NickCenter en el panel de Mobeleader, como mínimo siempre será obligatorio el &#039;&#039;&#039;email&#039;&#039;&#039; y el &#039;&#039;&#039;password&#039;&#039;&#039;.&lt;br /&gt;
***&#039;&#039;&#039;update:&#039;&#039;&#039; El único campo obligatorio para las actualizaciones será el &#039;&#039;&#039;email&#039;&#039;&#039;, el resto de campos que se añadan serán los campos a actualizar.&lt;br /&gt;
***&#039;&#039;&#039;login:&#039;&#039;&#039; Dependerá de los campos que hayamos configurado en el apartado de NickCenter en el panel de Mobeleader, será obligatorio el &#039;&#039;&#039;email&#039;&#039;&#039; o el &#039;&#039;&#039;nick&#039;&#039;&#039;, junto con el &#039;&#039;&#039;password&#039;&#039;&#039;. En cualquiera de los casos el &#039;&#039;&#039;password&#039;&#039;&#039; siempre será obligatorio.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;jsonApp&#039;&#039;&#039;: Todos los campos son obligatorios&lt;br /&gt;
**&#039;&#039;&#039;name&#039;&#039;&#039;: Nombre de la aplicación dada de alta en el panel de Mobeleader. &#039;&#039;Ejemplo: Mobeleader&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;bundle&#039;&#039;&#039;: Nombre del paquete de la aplicación. &#039;&#039;Ejemplo: com.mobeleader&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;version&#039;&#039;&#039;: Version de la aplicación. &#039;&#039;Ejemplo: 1.0&#039;&#039;.&lt;br /&gt;
**&#039;&#039;&#039;versioncode&#039;&#039;&#039;: Código de versión de la aplicación. &#039;&#039;Ejemplo: 1&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=Códigos de Errores=&lt;br /&gt;
A continuación se expondrá una lista con los posibles errores que devolverá el Webservice en caso de que los datos no sean correctos:&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Errores generales:&#039;&#039;&#039; Estos errores se deben a un mal uso de la clase &#039;&#039;&#039;spsApiNickcenter&#039;&#039;&#039; y/o su cifrado, por lo que al no poder devolver la cadena cifrada con la RSA Key pública que le corresponde a la aplicación, se mandarán en texto plano sin cifrar y sin formato JSON.&lt;br /&gt;
**Error 000a - Failure decrypting&lt;br /&gt;
**Error 000b - Invalid Task&lt;br /&gt;
**Error 000c - Empty or invalid app hash&lt;br /&gt;
**Error 000d - Missing public RSA Key for app hash X&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea checkActive:&#039;&#039;&#039;&lt;br /&gt;
**Error 001a - Failure checking app active&lt;br /&gt;
**Error 001b - Failure checking app active&lt;br /&gt;
**Error 001c - Failure checking app active&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea rescuePassword:&#039;&#039;&#039;&lt;br /&gt;
**Error 002a - Failure on rescuePassword&lt;br /&gt;
**Error 002b - Failure on rescuePassword&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea requestFields:&#039;&#039;&#039;&lt;br /&gt;
**Error 003a - Failure on requestFields&lt;br /&gt;
**Error 003b - Failure on requestFields&lt;br /&gt;
**Error 003c - Failure on requestFields&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 004a - Failure validating user json, there are no fields configured in your application&lt;br /&gt;
**Error 004b - Failure validating user json, incorrect json format&lt;br /&gt;
**Error 004c - Failure validating user json&lt;br /&gt;
**Error 004d - X is missing or empty in user json.&lt;br /&gt;
**Error 004e - Invalid format for X field in user json.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 005a - Failure validating device json, incorrect json format&lt;br /&gt;
**Error 005b - Failure validating device json&lt;br /&gt;
**Error 005c - Field X is missing or empty in device json&lt;br /&gt;
**Error 005c - Field ifa/uuid are missing or empty in device json, one of them must be informed&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 006a - Failure validating app json, incorrect json format&lt;br /&gt;
**Error 006b - Field X is empty in app json&lt;br /&gt;
**Error 006c - The bundle X for os Y, does not exist&lt;br /&gt;
**Error 006c - Invalid X in app json, it must be numeric&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register/update/login:&#039;&#039;&#039;&lt;br /&gt;
**Error 007a - Failure generating library json, incorrect device json format&lt;br /&gt;
**Error 007b - Failure generating library json, wrong os in device json&lt;br /&gt;
**Error 007c - Failure generating library json, wrong os in device json&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea register:&#039;&#039;&#039;&lt;br /&gt;
**Error 008a - Failure registering&lt;br /&gt;
**Error 008b - Failure registering&lt;br /&gt;
**Error 008c - Email already exists&lt;br /&gt;
**Error 008c - Nick already exists&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea login:&#039;&#039;&#039;&lt;br /&gt;
**Error 009 - Failure on login&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Tarea update:&#039;&#039;&#039;&lt;br /&gt;
**Error 010 - Failure updating&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Sin tarea/Tarea erronea:&#039;&#039;&#039;&lt;br /&gt;
**Error 011a - Empty Task&lt;br /&gt;
**Error 011b - Invalid Task&lt;/div&gt;</summary>
		<author><name>Kevin</name></author>
	</entry>
	<entry>
		<id>https://wiki.mobeleader.com/index.php?title=P%C3%A1gina_principal&amp;diff=2172</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.mobeleader.com/index.php?title=P%C3%A1gina_principal&amp;diff=2172"/>
		<updated>2018-09-11T16:04:09Z</updated>

		<summary type="html">&lt;p&gt;Kevin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Librerias:index|Librerías]]&lt;br /&gt;
* [[Panel:Anuncios:Anunciantes|Anuncios para anunciantes]]&lt;br /&gt;
* Bases de Datos&lt;br /&gt;
** [[BBDDs:AltasYBajas|Webservice Altas y Bajas]]&lt;br /&gt;
**[[Guía eMailing y BBDD]]&lt;br /&gt;
**[[Email 360 - Amazon SES]]&lt;br /&gt;
* [[Panel:Desarrolladores:AppExchange|App Exchange]]&lt;br /&gt;
* [[Docu_wbs_nickcenter|Documentación Webservice NickCenter]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Ayuda de wikimedia ==&lt;br /&gt;
&lt;br /&gt;
Consulta la [https://meta.wikimedia.org/wiki/Help:Contents/es guía del usuario] para obtener información sobre el uso del software wiki.&lt;br /&gt;
&lt;br /&gt;
== Primeros pasos ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista de ajustes de configuración]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Manual:FAQ/es Preguntas frecuentes sobre MediaWiki]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correo de anuncios de publicación de MediaWiki]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Traducir MediaWiki en tu idioma]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Aprende cómo combatir el spam en tu wiki]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kevin</name></author>
	</entry>
	<entry>
		<id>https://wiki.mobeleader.com/index.php?title=P%C3%A1gina_principal&amp;diff=2171</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.mobeleader.com/index.php?title=P%C3%A1gina_principal&amp;diff=2171"/>
		<updated>2018-09-11T16:03:46Z</updated>

		<summary type="html">&lt;p&gt;Kevin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Librerias:index|Librerías]]&lt;br /&gt;
* [[Panel:Anuncios:Anunciantes|Anuncios para anunciantes]]&lt;br /&gt;
* Bases de Datos&lt;br /&gt;
** [[BBDDs:AltasYBajas|Webservice Altas y Bajas]]&lt;br /&gt;
**[[Guía eMailing y BBDD]]&lt;br /&gt;
**[[Email 360 - Amazon SES]]&lt;br /&gt;
* [[Panel:Desarrolladores:AppExchange|App Exchange]]&lt;br /&gt;
* [[Documentación_Webservice_NickCenter|Documentación Webservice NickCenter]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Ayuda de wikimedia ==&lt;br /&gt;
&lt;br /&gt;
Consulta la [https://meta.wikimedia.org/wiki/Help:Contents/es guía del usuario] para obtener información sobre el uso del software wiki.&lt;br /&gt;
&lt;br /&gt;
== Primeros pasos ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista de ajustes de configuración]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Manual:FAQ/es Preguntas frecuentes sobre MediaWiki]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correo de anuncios de publicación de MediaWiki]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Traducir MediaWiki en tu idioma]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Aprende cómo combatir el spam en tu wiki]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kevin</name></author>
	</entry>
	<entry>
		<id>https://wiki.mobeleader.com/index.php?title=P%C3%A1gina_principal&amp;diff=2170</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.mobeleader.com/index.php?title=P%C3%A1gina_principal&amp;diff=2170"/>
		<updated>2018-09-11T16:02:58Z</updated>

		<summary type="html">&lt;p&gt;Kevin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Librerias:index|Librerías]]&lt;br /&gt;
* [[Panel:Anuncios:Anunciantes|Anuncios para anunciantes]]&lt;br /&gt;
* Bases de Datos&lt;br /&gt;
** [[BBDDs:AltasYBajas|Webservice Altas y Bajas]]&lt;br /&gt;
**[[Guía eMailing y BBDD]]&lt;br /&gt;
**[[Email 360 - Amazon SES]]&lt;br /&gt;
* [[Panel:Desarrolladores:AppExchange|App Exchange]]&lt;br /&gt;
* [[Docu_wbs_nickcenter|Documentación Webservice NickCenter]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Ayuda de wikimedia ==&lt;br /&gt;
&lt;br /&gt;
Consulta la [https://meta.wikimedia.org/wiki/Help:Contents/es guía del usuario] para obtener información sobre el uso del software wiki.&lt;br /&gt;
&lt;br /&gt;
== Primeros pasos ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista de ajustes de configuración]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Manual:FAQ/es Preguntas frecuentes sobre MediaWiki]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correo de anuncios de publicación de MediaWiki]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Traducir MediaWiki en tu idioma]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Aprende cómo combatir el spam en tu wiki]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kevin</name></author>
	</entry>
</feed>