Albert Renshaw
Albert Renshaw

Reputation: 17902

Keep track of time since last attempt of ______

I have a game where users can do a certain activity once per hour. How can I make sure it's been an hour since the last time they attempted something without them just changing their devices current time in settings?

Also, if I wanted to prevent the user from just deleting the app and re-installing it so they could constantly keep trying without having to wait to full hour is there any way I can store data on the device even after an app delete or would that have to be a server thing?

If I don't have a server can anyone think of a clever way to do this via Free in-app purchases or something?

Upvotes: 1

Views: 154

Answers (2)

Sergey Kalinichenko
Sergey Kalinichenko

Reputation: 726809

The only way to persist data in a way that survives app reinstalls is to save it to the keychain. This works, because keychain data may be shared across multiple applications; the rest of your application's data is removed on uninstall.

If you need a reliable way to tell the current time, the device must be connected to the internet. In this case you would be able to check the current time using one of the time services through the NTP.

Upvotes: 4

Eric
Eric

Reputation: 6995

That sounds like exactly the sort of task you would need a server for.

When the user wants to perform this limited action, have them ask the server for permission. You can log the user's ID and request time, decide if they can execute the action, then return a small success/failure message. Works if they change their clock, works if they log in from a different device, works if they wipe the device data.

Upvotes: 2

Related Questions