the best way is to use apple's core location api
it provides many ways to track the users location based on accuracy required or battery life considerations
you can register with the notification center about location information.... the phone will periodically launch your app under special conditions (it won't launch the full thing) so that you can update your data and app variables accordingly
this way it won't matter if the app is open or not
the two things you need to look into are notification center and the core location api
here is a link to the api reference Core Location Framework Reference