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
Utilizzare WhenEach per processare i risultati di una lista di task
Introduzione ai web component HTML
Path addizionali per gli asset in ASP.NET Core MVC
Estrarre dati randomici da una lista di oggetti in C#
Testare l'invio dei messaggi con Event Hubs Data Explorer
Eliminare una project wiki di Azure DevOps
Generare velocemente pagine CRUD in Blazor con QuickGrid
Gestione dell'annidamento delle regole dei layer in CSS
Migliorare la sicurezza dei prompt con Azure AI Studio
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Aprire una finestra di dialogo per selezionare una directory in WPF e .NET 8
Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary