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
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Potenziare la ricerca su Cosmos DB con Full Text Search
Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
Utilizzare una qualunque lista per i parametri di tipo params in C#
Conoscere il rendering Server o WebAssembly a runtime in Blazor
Utilizzare un numero per gestire la concorrenza ottimistica con SQL Server ed Entity Framework
Il nuovo controllo Range di Blazor 9
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Gestione dell'annidamento delle regole dei layer in CSS
Aggiornare a .NET 9 su Azure App Service
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Migliorare l'organizzazione delle risorse con Azure Policy