Skip to content

Remove the background audio keep-alive (App Review 2.5.4) - #23

Merged
mattonik merged 1 commit into
mainfrom
claude/remove-background-audio
Oct 14, 2026
Merged

mattonik merged 1 commit into
mainfrom
claude/remove-background-audio

Conversation

@mattonik

Copy link
Copy Markdown
Owner

Stacked on #22 (which brings back build 5). Merge #22 first; GitHub then retargets this PR to main.

App Review rejected 1.0 (build 4) under guideline 2.5.4: the app declares the audio background mode, but the reviewer heard nothing in the background. That's how the keep-alive worked: BackgroundKeepAlive played silence through AVAudioEngine so iPadOS wouldn't suspend the app while a GeForce NOW game was queued, loading or streaming. Keeping it would put every later review at risk, so it goes.

Changes

  • Remove UIBackgroundModes: [audio] from project.yml.
  • Delete BackgroundKeepAlive.swift and BackgroundSessionKeeper.swift, and the ⋯ ▸ Settings… ▸ "Keep game running in background" picker and its UserDefaults setting.
  • Leaving the app now always calls pauseAllMediaPlayback(), which is what the setting's Off did.
  • StreamPhase moves to ServiceProfile.swift, and BrowserViewController.sessionPhase reads it directly. Switching services still asks first while a game runs, and the health checks still read the phase.
  • New docs/background-keep-alive.md: why it existed, how it worked, what testing showed, and options for bringing it back in a form App Review accepts (audible-only, Picture in Picture, faster resume). The README now points there.

Effect for users

Switching away from a running GeForce NOW game can now end the session after a few seconds, since iPadOS suspends the app. It hasn't yet been measured on a device how long GeForce NOW holds a session after that.

Tests

tools/test.sh: 100 Swift tests pass, no Swift warnings; polyfill and health-check tests pass. The generated Info.plist has no UIBackgroundModes.

🤖 Generated with Claude Code

App Review rejected 1.0 (build 4) because the app declares the audio
background mode but nothing audible plays in the background. That is how
the keep-alive worked: it played silence through AVAudioEngine so iPadOS
wouldn't suspend the app during a game's queue or stream.

- Remove UIBackgroundModes: [audio], BackgroundKeepAlive and
  BackgroundSessionKeeper, and the "Keep game running in background"
  setting.
- Leaving the app now always pauses media, as the setting's Off did.
- StreamPhase moves to ServiceProfile.swift; switching services still asks
  first when a game is running, and the health checks still read the phase.
- docs/background-keep-alive.md records why it existed, how it worked and
  options for bringing it back in an allowed form; README updated.

Build number stays 5, from the restore PR this is stacked on.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Base automatically changed from claude/restore-pr21-reverts to main October 14, 2026 11:55
@mattonik
mattonik merged commit fdbd7aa into main Oct 14, 2026
2 checks passed
@mattonik
mattonik deleted the claude/remove-background-audio branch October 14, 2026 11:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants