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.
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:
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!