¿Cómo enviar SMS mediante programación en el iPhone?

Resuelto asked hace 54 años • 0 respuestas

¿Alguien sabe si es posible y cómo enviar un SMS mediante programación desde iPhone, con el SDK/Cocoa Touch oficial?

 avatar Jan 01 '70 08:01
Aceptado

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 viewControllerque 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.

Adam Davis avatar Sep 12 '2008 15:09 Adam Davis

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

Daniel Amitay avatar Jul 24 '2010 19:07 Daniel Amitay
  1. Debes agregar MessageUI.framework a tu proyecto Xcode
  2. Incluya un #import <MessageUI/MessageUI.h>en su archivo de encabezado
  3. Agregue estos delegados a su archivo de encabezado MFMessageComposeViewControllerDelegate &UINavigationControllerDelegate
  4. En su IBActionmétodo declare una instancia de MFMessageComposeViewControllerdecirmessageInstance
  5. Para comprobar si su dispositivo puede enviar texto [MFMessageComposeViewController canSendText]en una condición if, devolverá Sí/No
  6. En la ifcondición haz esto:

    1. Primer conjunto de cuerpo para tu messageInstancecomo:

      messageInstance.body = @"Hello from Shah";
      
    2. Luego decida los destinatarios del mensaje como:

      messageInstance.recipients = [NSArray arrayWithObjects:@"12345678", @"87654321",         nil];
      
    3. Establezca un delegado para su instancia de mensaje como:

      messageInstance.messageComposeDelegate = self;
      
    4. En la última línea haz esto:

      [self presentModalViewController:messageInstance animated:YES];
      
Najeebullah Shah avatar Dec 07 '2011 16:12 Najeebullah Shah

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.

millenomi avatar Sep 12 '2008 14:09 millenomi