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 delle scrollbar dinamiche in HTML e CSS
Documentare i servizi REST con Swagger e OpenAPI con .NET 9
Utilizzare WhenEach per processare i risultati di una lista di task
Esporre un server MCP esistente con Azure API Management
Arricchire l'interfaccia di .NET Aspire
Gestire pubblicazione Kubernetes tramite .NET Aspire
Supportare la sessione affinity di Azure App Service con Application Gateway
Le cron expression di un workflow di GitHub
Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
Eseguire query in contemporanea con EF
Usare la libreria PredicateBuilder per eseguire query tramite Entity Framework che usano or su più campi
Importare un servizio esterno in .NET Aspire


