Advies offline database mobiele app

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • egonolieux
  • Registratie: Mei 2009
  • Laatst online: 06-01-2024

egonolieux

Professionele prutser

Topicstarter
Ik ben van plan een web applicatie uit te breiden met een mobiele app die offline beschikbaar moet zijn. De web app maakt momenteel gebruik van een REST API die op zijn beurt MySQL achter de schermen gebruikt. Het grootste deel van de gegevens kan vanuit de MySQL database naar de mobiele database gekopieerd worden (master-slave). Een klein deel van de gegevens moet zowel op de website als mobiel door de gebruikers aangemaakt en bewerkt kunnen worden en moet dus gesynchroniseerd worden.

Bij het uitwerken van deze mobiele app heb ik een aantal vragen:

1.Welke embedded database lijkt het best geschikt voor mijn vereisten? SQLite ziet er het meest voor de hand liggend uit en hier heb ik reeds ervaring mee. Met Realm of PouchDB heb ik geen ervaring.

2. Wat de synchronisatie van de mobiele database naar de REST API/MySQL betreft; wat lijkt hier de beste strategie? Omdat ik graag de simpliciteit van master-slave behoud, dacht ik aan een soort van offline queue op mobiel die de updates naar de REST API stuurt. Indien de timestamp van de update groter is dan die binnen de MySQL database, dan wordt deze toegepast.

3. Als gegevens veranderen in de MySQL database, dan moeten deze ook op de mobiele clients aangepast worden. Elke table/resource van een created/modified timestamp voorzien, lijkt me een mogelijke oplossing, zodat de mobiele app naar aanpassingen kan pollen vanaf een bepaald tijdstip.

4. Verdergaand op 3, lijkt het me niet aan te raden de offline database met alle gegevens te embedden bij de installatie van de app. Als er nieuwe data beschikbaar is op de REST API, betekent dit dat de mobiele app telkens na installatie gesynchroniseerd moet worden. Na verloop van tijd kan dit er voor zorgen dat de hoeveelheid data die gesynchroniseerd moet worden te groot wordt, en dat het beter is een nieuwe versie van de app met de nieuwe database beschikbaar te maken.

Ik zou liever enkel de app updaten, als er effectief code veranderd is, en de meest recente database gewoonweg na installatie downloaden. Is het mogelijk om tijdens het installatieproces van de app (iOS/Android) deze database on-the-fly te downloaden? Ik wil niet dat de gebruiker na de installatie van de app zonder database komt te zitten.

Alle reacties


Acties:
  • 0 Henk 'm!

  • alex3305
  • Registratie: Januari 2004
  • Laatst online: 19:20
Misschien nog even een andere hoek; waarom geen Progressive Web App als je toch al een volledige webapplicatie hebt? Er is ook een offline component beschikbaar zodat je applicatie ook offline kan werken. Verder lijkt een PWA heel erg op een app, maar heb je ook wat extra functionaliteit ten opzichte van een website. En je bespaard eventueel het e.e.a. op ontwikkeltijd.

Acties:
  • +1 Henk 'm!

  • egonolieux
  • Registratie: Mei 2009
  • Laatst online: 06-01-2024

egonolieux

Professionele prutser

Topicstarter
alex3305 schreef op zondag 14 april 2019 @ 18:12:
Misschien nog even een andere hoek; waarom geen Progressive Web App als je toch al een volledige webapplicatie hebt? Er is ook een offline component beschikbaar zodat je applicatie ook offline kan werken. Verder lijkt een PWA heel erg op een app, maar heb je ook wat extra functionaliteit ten opzichte van een website. En je bespaard eventueel het e.e.a. op ontwikkeltijd.
De hoofdzakelijke reden dat dit niet mogelijk is, is omdat de mobiele app een aantal extra features moet aanbieden die de web app niet heeft, zoals cameragerelateerde zaken. Momenteel is browser support daar niet voldoende voor. Een andere reden is omdat progressive web apps (nog) niet in de appstore/playstore aangeboden kunnen worden.

Acties:
  • 0 Henk 'm!

  • alex3305
  • Registratie: Januari 2004
  • Laatst online: 19:20
Dat klopt niet helemaal overigens. Camera support is al zeker een jaar aanwezig. Ook mag je PWA's wel in stores aanbieden. Ook zou je eventueel wrappers zoals Cordova kunnen gebruiken.

