¿Cómo enviar SMS mediante programación en el iPhone?
¿Alguien sabe si es posible y cómo enviar un SMS mediante programación desde iPhone
, con el SDK/Cocoa Touch oficial?
Restricciones
Si pudieras enviar un SMS dentro de un programa en el iPhone, podrás escribir juegos que envíen spam a las personas en segundo plano. Estoy seguro de que realmente quieres recibir spam de tus amigos: "¡Prueba este nuevo juego! ¡Roxxers mis boxxers, y los tuyos también lo serán! roxxersboxxers.com!!!! Si te registras ahora, obtendrás 3200 RB ¡¡puntos!!"
Apple tiene restricciones para las operaciones de marcación y SMS automatizadas (o incluso parcialmente automatizadas). (Imagínese si el juego marcara el 911 a una hora particular del día)
Lo mejor que puede hacer es configurar un servidor intermedio en Internet que utilice un servicio de envío de SMS en línea y enviar el SMS a través de esa ruta si necesita una automatización completa. (es decir, su programa en el iPhone envía un paquete UDP a su servidor, que envía el SMS real)
Actualización de iOS 4
iOS 4, sin embargo, ahora proporciona un archivo viewController
que puede importar a su aplicación. Usted completa previamente los campos de SMS y luego el usuario puede iniciar el envío de SMS dentro del controlador. A diferencia del uso del formato de URL "SMS:...", esto permite que su aplicación permanezca abierta y le permite completar los campos de destino y cuerpo . Incluso puedes especificar varios destinatarios.
Esto evita que las aplicaciones envíen SMS automatizados sin que el usuario lo sepa explícitamente. Aún no puedes enviar SMS completamente automatizados desde el iPhone, ya que requiere cierta interacción del usuario. Pero esto al menos le permite completar todo y evita cerrar la aplicación.
La clase MFMessageComposeViewController está bien documentada y los tutoriales muestran lo fácil que es implementarla.
Actualización de iOS 5
iOS 5 incluye mensajería para dispositivos iPod touch y iPad, por lo que, aunque todavía no lo he probado yo mismo, es posible que todos los dispositivos iOS puedan enviar SMS a través de MFMessageComposeViewController. Si este es el caso, entonces Apple está ejecutando un servidor SMS que envía mensajes en nombre de dispositivos que no tienen un módem celular.
Actualización de iOS 6
No hay cambios en esta clase.
Actualización de iOS 7
Ahora puede verificar si el medio de mensaje que está utilizando aceptará un asunto o archivos adjuntos, y qué tipo de archivos adjuntos aceptará. Puedes editar el asunto y agregar archivos adjuntos al mensaje, cuando el medio lo permita.
Actualización de iOS 8
No hay cambios en esta clase.
Actualización de iOS 9
No hay cambios en esta clase.
Actualización de iOS 10
No hay cambios en esta clase.
Actualización de iOS 11
No hay cambios significativos en esta clase.
Limitaciones de esta clase
Tenga en cuenta que esto no funcionará en teléfonos sin iOS 4 y no funcionará en iPod touch o iPad, excepto, quizás, con iOS 5. Debe detectar el dispositivo y las limitaciones de iOS antes de usar esto. controlador, o corre el riesgo de restringir su aplicación a iPhones 3G, 3GS y 4 recientemente actualizados.
Sin embargo, un servidor intermedio que envía SMS permitirá que todos y cada uno de estos dispositivos iOS envíen SMS siempre que tengan acceso a Internet, por lo que aún puede ser una mejor solución para muchas aplicaciones. Alternativamente, use ambos y recurra a un servicio de SMS en línea solo cuando el dispositivo no lo admita.
Aquí tienes un tutorial que hace exactamente lo que estás buscando: el MFMessageComposeViewController
.
http://blog.mugunthkumar.com/coding/iphone-tutorial-how-to-send-in-app-sms/
Esencialmente:
MFMessageComposeViewController *controller = [[[MFMessageComposeViewController alloc] init] autorelease];
if([MFMessageComposeViewController canSendText])
{
controller.body = @"SMS message here";
controller.recipients = [NSArray arrayWithObjects:@"1(234)567-8910", nil];
controller.messageComposeDelegate = self;
[self presentModalViewController:controller animated:YES];
}
Y un enlace a los documentos.
https://developer.apple.com/documentation/messageui/mfmessagecomposeviewcontroller
- Debes agregar MessageUI.framework a tu proyecto Xcode
- Incluya un
#import <MessageUI/MessageUI.h>
en su archivo de encabezado - Agregue estos delegados a su archivo de encabezado
MFMessageComposeViewControllerDelegate
&UINavigationControllerDelegate
- En su
IBAction
método declare una instancia deMFMessageComposeViewController
decirmessageInstance
- Para comprobar si su dispositivo puede enviar texto
[MFMessageComposeViewController canSendText]
en una condición if, devolverá Sí/No En la
if
condición haz esto:Primer conjunto de cuerpo para tu
messageInstance
como:messageInstance.body = @"Hello from Shah";
Luego decida los destinatarios del mensaje como:
messageInstance.recipients = [NSArray arrayWithObjects:@"12345678", @"87654321", nil];
Establezca un delegado para su instancia de mensaje como:
messageInstance.messageComposeDelegate = self;
En la última línea haz esto:
[self presentModalViewController:messageInstance animated:YES];
Puede utilizar una sms:[target phone number]
URL para abrir la aplicación de SMS, pero no hay indicaciones sobre cómo rellenar previamente el cuerpo de un SMS con texto.