Supporto di più versioni di app mobili

7

Stiamo costruendo una suite di applicazioni mobili native per integrare la nostra applicazione esistente che al momento supporta solo un'interfaccia web per il server. L'applicazione può essere installata e ospitata dai client sulla propria infrastruttura o ospitata da noi stessi per i clienti che vogliono farne uso. I grandi clienti aziendali in genere scelgono di auto-ospitare mentre i clienti più piccoli scelgono la nostra opzione di hosting.

Dobbiamo supportare più versioni dell'applicazione. Non tutti i clienti vogliono aggiornare allo stesso tempo. Con l'interfaccia web, il supporto di più versioni non è difficile in quanto l'interfaccia web utilizza automaticamente la versione del server associata all'installazione del server. Con le applicazioni mobili in cui in genere è disponibile una sola app negli App Store, il supporto per i diversi livelli dell'API del server e le funzionalità nell'app mobile diventano una sfida. Sono interessato a sapere in che modo gli altri stanno risolvendo il problema. A mio parere hai opzioni come:

  1. Supporta più versioni dell'app nell'app store.
  2. Crea il supporto nelle applicazioni mobili per determinare automaticamente la versione API del server con cui sta parlando e indirizzare le chiamate agli endpoint dell'API del server pertinente. Introdurre anche l'uso di un qualche tipo di meccanismo di attivazione / disattivazione delle funzionalità per abilitare / disabilitare la funzionalità nell'applicazione mobile in base a ciò che è disponibile nelle diverse versioni del server.
  3. Non utilizzare l'app store per la distribuzione della tua app. Indirizza gli utenti a un URL specifico della versione che possono utilizzare per scaricare e installare l'app.

Opzione 1 - IMO creerà confusione per gli utenti dell'app. Inoltre, non c'è un bel percorso di migrazione da una versione dell'app alla successiva poiché si tratta in realtà di due applicazioni separate.

L'opzione 2 - d'altra parte può diventare rapidamente molto complessa se si tiene conto del fatto che la grafica dell'interfaccia utente ora deve sostanzialmente adattarsi a qualsiasi funzionalità disponibile nella versione dell'API del server che è parlando con. Inoltre, deve supportare le diverse versioni delle chiamate API del server che deve effettuare.

Opzione 3 - è possibile nel mondo Android quando esegui il caricamento laterale della tua app, ma per quanto ne so non è supportata in iOS e non sono sicuro di quale sarà l'immagine per Le app per dispositivi mobili Windows 10 stanno andando avanti.

Quali altri approcci ci sono per affrontare il problema? Per favore non discutere il fatto che stiamo scrivendo app native. Non è quello che sto chiedendo. Sto cercando indicazioni su come altre persone stanno affrontando il problema del supporto di più versioni della stessa app mobile nativa che parla con diverse versioni di un'API del server.

    
posta Carel 24.08.2015 - 06:43
fonte

3 risposte

2

Guarda cosa accadrà ...

L'opzione 1 genererà chiamate di supporto quando gli utenti installano la versione sbagliata. Ci sarà sempre un utente che non può né leggere né scegliere l'ultima versione pensando di conoscerlo meglio e avrà un numero elevato di versioni per eventuali correzioni del backport qualora fosse necessario.

L'opzione 2 aggiunge una certa complessità al codice dell'interfaccia utente, quanto dipende dalla capacità di adattamento dell'interfaccia utente. Ma ha la migliore esperienza utente.

L'opzione 3 non può avvenire su iOS (Android e Windows lo consentiranno in determinate configurazioni), il che significa comportamenti diversi per piattaforme diverse. Ciò rende le cose incoerenti che è una ricetta per i problemi.

Quindi, fuori di questi, rendere l'interfaccia utente reattiva e il targeting dell'endpoint giusto è di gran lunga il modo migliore per i tuoi utenti.

    
risposta data 28.08.2015 - 23:14
fonte
1

L'ho affrontato in un contesto leggermente diverso, ma quello che abbiamo scoperto è che se hai usato il nostro server pubblico ti abbiamo richiesto di eseguire l'aggiornamento. Se ti sei ospitato da solo, ti abbiamo permesso di rimanere in qualsiasi versione ti piacesse.

So che non è la risposta più amichevole del cliente, e potrebbe non essere un'opzione a seconda della situazione, ma è stata la posizione che abbiamo preso.

Una cosa da notare: abbiamo finito per dover fare un sacco di pezzi unici basati su vecchie linee di base che venivano ospitate autonomamente quando trovavamo problemi di sicurezza o bug significativi. Se si supportano più versioni, sia come abbiamo fatto, sia se si finisce per supportare pienamente più API, è necessario assicurarsi di avere una solida gestione della configurazione e il controllo del codice sorgente. Quando trovi bug, assicurati di dedicare il tempo necessario a recuperarli perché sono stati originati perché potresti doverli risolvere su un vecchio ramo.

    
risposta data 28.08.2015 - 21:41
fonte
0

Il versioning delle API va bene, ma questo richiederebbe più lavoro sul livello dell'interfaccia utente a) L'interfaccia utente deve sapere quale versione dell'API richiamare a seconda della configurazione (utilizzare un file di proprietà o un file di risorse sul dispositivo client)

b) Anche il server deve avere il supporto per più versioni delle API.

L'API del server si rivolge solo ai client mobili o ha anche altri client. Se si rivolge ad altri client, per il solo Mobile è possibile che si desideri ottenere un'API wrapper che in pratica chiama API del server a un'estremità con supporto per le versioni.

Fondamentalmente il controllo delle versioni è difficile all'API del server se ci sono altri client come le API pubbliche che sono servite dall'API del server, altrimenti è semplice.

I miei 2 centesimi.

    
risposta data 24.08.2015 - 20:01
fonte

Leggi altre domande sui tag