Acties:
  • 0 Henk 'm!

  • egonolieux
  • Registratie: Mei 2009
  • Laatst online: 06-01-2024

egonolieux

Professionele prutser

Topicstarter
alex3305 schreef op zondag 14 april 2019 @ 18:21:
Dat klopt niet helemaal overigens. Camera support is al zeker een jaar aanwezig. Ook mag je PWA's wel in stores aanbieden. Ook zou je eventueel wrappers zoals Cordova kunnen gebruiken.
Camera is inderdaad mogelijk, maar de browser support is nog niet groot genoeg om deze feature consistent aan te bieden: https://caniuse.com/#search=capture.

Dat web apps reeds in app stores toegelaten worden wist ik niet! Dit ziet er alvast veelbelovend uit. Maar ik denk dat we het momenteel nog even veilig gaan spelen tot deze technologieen iets meer volwassen zijn.

Acties:
  • +1 Henk 'm!

  • ThomasG
  • Registratie: Juni 2006
  • Laatst online: 23-09 14:00
egonolieux schreef op zondag 14 april 2019 @ 18:31:
[...]


Camera is inderdaad mogelijk, maar de browser support is nog niet groot genoeg om deze feature consistent aan te bieden: https://caniuse.com/#search=capture.

Dat web apps reeds in app stores toegelaten worden wist ik niet! Dit ziet er alvast veelbelovend uit. Maar ik denk dat we het momenteel nog even veilig gaan spelen tot deze technologieen iets meer volwassen zijn.
Als het om "camera gerelateerde zaken" gaat bedoel je waarschijnlijk: HTML Media Capture (en dus niet het eerste result van jouw zoekopdracht), en dat wordt door elke relevante mobiele webbrowser ondersteund.

Edit: daarnaast zijn er JavaScript libraries zoals qr-code-scanner die de camera real-time kunnen uitlezen, en daar gegevens uit kunnen halen. In het github voorbeeld realtime een qr-code uitlezen via de camera in een webpagina.

[ Voor 15% gewijzigd door ThomasG op 14-04-2019 18:41 ]


Acties:
  • 0 Henk 'm!

  • egonolieux
  • Registratie: Mei 2009
  • Laatst online: 06-01-2024

egonolieux

Professionele prutser

Topicstarter
ThomasG schreef op zondag 14 april 2019 @ 18:38:
[...]
Als het om "camera gerelateerde zaken" gaat bedoel je waarschijnlijk: HTML Media Capture (en dus niet het eerste result van jouw zoekopdracht), en dat wordt door elke relevante mobiele webbrowser ondersteund.

Edit: daarnaast zijn er JavaScript libraries zoals qr-code-scanner die de camera real-time kunnen uitlezen, en daar gegevens uit kunnen halen. In het github voorbeeld realtime een qr-code uitlezen via de camera in een webpagina.
Ik heb inderdaad niet goed gekeken. In ieder geval ben ik zelf ook een voorstander van progressive web apps, hoewel ik nog veel opzoekwerk hieromtrent te doen heb.

Ik ken de technische details niet exact, maar volgens mijn teamgenoten is het momenteel binnen onze context eenvoudiger een native app te bouwen dan een progressive web app (machine learning zaken oa).

Maar zelfs als dat niet het geval is, zou ik eigenlijk toch graag antwoord hebben op bovenstaande vragen, al is het maar om meer kennis van zaken op te doen.

Acties:
  • +1 Henk 'm!

  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 21:28
Waarom is het makkelijker een nieuwe app te bouwen als er veel data is? Of je de data nu in de app stopt of los download, het blijft evenveel data. Ik zou de app zonder data aanbieden en bij de eerst keer openen laten inloggen en data syncen, maar hangt af van je case. Hangt ook af van wat voor data offline moet zijn, een offline cache is natuurlijk makkelijker als lokaal en online een DB bijhouden en die syncen. Dan kan je bijvoorbeeld data lokaal opslaan via https://github.com/localForage/localForage , wat verschillende implementaties heeft met 1 interface. Maar dat is key/value, dus eerder gewoon een json object opslaan, IPV echte relaties enzo. Dus hangt af van wat voor data je weer hebt. Firebase heeft ook (betaalde) diensten om makkelijker te syncen (geen ervaring mee)
Pagina: 1