I'm assuming the data is read-only to the application and only changes on the server.
Here's how we do something similar:
The application passes up a "last_sync_date" to the server. If the last_sync_date is null, the server passes back all data.
The server always passes back a last_sync_date back to the application. The last_sync_date is in UTC server time. The application stores the last_sync_date.
Obviously, last_sync_date will be null the first time the app sends it, so the first time, it gets all data. From then on, it only gets new data.
Yes, a timestamp on each entry is used to determine which records are new/modified.
If need be, add a deleted column to each entry to "delete" them.