{{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); }