Como programar o envio de SMS no iPhone?

Alguém sabe se é possível, e como, enviar de forma programática um **SMS*** do iPhone, com o SDK / Cocoa Touch oficial?

Restrições

Se você puder enviar um SMS dentro de um programa no iPhone, você'será capaz de escrever jogos que enviam spam para as pessoas em segundo plano. I'tenho certeza que você realmente quer ter spams dos seus amigos, "Experimente este novo jogo! Ele roxxers meus boxxers, e o seu também será! roxxersboxxers.com!!!! Se você se inscrever agora você'receberá 3.200 pontos RB!!"

A Apple tem restrições para operações automatizadas (ou mesmo parcialmente automatizadas) de SMS e discagem. (Imagine se o jogo, em vez disso, ligasse para o 911 a uma determinada hora do dia)

Sua melhor aposta é configurar um servidor intermediário na internet que utiliza um serviço de envio de SMS online e enviar o SMS através dessa rota se você precisar de automação completa. (ou seja, o seu programa no iPhone envia um pacote UDP para o seu servidor, que envia o verdadeiro SMS)

Atualização do iOS 4

O iOS 4, no entanto, agora fornece um viewController que você pode importar para a sua aplicação. Você prepopula os campos SMS, então o usuário pode iniciar o envio de SMS dentro do controlador. Ao contrário de utilizar o "SMS:..." formato url, isto permite que a sua aplicação permaneça aberta, e permite preencher tanto os campos a como os corpo. Você pode até mesmo especificar vários destinatários.

Isto impede que as aplicações enviem SMS automatizados sem que o utilizador tenha conhecimento explícito do mesmo. Ainda não é possível enviar SMS totalmente automatizados a partir do próprio iPhone, é necessária alguma interacção do utilizador. Mas isto pelo menos permite que você preencha tudo, e evita o fechamento da aplicação.

A classe MFMessageComposeViewController está bem documentada, e tutoriais mostram como é fácil de implementar.

Actualização iOS 5

O iOS 5 inclui mensagens para dispositivos iPod touch e iPad, por isso, embora eu próprio ainda não tenha testado isto, é possível que todos os dispositivos iOS sejam capazes de enviar SMS via MFMessageComposeViewController. Se este for o caso, então a Apple está executando um servidor de SMS que envia mensagens em nome de dispositivos que não't possuem um modem celular.

Actualização iOS 6

Não há mudanças nesta classe.

Atualização do iOS 7

Agora você pode verificar se o meio de mensagem que você está usando aceitará um assunto ou anexos, e que tipo de anexos ele aceitará. Você pode editar o assunto e adicionar anexos à mensagem, onde o meio o permitir.

Atualização do iOS 8

Não há mudanças nesta classe.

iOS 9 Actualização

Não há mudanças nesta classe.

iOS 10 Actualização

Não há mudanças nesta classe.

iOS 11 Actualização

Nenhuma mudança significativa para esta classe

Limitações a esta classe

Tenha em mente que este won't funciona em telefones sem iOS 4, e ele won't funciona no iPod touch ou no iPad, exceto, talvez, sob iOS 5. Você deve detectar o dispositivo e as limitações do iOS antes de usar este controlador, ou arriscar restringir seu aplicativo para 3G, 3GS e 4 iPhones recentemente atualizados.

No entanto, um servidor intermediário que envia SMS permitirá que todos e quaisquer destes dispositivos iOS enviem SMS desde que tenham acesso à Internet, pelo que pode ainda ser uma solução melhor para muitas aplicações. Alternativamente, use ambos, e só recorra a um serviço de SMS online quando o dispositivo não't o suportar.

Comentários (8)

Você pode utilizar um sms:[número de telefone de destino] URL para abrir o aplicativo SMS, mas não há indicações de como pré-preencher um corpo de SMS com texto.

Comentários (2)

Se você quiser, você pode utilizar a estrutura privada CoreTelephony que chamou a classe CTMessageCenter. Existem alguns métodos para enviar sms.

Comentários (2)