Envio de SMS - Short Message Service com o Windows Mobile 5.0

Por Renato Haddad, Microsoft Most Valuable Professional .NET Mobile Devices. Palestrante, autor de diversos livros e ministra treinamentos de imersão total sobre a tecnologia .NET no Brasil e Canadá.

Tecnologias Utilizadas

  • VS.NET 2005

  • Windows Mobile 5.0

Vou iniciar este artigo com a seguinte pergunta: "Você já precisou enviar SMS a partir da sua aplicação Mobile?" Quantas vezes já ouvi está pergunta e a resposta sempre era: sim, precisei, mas não tinha como. É exatamente esta funcionalidade que vou abordar neste artigo, o envio de SMS via programação nativa com o Windows Mobile 5.0 com apenas 3 linhas.

O melhor de tudo é que você não precisará fechar nenhum tipo de acordo com a sua operadora de celular, nenhum modelo de negócio, absolutamente nada, exceto o sinal de GSM para enviar a mensagem.

O Windows Mobile 5.0 é um conjunto de APIs do Windows CE 5.0 o qual está disponível no VS.NET 2005 para você criar qualquer tipo de projeto para dispositivos móveis, por exemplo Pocket PC ou Smartphone.

Projeto

Abra o Visual Studio .NET 2005 e crie um novo projeto chamado MSDNSendSMS. Note que selecionei em Project types: Visual Basic / Smart Device / Windows Mobile 5.0 Pocket PC.

Dica: caso esta opção do Windows Mobile 5.0 Pocket PC não apareca na sua janela, é preciso fazer download e instalar o SDK disponível em www.microsoft.com/windowsmobile.

Cc518050.EnviodeSMS_01(pt-br,MSDN.10).png
Figura 1 - novo projeto

Clique no botão OK para criar o projeto. Exiba a Toolbox e crie uma interface conforme a seguinte figura, o qual contém dois textBoxes para o usuário digitar o número de destino e o corpo da mensagem. Note que o número do telefone é +14250010001. Este número é o número do emulador, caso você queira simular o envio de uma mensagem durante uma apresentação ou protótipo. Portanto, guarde este número, grude no teto do seu quarto e quando for dormir, memorize-o :.

Nesta interface, adicione duas opções no menu, uma para Sair da aplicação e outra para Enviar o SMS.

Cc518050.EnviodeSMS_02(pt-br,MSDN.10).png
Figura 2 - Interface da aplicação

O próximo passo é adicionar uma referência à classe de envio de SMS. Selecione o menu Project / Add Reference, selecione Microsoft.WindowsMobile.PocketOutlook. Com esta classe você consegue manipular o Pocket Outlook do Pocket/Smartphone com funcionalidades de criar contatos, enviar e-mail, anotações, manipular a agenda e quando você sincronizar com o Microsoft Outlook do seu desktop via Active Sync 4 ou superior, todos os dados ficarão atualizados e sincronizados. O objeto utilizado é o POOM - Pocket Outlook Object Model, o qual abordarei isso em outro artigo.

Cc518050.EnviodeSMS_03(pt-br,MSDN.10).png
Figura 3 - Referência à classe do POOM

Clique no botão OK para adicionar a referência ao projeto. O próximo passo é inserirmos os códigos, portanto, dê um duplo clique na opção Sair e digite o seguinte código para fechar a aplicação.

Private Sub MenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem1.Click
    Application.Exit()
End Sub

Retorne na interface e dê um duplo clique na opção Enviar (menu criado no Pocket). Digite na primeira linha da janela de códigos a referência à classe, sendo:

Imports Microsoft.WindowsMobile.PocketOutlook

Veja o código para enviar a mensagem:

Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
    Dim objetoMsg As New SmsMessage(TextBox1.Text.Trim, TextBox2.Text.Trim())
    objetoMsg.Send()
End Sub

Note neste código que é criado o objeto objetoMsg o qual contém dois argumentos: o telefone e o texto da mensagem que está digitado nos dois textBoxes da interface. Eu não disse no início do artigo que precisamos de apenas 3 linhas?

Caso queira confirmar a entrega você pode adicionar a seguinte linha (RequestDeliveryReport) no código:

Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
    Dim objetoMsg As New SmsMessage(TextBox1.Text.Trim, TextBox2.Text.Trim())
    objetoMsg.RequestDeliveryReport = True
    objetoMsg.Send()
End Sub

No entanto, como temos uma interface, você pode capturar os dados digitados, formatá-los, se necessário e usar as variáveis nos argumentos do objeto. O que você pode fazer é verificar se o corpo da mensagem contém mais que X caracteres, pois nem todos os dispositivos permitem mais de 240 caracteres.

Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
    Dim vTelefone As String = TextBox1.Text.Trim()
    Dim vMensagem As String = TextBox2.Text.Trim()
    Dim objetoMsg As New SmsMessage(vTelefone, vMensagem)
    objetoMsg.RequestDeliveryReport = True
    objetoMsg.Send()
    MessageBox.Show("Mensagem enviada", "MSDN SMS")
End Sub

Salve o projeto.

Cc518050.EnviodeSMS_04(pt-br,MSDN.10).png
Figura 4 - Salvar o projeto

Para compiler o projeto, selecione o menu Build / BuildMSDNSendSMS. Para executar, pressione F5. Selecione um emulador que tenha funcionalidades de telefonia, sendo o Windows Mobile 5.0 Pocket PC Phone Emulator. Caso você tenha o seu device conectado na máquina via USB e o Active Sync 4 ou superior rodando adequadamente, você pode selecionar Windows Mobile 5.0 Pocket PC Device para instalar o projeto direto no device.

Cc518050.EnviodeSMS_05(pt-br,MSDN.10).png
Figura 5 - Emulador do PhoneEdition

Clique em Deploy e aguarde o emulador carregar o programa. Digite uma mensagem e clique no Enviar.

Cc518050.EnviodeSMS_06(pt-br,MSDN.10).png
Figura 6 - Aplicação rodando

Após o envio será exibida uma janela do Messagebox.Show e após alguns segundos você visualizará o recebimento da mensagem no Pocket. É aberto um ícone de notificação avisando a chegada de uma mensagem.

Cc518050.EnviodeSMS_07(pt-br,MSDN.10).png
Figura 7 - Mensagem enviada e recebida

Você pode clicar na opção View para visualizar a mensagem.

Cc518050.EnviodeSMS_08(pt-br,MSDN.10).png
Figura 8 - Leitura da mensagem

Caso você feche a aplicação, todas as mensagens não lidas serão exibidas na lista de Text Messages no desktop do Pocket.

Cc518050.EnviodeSMS_09(pt-br,MSDN.10).png
Figura 9 - Lista de mensagens

Conclusão

O envio de SMS direto via aplicações agora não é nenhum mistério e totalmente aplicável à todas as aplicações que necessitarem desta funcionalidade. É importante ressaltar que se você tiver uma fonte de dados, seja um XML ou um banco de dados contendo os telefones de clientes, gerentes, etc, basta criar um looping para enviar SMS de acordo uma certa condição da aplicação.

Explore o Windows Mobile 5.0, pois temos toneladas de novas funcionalidades a serem implementadas nas aplicações, por exemplo, GPS, telefonia, SQL Mobile Edition.

Bons estudos e lembre-se: No Stress, think Windows Mobile 5.0.

Renato Haddad (rehaddad@msn.com) é MVP Mobile Devices, palestrante em diversos eventos de .NET no Brasil e no Canadá. Renato é autor de diversos livros e treinamentos em CD multimídia de ASP.NET (1.1 e 2.0), SQL Reporting Services, Visual Studio .NET 2003/2005 e Aplicações Móveis para celulares e Pocket PC, tanto no Brasil como em outros países da América Latina.