Accessibility Labels within the Dynamic Island

I'm trying to make my Live Activity (dynamic Island, lock screen) accessible for blind users as well. This does work, but not as I would expect it.

The problem is that VoiceOver reads all the texts multiple times (at least 2 times, sometimes even 3 or 4 times)

Even this simple example...

       ActivityConfiguration(for: LiveAttributes.self) { context in
             Text("aaa")
        } dynamicIsland: { context in
             DynamicIsland {
                DynamicIslandExpandedRegion(.leading) {
                  Text("bbb")
                }
                DynamicIslandExpandedRegion(.trailing) {
                  Text("ccc")
                }
                DynamicIslandExpandedRegion(.center) {
                   Text("ddd")
                }

            } compactLeading: {
                Text("www")
            } compactTrailing: {
                Text("yyy")
            } minimal: {
                Text("zzz")
            }

will read "www www yyy yyy" just by tapping the dynamic island (not expanded) when VoiceOver is enabled. I would expect that all text would be read only once ("www yyy").

Is this a bug? Can I prevent that the text is read multiple times? Anyone having similar problems and maybe a solution?

Replies

Some additional findings:

The problem seems to be related to updates to the Live Activity content. Which means as soon as the main App sends an updated status to the live activity, VoiceOver starts reading all content multiple times. If you only setup the content of the Live activity once, the content is only read once. The update interval itself seems to be irrelevant. So it doesn't matter if I send updated content to the widget every second or every minute. As soon it was updated, Voiceover is failing...