You could use the standard location service, which would also require you to declare your app as requiring nonstop background execution in the plist. This would allow your app to execute indefinitely in the background at the cost of significant power resources. You could make web service calls or provide other ways to interact with the user.
The second, and recommended approach for non navigation apps, is to use the significant-change location service which only 'wakes' up your app into the background mode when there are significant changes to the user's location. In this case, you get a finite amount of time to complete code execution and it is NOT recommended to make web service calls as they might not complete in the finite time and cause the app to be terminated by the OS.
For more information, refer to the iOS Application Programming Guide
and also the Location Awareness Programming Guide