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 mobilehttps://www.aspitalia.com/focuson/1267/Speciale-Web-Mobile-Costruire-Applicazioni-ASP.NET-JQuery-Mobile.aspx
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Generare token per autenicarsi sulle API di GitHub
Gestire i null nelle reactive form tipizzate di Angular
Load test di ASP.NET Core con k6
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Gestire errori funzionali tramite exception in ASP.NET Core Web API
.NET Conference Italia 2023
Sfruttare al massimo i topic space di Event Grid MQTT
Code scanning e advanced security con Azure DevOps
Implementare l'infinite scroll con QuickGrid in Blazor Server
Utilizzare il trigger SQL con le Azure Function
Estrarre dati randomici da una lista di oggetti in C#
Filtrare e rimuovere gli elementi dalla cache del browser tramite le API JavaScript