Envio de SMS: Java ME x iPhone OS
Escrito por Karin em 01/09/09 19:25
Olá pessoal,
estou aqui para contar para vocês a minha última saga com o desenvolvimento de aplicativos em Java ME e iPhone OS. Dessa vez parecia ser uma funcionalidade boba, mas que me rendeu algumas horinhas e trabalho jogado fora. :(
A funcionalidade era envio de SMS. Primeiro desenvolvi em Java ME. Não foi difícil pesquisar e encontrar o algoritmo que fizesse isso. O mais chato foi ter a certeza de que este algoritmo realmente funcionava para os mais diversos celulares.
Para que vocês não tenham o mesmo tabalho que tive, segue o algoritmo de envio de email em Java ME:
try {
MessageConnection connection = (MessageConnection)Connector.open("sms://99999999");
TextMessage sms = (TextMessage)connection.newMessage(MessageConnection.TEXT_MESSAGE);
sms.setPayloadText("Olá");
connection.send(sms);
connection.close();
}
catch (SecurityException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
Terminado o desenvolvimento em Java ME, fui em busca do algoritmo que fizesse o mesmo em iPhone. Porém, como para mim era certo de que acharia a solução, fiz logo um formulário de envio de SMS. Mas não estava certa. Depois de inúmeras pesquisas, inclusive em fóruns da própria Apple, a única coisa que descobri foi que os aplicativos para iPhone que desejam enviar SMS, só farão isso fora do mesmo, ou seja, a única coisa que fazemos é chamar o aplicativo de mensagens que o iPhone possui. E para piorar, nem a mensagem pode ser preenchida pelo nosso aplicativo, somente o número. Então, percebi que de nada adiantou meu esforço para fazer o formulário de envio de SMS. Dessa vez a Apple me decepcionou. :(
Segue abaixo, como chamar o aplicativo de mensagens do iPhone:
NSString *stringURL = @"sms:99999999";
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];
Ah, e não se esqueçam que depois de enviada sua mensagem SMS, o seu aplicativo não volta, ou seja, o usuário precisa novamente acessá-lo.
É, dessa vez os créditos estão todos com o Java ME! Espero sinceramente que a Apple libere o envio de SMS de dentro de aplicativos desenvolvidos por nós.
Valeu :)
Ué.. mas como escrevemos uma mensagem que é definida no aplicativo? Não tem como chamar o aplicativo de SMS com um texto pré-definido?
Bem ruim essa do iPhone... decepcionou.
Realmente o iPhone OS nos limita muito mais do que o JME. Vocês precisam dar mais uma estudada, hein? :)
A resposta em http://stackoverflow.com/questions/10848/how-to-programmatically-send-sms-on-the-iphone/59200#59200 é bem razoável.
Mesmo em Java ME, pode ser uma boa idéia chamar um aplicação na rede que envie o SMS, como é o suporte a serviços web no iPhone? Em Java ME, sei que funciona bem mas já está bem desatualizado.
Fernando, eu não concordo com o ponto de vista levantado neste site, pois não é pelo fato de poder mandar SMS background, ou seja, sem o usuário saber, que a Apple impede de você poder fazer esse envio dentro da sua aap. Para mim, ela faz isso para ter mais controle das ações que são realizadas pelas apps.
Posso dizer que as aplicações em Java ME sempre pedem autorização do usuário tanto para uso da Internet do aparelho (coisa que o iPhone não faz!) quanto para o envio de SMS. Então não dá para realizar estas ações sem o consentimento do usuário.
Espero que a Apple reveja isso e libere o envio de SMS dentro das apps.
Eu não acho que seja razoável limitar o uso de SMS também, qualquer que seja a razão.
Como é o suporte a serviços web no iPhone?
O suporte a Web Services no iPhone SDK, pelo menos quando começamos nos nossos primeiros projetos, não existia. Claro que estou falando dos padrões de ws como SOAP. A solução que usamos foi usar REST fazendo chamadas HTTP normais e tratando a resposta (XML ou JSON). Não sei se hoje existem boas bibliotecas para se comunicar com WS, mas o modelo que implementamos tem atendido bem às nossas necessidades.
Obrigado pelo retorno.