Server-API:et har numera stöd för att betygsätta aktiviteter, så då borde man kunna göra precis det från appen också :-)
Funktioner att implementera på "aktivitetsnivå":
Ange betyg
Ta bort betyg
Se eget betyg
Se medelbetyg och antal betygsättare
Offline-stöd:
Server-API:et visar bara användarens aktuella betyg. Om appen, "vid synkning", ska avgöra vilket betyg (det i appen eller det på servern) som är det mest aktuella (senaste ändrade) så kan appen göra så här:
Varje betyg i appen har en statusflagga med dessa möjliga värden: NO_CHANGE, CHANGED, REMOVED.
NO_CHANGE: Så vitt appen vet så är betyget i appen samma som på servern. Om servern returnerar ett annat betyg så har användaren ändrat betyget via en annan klient sedan appen synkades senast. I detta fall ska betyget i appen uppdateras till det som servern returnerat. Om servern returnerar samma betyg som appen redan känner till så händer inget. Statusen NO_CHANGE behålls oavsettt vad servern returnerar.
CHANGED: Användaren har ändrat betyget i appen sedan data senast synkades. Om servern returnerar ett annat betyg än det som finns i appen så ska appens betyg skickas till servern. I detta fall är det möjligt att användaren ändrat betyg med två olika klienter men i detta (relativt osannolika) fall så är det appens betyg som gäller, och som skickas till servern. Om servern returnerar samma betyg som appen redan har så betyder det att användaren har bytt till samma betyg mha. både appen och en annan klient sedan appen senast synkades. I detta (relativt osannolika) fall så kan appen optimera genom att inte skicka någon uppdatering till servern (den har ju redan samma betyg som appen). Statusen byts till NO_CHANGE, oavsett om nytt betyg skickats till servern eller ej.
REMOVED: Användaren har tagit bort sitt betyg i appen sedan data senast synkades. Om servern returnerar samma betyg som appen känner till så ska betyget tas bort på servern. Om servern returnerar ett annat betyg så har användaren ändrat betyg med en annan klient och även tagit bort betyget i appen. Appen bestämmer i detta fall och betyget tas bort från servern. Om servern inte returnerar ett betyg för aktiviteten så har användaren tagit bort betyget med en annan klient (också) och då kan vi optimera bort raderingsanropet till servern. Oavsett vilket så tas betyget (raden i databasen) bort även i appen.
Server-API:et har numera stöd för att betygsätta aktiviteter, så då borde man kunna göra precis det från appen också :-)
Funktioner att implementera på "aktivitetsnivå":
Offline-stöd: Server-API:et visar bara användarens aktuella betyg. Om appen, "vid synkning", ska avgöra vilket betyg (det i appen eller det på servern) som är det mest aktuella (senaste ändrade) så kan appen göra så här: