MPNowPlayingInfoCenter nowPlayingInfo throttled

Hello,

I have been running into issues with setting nowPlayingInfo information, specifically updating information for CarPlay and the CPNowPlayingTemplate.

When I start playback for an item, I see lock screen information update as expected, along with the CarPlay now playing information.

However, the playing items are books with collections of tracks. When I select a new track(chapter) within the book, I set the MPMediaItemPropertyTitle to the new chapter name. This change is reflected correctly on the lock screen, but almost never appears correctly on the CarPlay CPNowPlayingTemplate. The previous chapter title remains set and never updates.

I see "Application exceeded audio metadata throttle limit." in the debug console fairly frequently.

From that a I figured that I need to minimize updates to the nowPlayingInfo dictionary. What I did:

  1. I store the metadata dictionary in a local dictionary and only set values in the main nowPlayingInfo dictionary when they are different from the current value.
  2. I kick off the nowPlayingInfo update via a task that initially sleeps for around 2 seconds (not a final value, just for my current testing). If a previous Task is active, it gets cancelled, so that only one update can happen within that time window.

Neither of these things have been sufficient. I can switch between different titles entirely and the information updates (including cover art). But when I switch chapters within a title, the MPMediaItemPropertyTitle continues to get dropped. I know the value is getting set, because it updates on the lock screen correctly.

In total, I have 12 keys I update for info, though with the above changes, usually 2-4 of them actually get updated with high frequency.

I am running out of ideas to satisfy the throttling thresholds to accurately display metadata. I could use some advice.

Thanks.

Hi, CarPlay does specifically throttle updates to the now playing item's title so as to prevent it changing too frequently. There should be a very generous allowance for regular usage, though. How often is your app sending updates to the title? In general, it's best to minimize title changes unless the playing item has changed.

I put some logging in to see exactly how frequent this key gets set. I just log with the current Date() for readability. Here is a set of events:

Updating chapter title - time: 2025-05-23 22:02:57 +0000
Updating chapter title - time: 2025-05-23 22:03:10 +0000
Updating chapter title - time: 2025-05-23 22:03:23 +0000

Only the first update actually appears on the CPNowPlayingTemplate. The lock screen and the now playing overview tile on the CarPlay home screen show the correct title.

Are these updates too frequent? I'm not sure how to handle this use case if that is true. Users can select a title and then decide to switch to a different chapter as a typical scenario.

MPNowPlayingInfoCenter nowPlayingInfo throttled
 
 
Q