PhoneGap: inviare un SMS in Windows Phone

di , 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
http://www.aspitalia.com/focuson/1267/Speciale-Web-Mobile-Costruire-Applicazioni-ASP.NET-JQuery-Mobile.aspx

Commenti

Visualizza/aggiungi commenti

PhoneGap: inviare un SMS in Windows Phone (#60) 1010 2
| Condividi su: Twitter, Facebook, LinkedIn, Google+

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