Skip to content

iOS local downloads fail for BBC episodes using signed CDN redirects #1035

Closed

Description

@zerotraceme

Environment

Problem

BBC episodes stream successfully in the iOS app when connected through a UK VPN, but “Download locally” consistently ends with “Local download failed.”

Tested with both an older Chopin episode and recent episodes. Other podcasts download normally.

Findings

BBC’s permanent media URL redirects to a temporary Akamai CDN URL. That URL appears network/geolocation-sensitive:

  • A ranged request from the network that obtained the URL returned 206 audio/mpeg.
  • The same signed URL requested from another network returned 403.
  • The iOS app’s streaming works through the UK VPN, but its local downloader still fails.

In mobile_download_service.dart, resolveUrl() follows redirects first and then passes the final signed URL to flutter_downloader. On iOS, that hands the URL to a separate background URLSession, which may use a different network context from the one that obtained the signed URL.

Could the iOS downloader pass the permanent all-HTTPS BBC selector URL directly to URLSession and let that session follow the redirects itself, instead of pre-resolving the signed CDN URL?

The app currently records only FAILED, without exposing the native download error.

Related: #950

Activity

  1. madeofpendletonwool commented on Oct 29, 2026

    @madeofpendletonwool
    Owner

    Fixed in #1039 - The app wasn't following BBC's signed download links correctly. Those episodes download to the device now. Will be released officially with the next release coming soon.

  2. zerotraceme commented on Oct 30, 2026

    @zerotraceme
    Author

    Amazing, thank you for fixing it!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions