{{indexmenu_n>1}}
===== Control SMS=====
\\
En XOne utilizamos en nuestros diseños múltiples herramientas que nos brindan la posibilidad de añadir bondades y funcionalidades a nuestras apps. \\
\\
De esta forma se ha implementado también funciones que permiten habilitar y controlar el uso de SMS en las Apps XONe. Las funciones relacionados para el control de SMS son:
|<60%>|
^ Uso y Control de SMS by XONe ||
| smsService.send | Envío de SMS |
| smsService.sendRetry | Reintento de envío de SMS |
| smsService.requestPhoneNumber | Verificación número de teléfono |
| smsService.requestSmsVerification | Verificación de SMS |
| smsService.getAppSmsSignatureHashes| Para simular ser el servidor que enviará los SMS de verificación|
\\
La diferencia entre smsService.send y smsService.sendRetry radica en que en smsService.send se envía el sms y si falla pues no se intenta más, simplemente falló el envío y con el smsService.sendRetry se crea un servicio que mantiene el envío del sms hasta completar el éxito.
\\
**Ejemplos:**
const SMS_TEXT = "Su código de verificación XOne es: ";
function doSendSms() {
if (!self.MAP_PHONE_NUMBER) {
throw "Especifique un número de teléfono";
}
smsService.send(self.MAP_PHONE_NUMBER, self.MAP_TEXT);
}
function doSendSmsWithRetry() {
if (!self.MAP_PHONE_NUMBER) {
throw "Especifique un número de teléfono";
}
smsService.sendRetry(self.MAP_PHONE_NUMBER, self.MAP_TEXT);
}
/**
* Con esto simulamos ser el servidor que enviará los SMS de verificación
*/
function doSendTestVerificationSms() {
if (!self.MAP_PHONE_NUMBER) {
throw "Especifique un número de teléfono";
}
let sHashes = smsService.getAppSmsSignatureHashes();
smsService.send(self.MAP_PHONE_NUMBER, SMS_TEXT + "123456\n\n" + sHashes[0]);
}
/**
* Puede devolver nulo si el usuario no lo ha dado. Controlar en ese caso que el
* usuario lo introduzca.
*
* Esto es solo una pista, no hay ninguna garantía de que sea el número real del
* teléfono, luego no se debe usar en ningún proceso 100% automático, hay que
* mostrárselo al usuario para que lo dé por bueno.
*/
function doRequestPhoneNumber() {
self.MAP_PHONE_NUMBER = smsService.requestPhoneNumber();
ui.refresh("MAP_PHONE_NUMBER");
}
function doRequestSmsVerification() {
smsService.requestSmsVerification(onVerificationSmsReceived);
}
/**
* Los valores posibles de sStatus son: "success"/"timeout"/"error"
*/
function onVerificationSmsReceived(sSms, sStatus) {
if (sStatus != "success") {
ui.showToast("Error al recibir SMS de verificación: " + sStatus);
return;
}
let nIndex = sSms.indexOf(SMS_TEXT);
if (nIndex !== 0) {
ui.showToast("El SMS no tiene el formato correcto");
return;
}
let sVerificationCode = sSms.substring(SMS_TEXT.length, SMS_TEXT.length + 6);
// En la vida real, enviar esto a un servicio web y descartarlo
ui.showToast("El código de verificación es: " + sVerificationCode);
}