title: MPNowPlayingInfoCenter info doesn't work via USB accessory
body: <p>I have an app that uses <code>AVPlayer</code> (actually <code>AVQueuePlayer</code>) for playing audio. It sets <code>MPNowPlayingInfoCenter</code> info, uses <code>MPRemoteCommandCenter</code> for managing remote commands, and allows background audio. All of this functionality works properly through control center and the lock screen. When I bring my phone into my car it also works properly with my car's bluetooth interface. However, if I plug my phone directly into my car's stereo via the iPhone 6 lightning port, it's broken badly. It actually does play the audio, but...</p>
  
  <p>(1) None of the now playing info gets displayed on my car's dashboard
  (2) My car's stereo throws up a bunch of connection errors whenever I try to do anything.</p>
  
  <p>Other apps on my phone don't have this problem, so I don't think it's the fault of my stereo. I'm using official Apple lightning cables, so that's not related either.</p>
  
  <p>I tried my app with AirPlay through my Apple TV and it was similarly wonky. I noticed that <code>AVPlayer</code> has an important property called <code>allowsExternalPlayback</code>, which needs to be set to <code>NO</code> if you're only playing audio. After setting that property to <code>NO</code>, AirPlay through the Apple TV works properly. I assumed this was the same problem that was effecting my car, but that does not appear to be the case. Even with <code>allowsExternalPlayback</code> set to <code>NO</code>, playing audio through the USB connection on my car is still screwed up.</p>
  
  <p>It seems like it's something wrong with how either (a) the <code>AVAudioSession</code>, or (b) the <code>AVPlayer</code> is configured.</p>
  
  <p>My audio player configuration is pretty simple...</p>
  
  <pre><code>self.audioQueue = [AVQueuePlayer queuePlayerWithItems:nil];
  self.audioQueue.allowsExternalPlayback = NO;
  
  [self.audioQueue addObserver:self forKeyPath:@"status" options:0 context:kAVPlayerStatusContext];
  [self.audioQueue addObserver:self forKeyPath:@"rate" options:0 context:kAVPlayerRateContext];
  [self.audioQueue addObserver:self forKeyPath:@"error" options:0 context:kAVPlayerErrorContext];
  [self.audioQueue addObserver:self forKeyPath:@"currentItem" options:(NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew) context:kAVPlayerCurrentItemContext];
  </code></pre>
  
  <p>... as in my audio session...</p>
  
  <pre><code>AVAudioSession *audioSession = [AVAudioSession sharedInstance];
  
  NSError *error;
  [audioSession setActive:YES error:&amp;error];
  // Error handling code
  
  [audioSession setCategory:AVAudioSessionCategoryPlayback error:&amp;error];
  // Error handling code
  
  // Audio session notifications
  NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
  [defaultCenter addObserver:self selector:@selector(audioSessionInterruptionNotification:) name:AVAudioSessionInterruptionNotification object:audioSession];
  [defaultCenter addObserver:self selector:@selector(audioSessionRouteChangeNotification:) name:AVAudioSessionRouteChangeNotification object:audioSession];
  [defaultCenter addObserver:self selector:@selector(audioSessionMediaServicesWereResetNotification:) name:AVAudioSessionMediaServicesWereResetNotification object:audioSession];
  </code></pre>
  
  <p>Are there other properties that need to be set to handle this use case? What can I do to debug what's going on here? This one's got me.</p>