-(void)applicationWillTerminate: is not called for applications that support background execution

you must to archive when going to background for applications that support background execution.

From docs:
- (void)applicationWillTerminate:(UIApplication *)application

For applications that do not support background execution or are linked against iOS 3.x or earlier, this method is always called when the user quits the application. For applications that support background execution, this method is generally not called when the user quits the application because the application simply moves to the background in that case. However, this method may be called in situations where the application is running in the background (not suspended) and the system needs to terminate it for some reason.

After calling this method, the application also posts a UIApplicationWillTerminateNotification notification to give interested objects a chance to respond to the transition.