15 Ago, 2010 16:20

Enviando SMS de dentro de um aplicativo iPhone

Simples! O primeiro passo é baixar o Xcode do iOS 4. Com ele você vai reparar que não é mais possível compilar aplicações para o iOS 3, apenas para o 4.0 ou para o 3.2 (iPad). Para que dispositivos com sistemas operacionais anteriores possam rodar um aplicativo compilado em 4.0 é preciso primeiro alterar o Deployment target do seu projeto para a mínima versão que você quer que o app execute.

Xcode

Ao fazer isso, a Apple recomenda que você verifique se as funções que irá utilizar (especialmente as novas APIs) estão presentes no dispositivo. Para fazer isso no nosso exemplo do SMS, é só fazer o seguinte código:

Class messageClass = (NSClassFromString(@"MFMessageComposeViewController"));

// Verifica se a classe existe no sistema operacional
if (messageClass != nil) {      

    // Checa se o dispositivo pode enviar SMS
    if ([messageClass canSendText]) {
        [self displaySMSComposerSheet];
    }
    else {  
        feedbackMsg.hidden = NO;
        feedbackMsg.text = @"Esse dispositivo não pode enviar SMS.";

    }
}
else {
    feedbackMsg.hidden = NO;
    feedbackMsg.text = @"Esse dispositivo não pode enviar SMS.";
}

Reparem que para evitar um erro de execução em sistemas operacionais a classe MFMailComposeViewController não foi chamada diretamente. Depois disso, também precisamos verificar o caso do dispositivo possuir ou não suporte a SMS.

Para enfim enviar o SMS, temos que usar o MFMessageComposeViewController, que é a tela onde escrevemos o SMS que nem no app original do iPhone, ou seja, a Apple não permite que o aplicativo envie um SMS sem a confirmação do usuário. A única vantagem é que não precisamos mais sair do app e podemos colocar uma mensagem e vários números de telefone na tela:

-(void)displaySMSComposerSheet 
{
    MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init];
    picker.messageComposeDelegate = self;

    picker.body = @"Teste de SMS do iPhone";
    picker.recipients = [NSArray arrayWithObjects:@"12345678", @"87654321", nil];
    picker.messageComposeDelegate = self;

    [self presentModalViewController:picker animated:YES];
    [picker release];
}

Essa é a imagem da tela de envio de SMS:

In App SMS

Em breve vamos implementar essa funcionalidade no Cine Mobits, bem como nas versões Java e Android onde ela já existe. Até a próxima!

Ao navegar neste site, você consente o uso de cookies nossos e de terceiros, que coletam informações anônimas e são essenciais para melhorar sua experiência em nosso site.