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 la versione generica di EntityTypeConfiguration in Entity Framework Core
Evitare il flickering dei componenti nel prerender di Blazor 8
Utilizzare l'operatore GroupBy come ultima istruzione di una query LINQ in Entity Framework
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Mascherare l'output di un valore all'interno dei log di un workflow di GitHub
Filtrare e rimuovere gli elementi dalla cache del browser tramite le API JavaScript
Creare un'applicazione React e configurare Tailwind CSS
Miglioramenti nelle performance di Angular 16
Miglioramenti nell'accessibilità con Angular CDK
Sfruttare al massimo i topic space di Event Grid MQTT
Utilizzare la libreria Benchmark.NET per misurare le performance
Sfruttare lo streaming di una chiamata Http da Blazor
I più letti di oggi
- Utilizzare Docker Compose con Azure App Service
- Utilizzare QuickGrid di Blazor con Entity Framework
- Modernizzare le applicazioni WPF e Windows Forms con Blazor
- ASP 3 per esempi
- annunciato #netstandard 2.1. .NET Core lo supporterà a partire da #netcore3, così come le prossime versione di #xamarin, #mono e #unity.il supporto per #netfx 4.8, invece, non ci sarà. https://aspit.co/bq2
- Steel Style CheckBox per Silverlight 4.0