PhoneGap: inviare un SMS in Windows Phone

di Marco Leoncini, in Windows Phone, PhoneGap,

PhoneGap dispone di un insieme di API che ci permettono di utilizzare alcune funzioni del device in modo agnostico rispetto alla piattaforma sulla quale verranno poi utilizzati: in aree come la riproduzione di suoni, o la geo localizzazione, è possibile scrivere il codice una unica volta, e poi portarlo su diverse piattaforme senza nessuna modifica.

Ci sono però funzioni che sono specifiche della piattaforma: in casi come l'invio di un SMS e in tutti quei casi dove non ci sono API native, è necessario estendere PhoneGap attraverso dei plug-in.

I plug-in sono classi che estendono il tipo BaseCommand e permettono di integrare il runtime di PhoneGap. Queste particolari classi devono essere collocate nella cartella plugins all'interno del progetto.

namespace WP7GapClassLib.PhoneGap.Commands
{
  public class SendSMS : BaseCommand
  {
    public class sendSMSargs
    {
      [DataMember]
      public string toRecipients;
      [DataMember]
      public string body;
    }

    public void send(string args)
    {
      sendSMSargs myargs = JSON.JsonHelper.Deserialize<sendSMSargs>(args); 
      SmsComposeTask smsTask = new SmsComposeTask(); 
      smsTask.To = myargs.toRecipients; 
      smsTask.Body = myargs.body; 
      smsTask.Show();
      this.DispatchCommandResult();
    }
  }
}

La classe SendSMS è estremamente semplice ed il codice è noto a ogni sviluppatore Windows Phone: poche righe di codice per invocare il task che si occupa di inviare un SMS. L'unica "particolarità" è la deserializzatone JSON, necessaria per recuperare le informazioni passate al metodo.

Creato il plug-in, dobbiamo aggiungere il JavaScript per invocarlo, istruendo PhoneGap della sua esistenza.

function SMSComposer() {
  this.resultCallback = null;
}

SMSComposer.prototype.showSMSComposer = function(toRecipients, body) 
{   
  var args = {};        
  if(toRecipients)                
    args.toRecipients = toRecipients;        
  if(body)        
    args.body = body;        
  PhoneGap.exec(null, null, "SendSMS", "send", args);
}     

PhoneGap.addConstructor(function () {
  if (!window.plugins) {
    window.plugins = {};
  }    
  window.plugins.smsComposer = new SMSComposer();
});

Il punto di contatto tra il mondo C# e JavaScript è nella funzione PhoneGap.exec. Il primo e il secondo parametro rappresentano, rispettivamente, la funzione di callaback da invocare in caso di successo o di errore. I successivi due parametri rappresentano, invece, la classe e il metodo da invocare. Infine, l'ultimo parametro è l'oggetto passato al metodo.

Fatto questo, non ci resta che invocare la funzione javascript aggiungendo la seguente chiamata:

window.plugins.smsComposer.showSMSComposer('111222333', 'ciao marco');

Il Task viene invocato ed è possibile inviare l'sms, come visibile dall'immagine seguente.

Link e riferimenti utili

Il nostro speciale sullo sviluppo web mobile
https://www.aspitalia.com/focuson/1267/Speciale-Web-Mobile-Costruire-Applicazioni-ASP.NET-JQuery-Mobile.aspx

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi