Envio de SMS em Swift (iOS/macOS): API da biblioteca MessageUI

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Envio de SMS em Swift (iOS/macOS): API da biblioteca MessageUI



No desenvolvimento mobile moderno, a capacidade de enviar SMS diretamente do aplicativo continua sendo uma funcionalidade requisitada. Nas plataformas Apple (iOS e macOS), essa tarefa é resolvida pela biblioteca integrada MessageUI.framework. Ela fornece uma interface conveniente para criar e enviar mensagens de texto, sem exigir a conexão de serviços de terceiros. Neste artigo, vamos detalhar como usar a API MessageUI para enviar SMS em Swift, abordar exemplos de código, tratamento de erros e particularidades de funcionamento em diferentes dispositivos.



O que é o MessageUI.framework?

MessageUI é um framework de sistema da Apple que permite que aplicativos se integrem ao aplicativo nativo "Mensagens". A classe principal para trabalhar com SMS é MFMessageComposeViewController. Ela fornece um controlador de UI pronto para compor e enviar mensagens. É importante observar que esta API funciona apenas em dispositivos reais com um chip SIM ativo (para iOS) ou em Mac com iMessage configurado (macOS 10.15+). No simulador, a funcionalidade não está disponível.



Preparação do projeto

Para usar o MessageUI, é necessário:

  • Conectar o framework MessageUI ao projeto (geralmente ele já está na biblioteca padrão).
  • Adicionar a importação no arquivo onde o envio será chamado: import MessageUI.
  • Verificar se o dispositivo pode enviar SMS — checar através de MFMessageComposeViewController.canSendText().


Exemplo básico de envio de SMS

Vamos considerar um exemplo simples: criar o controlador, definir o destinatário e o texto, e então exibi-lo.



import UIKitimport MessageUI

class ViewController: UIViewController, MFMessageComposeViewControllerDelegate {

@IBAction func sendSMSTapped(_ sender: UIButton) { // Verifica se o dispositivo pode enviar SMS guard MFMessageComposeViewController.canSendText() else { print("O dispositivo não suporta envio de SMS") return }

// Cria uma instância do controlador let messageVC = MFMessageComposeViewController() messageVC.messageComposeDelegate = self

// Define o destinatário messageVC.recipients = ["+79991234567"]

// Define o texto da mensagem messageVC.body = "Olá! Esta é uma mensagem de teste do meu aplicativo."

// Exibe o controlador present(messageVC, animated: true, completion: nil) }

// MARK: - MFMessageComposeViewControllerDelegate func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) { // Fecha o controlador após envio/cancelamento dismiss(animated: true, completion: nil)

// Processa o resultado switch result { case .sent: print("Mensagem enviada com sucesso") case .cancelled: print("Envio cancelado pelo usuário") case .failed: print("Erro ao enviar a mensagem") @unknown default: print("Resultado desconhecido") } }}


Neste código, nós:

  • Verificamos a possibilidade de envio com canSendText().
  • Criamos um MFMessageComposeViewController e configuramos os destinatários e o corpo da mensagem.
  • Definimos o delegado (messageComposeDelegate) para processar o resultado.
  • No método do delegado, tratamos quatro possíveis resultados: enviado, cancelado, erro, status desconhecido.


Funcionalidades adicionais

O MessageUI suporta não apenas texto simples, mas também anexos:



// Adicionando anexo (por exemplo, uma imagem)if let imageData = UIImage(named: "photo")?.pngData() {    messageVC.addAttachmentD                    

Recommendations