Sto lavorando a un servizio che consente agli organizzatori di eventi di vendere biglietti per i loro eventi online (molto simile a Eventbrite per essere onesti).
I clienti stampano i biglietti da soli (ogni biglietto ha un codice a barre) e li presentano all'evento, dove vengono scansionati utilizzando un'app mobile. L'app mobile comunica con il server e controlla il codice del ticket e alla persona è consentito l'accesso all'evento.
Ora abbiamo appena iniziato a sviluppare l'app per dispositivi mobili e siamo già in un vicolo cieco. Normalmente, per mitigare gli effetti dei potenziali tempi di inattività dei server e anche per evitare di fare un sacco di richieste quando un sacco di persone partecipa a un evento, specialmente quando tali richieste potrebbero essere inviate tramite una connessione 3G traballante, vorrei seguire questo approccio:
- L'app per dispositivi mobili esegue periodicamente il polling del server e carica i codici ticket generati dall'ultima richiesta
- L'app controlla il suo database locale dei codici ticket quando un cliente presenta un ticket. Se il ticket non viene trovato, avvia una estrazione dati.
- Inoltre, invia periodicamente i codici ticket "registrati", in modo che possano essere aggiornati anche sul server.
Questo approccio probabilmente funzionerebbe bene, se non fosse per la possibilità che un evento potesse avere più punti di ingresso, rendendo così questa soluzione vulnerabile agli imbrogli da parte di qualcuno che stampa due copie dello stesso biglietto e li usa per due persone separate in differenti inserimenti. Lo scopriremo solo quando entrambe le istanze dell'app mobile inviano i dati al server.
Una soluzione alternativa sarebbe che le applicazioni comunichino anche tra loro, ma questo solleva altri problemi:
- Il Bluetooth non è fattibile, a causa dell'intervallo limitato.
- 3G può essere instabile, proprio come sopra.
- La disponibilità di WiFi non può essere garantita a tutti gli eventi.
Mi piacerebbe davvero trovare una soluzione a questo che non implichi dover inviare una richiesta per ogni codice ticket, perché ora posso vederli, centinaia di persone allineate, la linea che va da nessuna parte perché il server è inattivo , o la connessione Internet non funziona, e posso sentire il mio telefono squillare il sabato sera, e io davvero, davvero, davvero non lo voglio.
Ci scusiamo per la lunga storia. Qualche idea?