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
Gestione degli stili CSS con le regole @layer
Routing statico e PreRendering in una Blazor Web App
Generare velocemente pagine CRUD in Blazor con QuickGrid
Creare un'applicazione React e configurare Tailwind CSS
C# 12: Cosa c'è di nuovo e interessante
Creazione di plugin per Tailwind CSS: espandere le Funzionalità del Framework
Ordine e importanza per @layer in CSS
Gestire il colore CSS con HWB
Gestire i dati con Azure Cosmos DB Data Explorer
Gestire liste di tipi semplici con Entity Framework Core
Creare alias per tipi generici e tuple in C#
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
I più letti di oggi
- Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
- Eseguire script pre e post esecuzione di un workflow di GitHub
- Creare una libreria CSS universale: Cards
- Migliorare l'organizzazione delle risorse con Azure Policy