Hace unas semanas tuve un problema con el envío de SMS en mi
aplicación Android llamada OkeyPay
, cuya funcionalidad
principal es enviar mensajes de texto a los números registrados. El
problema surgió cuando los mensajes largos no se enviaban correctamente,
especialmente aquellos que superaban los 160 caracteres o contenían
tildes o caracteres especiales.
En este artículo te cuento cuál fue la causa y cómo lo solucioné de forma sencilla.
Problema principal: Cuando los SMS pasaban de 160 caracteres o tenían tildes, simplemente no llegaban o se cortaban.
Problema:
Problema real: El siguiente mensaje de Yape no se enviaba completo:
Victor A. Coritan N. te envió un pago por S/ 222. El cód. de seguridad es: 541
Solución:
✅ Después de aplicar la solución, ahora sí se envía todo el mensaje, incluso cuando tiene tildes y pasa los límites normales de SMS.
En esta imagen puedes ver el codigo que funciona para mensajes cortos y mensajes largos.
Codigo:
linea 10
: El codigo es funcional para enviar mensajes cortos que tu controlas.
linea 19
: Esto codigo corta primero en partes correctas y con el siguiente metodo lo envia en todos los fragmentos como un solo mensaje grande.
Notas:
- Longitud máxima de un SMS clásico: 160 caracteres si es solo ASCII.
- Si usamos caracteres (acentos, emojis, etc), puede ser menos (como 70 caracteres)
Método | ¿Divide? | ¿Envía múltiples SMS? |
---|---|---|
sendTextMessage() | ❌ No | ❌ No |
sendMultipartTextMessage() + divideMessage() | ✅ Sí | ✅ Sí |
Conclusión:
✅ Siempre usa `sendMultipartTextMessage()`` si: - El mensaje puede superar 70 o 160 caracteres. - Puede tener tildes, emojis, o caracteres raros.
Si tu has tenido problemas con envio de SMS puedes escribir en los
comentarios.
Buena :), sería genial que puedas subir el código del android studio Para que sea como base para futuras proyectos :D
ResponderEliminarEl proyecto es interno no es un skeleto diria que falta mejorar. Pero deje lo importante el script para el envio de SMS
EliminarEste comentario ha sido eliminado por un administrador del blog.
ResponderEliminar