According to What's New in iOS 7 , what you are looking for is described as:
Applications that regularly update their content by accessing the server can register with the system and run periodically for extraction in the background. To register, enter the UIBackgroundModes key with the value fetch in your Info.plist application. Then when your application is running, call the setMinimumBackgroundFetchInterval: method to determine how often it receives update messages. In conclusion, you should also implement application:performFetchWithCompletionHandler: in your application, delegate.
Inside, application:performFetchWithCompletionHandler: you have 30 seconds to complete what you need to do before you call completeHandler. He definitely advised completing your survey as quickly as possible and ending the callHandler as soon as you are done. If you do not name it within 30 seconds, your application will be paused from the background fetch. Or, if you start taking a lot of time for each sample, your application will get fewer opportunities for background captures in the future.
Alternatively, if you want to execute additional code when receiving a push notification:
Applications that use push notifications to notify the user that new content is available for receiving content in the background. To support this mode, enter the UIBackgroundModes key using the remote-notification value in your Info.plist applications. You must also implement the application:didReceiveRemoteNotification:fetchCompletionHandler: method in your application delet.
Mr. T source share