If your app becomes active again and is still in the background you should reset the badge count in -applicationDidBecomeActive: as well:
- (void)applicationDidBecomeActive:(UIApplication *)application
{
application.applicationIconBadgeNumber = 0;
}
If your app is still running in the background -application:didFinishLaunchingWithOptions: won’t be called.