400 messaggi dal 09 maggio 2012
Ciao ragazzi, ho una web app che si interfaccia con un web service ... vorrei farla girare anche su dispositivi android. Quale soluzione posso adottare in alternativa allo sviluppo di una app nativa? ho letto di sencha o adobe phonegap? avete mai avuto questa esigenza ? Grazie
11.867 messaggi dal 09 febbraio 2002
Contributi
Ciao Francesco,
devi semplicemente renderla una PWA. Ti crei un manifest e hai fatto.
Guarda questi contenuti:
https://www.html5italia.com/articoli/PWA/Progressive-Web-Apps.aspx
https://media.aspitalia.com/events/VS2019-PWA.media

Se non fai ulteriori interventi non potrà funzionare offline, ma almeno la potrai distribuire su Google Play. Infatti, Google mette a disposizione le "Trusted Web Activity" che sono il ponte di collegamento tra lo store Android e applicazioni PWA. Perciò dovrai realizzare un'app Android nativa in cui mettere una Trusted Web Activity ma questa è un'operazione molto semplice che è descritta passo passo qui:
https://developers.google.com/web/updates/2019/02/using-twa

Ti dovrai scaricare Android Studio per seguire i passi descritti in quell'articolo ma anche se non hai mai realizzato un'app Android, riuscirai comunque a portare a termine la cosa perché è davvero molto semplice e ben spiegato.
Quest'app nativa è solamente un rimando alla tua PWA, che si aprirà a tutto schermo sul dispositivo Android, proprio come se fosse un'app nativa.
Nessun contenuto della tua web app dovrà essere incluso nell'app nativa.

ciao,
Moreno

Enjoy learning and just keep making
400 messaggi dal 09 maggio 2012
Grazie Moreno, una PWA è proprio la conclusione a cui ero giunto dopo un pò di ricerche. Mi sono messo al lavoro. Una sola cosa non capisco ... negli esempi che ho seguito circa la realizzazione di una semplice PWA non capisco quale libreria o framework viene utilizzato nel file service-worker.js. Ecco lo spezzone di codice che ho trovato (credo per gestire la cache):

var cacheName = 'hello-pwa';
var filesToCache = [
    '/',
    '/default.aspx',
    '/css/style.css',
    '/js/main.js'
];

/* Start the service worker and cache all of the app's content */
self.addEventListener('install', function (e) {
    e.waitUntil(
        caches.open(cacheName).then(function (cache) {
            return cache.addAll(filesToCache);
        })
    );
});

/* Serve cached content when offline */
self.addEventListener('fetch', function (e) {
    e.respondWith(
        caches.match(e.request).then(function (response) {
            return response || fetch(e.request);
        })
    );
});


Si tratta di semplice Javascript?
11.867 messaggi dal 09 febbraio 2002
Contributi
Sì, è semplice javascript. La variabile self identifica l'istanza del service worker e come hai visto la puoi usare per gestire i cicli di vita del service worker.

Comunque, a meno che tu non voglia aggiungere funzionalità offline o aggiungere il supporto alle notifiche push, creare un service worker non è necessario. Puoi giusto creare il file manifest.json in cui metti il nome dell'app, i colori e le icone.

Poi, ai fini dell'app android, dovrai pubblicare un file .well-known/assetlinks.json. La guida che ti ho linkato ti spiegherà come fare.

ciao,
Moreno
Modificato da BrightSoul il 04 settembre 2019 10:32 -

Enjoy learning and just keep making
400 messaggi dal 09 maggio 2012
Grazie Moreno,

una cosa non riesco a completare però. Ho la necessità di attivare/disattivare la keyboard su mobile ... solita necessità di utilizzare un input con una lettore barcode. Ho provato con javascript ad impostare readOnly, onKeyPress etc ... e funziona, la tastiera virtuale non si attiva ma credo che in questo modo non riuscirò nemmeno ad inserire i dati nel campo input mediante lettore codice a barre.

Esiste una libreria o un modo che posso integrare per disattivare la tastiera virtuale?
11.867 messaggi dal 09 febbraio 2002
Contributi
Ciao Francesco,
per evitare che la tastiera venga mostrata, prova ad impostare l'attributo inputmode="none" sull'elemento <input>.
<input type="text" inputmode="none">

Qui la documentazione.
https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode

Però penso che l'applicazione risulterebbe più usabile se non ci fosse alcun elemento input. Infatti, questo approccio richiede che l'utente dia il focus al campo input prima di leggere il barcode. Se tu invece catturi i tasti digitati a livello del document, l'utente potrà leggere il barcode a prescindere da cosa è visualizzato sullo schermo.

Ecco un esempio di come catturare i tasti digitati:
https://jsfiddle.net/4jbwepot/

La funzione che trovi nell'esempio verrà eseguita per qualsiasi tasto venga premuto sulla tastiera. Comincerà a catturare il barcode solo se viene digitato un carattere speciale di inizio (l'asterisco, in questo esempio). A quel punto cattuerà ogni successivo carattere digitato finché non incontra un carattere speciale di fine (ancora una volta l'asterisco).

In questo modo puoi catturare i barcode a prescindere da quale elemento abbia il focus.
L'esempio fa affidamento sul fatto che tu possa impostare un carattere di prefisso e suffisso, come è possibile fare in molti barcode reader come per esempio in questo:
https://wiki.wws5.com/doku.php?id=faq:programming_a_symbol_ls_2208_barcode_scanner

Io ho scelto l'asterisco per semplificare le cose ma tu dovrai scegliere caratteri che l'utente non digiterà mai, tipo un tasto funzione. Esistono non solo gli F1...F12 che si trovano sulla tastiera ma anche F13...F24.

ciao,
Moreno

Enjoy learning and just keep making
400 messaggi dal 09 maggio 2012
Funziona ;) come al solito sei sempre di grande aiuto, Grazie :D interessante anche il suggerimento di utilizzare prefisso e suffisso. Ultima cosa: sto realizzando una PWA come consigliato ma, nel caso volessi integrare un framework o una libreria in grado di interagire con i dispositivi mobile (specie Android), cosa posso utilizzare? La mia web app per ora la sto realizzando con ASP.NET web form. Ho letto di angular, xamarin, react, ext ... però non ho ancora approfondito per bene ... puoi linkarmi una guida o consigliarmi una strada da seguire?

Grazie ancora

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.