5.0.6
AetherEngine 5.0.6 adds the engine's first AVAudioSession interruption handling, from a Sodalite iOS device report. Purely behavioral; no API changes, every current caller is byte-identical.
Fixed
Playback resumes when a system audio-session interruption ends with shouldResume
Starting playback while another app's live-camera PiP (a record-priority session) was on screen paused AVPlayer about 10ms after every .playing: the foreign session re-claimed audio on each play(), the system delivered an interruption (type began, reason default), and the engine, having no interruption observer, neither logged nor handled it. The same gap meant playback stayed silent after phone calls and Siri instead of resuming like other media apps.
The system pause never goes through pause(), so the native host's durable playIntent (#122) survives the interruption and arms a resume. On interruption end the engine re-issues play() only when the system grants .shouldResume (a call ending, Siri dismissing). Sessions that end without it, such as a camera PiP closing, stay paused by design; the user resumes manually. An explicit pause() or stop disarms the resume, and in the background only audio backends may resume (video pipelines stay torn down on background per the existing wedge-safe policy).
Diagnostics
- AVAudioSession interruptions are logged with type, reason (iOS), options,
isOtherAudioPlaying, andsecondaryAudioShouldBeSilencedHint, so foreign-session conflicts are visible in device captures. The interruption-reason key is iOS-only and platform-guarded; tvOS logs the remaining fields.