Commit 997b506b authored by Kourser's avatar Kourser
Browse files

fix: drop the pcast URL scheme, which the App Store refuses

App Store Connect rejected the 1.2.0 upload: "The following URL schemes
found in your app are disallowed: [pcast]". The scheme is reserved for
Apple Podcasts. podcast, itpc and feed pass the same check and stay.

Build 10: build 9 is the notarized Developer ID build already published
as v1.2.0, which still registers pcast — harmless outside the App Store.

Co-Authored-By: default avatarClaude Opus 5.5 <noreply@anthropic.com>
parent effcb35a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@ adopte le [versionnage sémantique](https://semver.org/lang/fr/).
  un toucher de la lecture. Une commande « Lecture Skingomz » s'ajoute au
  centre de contrôle, à l'écran verrouillé ou au bouton Action.
- **Liens de podcast** : un lien « s'abonner » d'un site web (`podcast://`,
  `pcast://`, `itpc://`, `feed://`) s'ouvre dans Skingomz — sur la fiche du
  `itpc://`, `feed://`) s'ouvre dans Skingomz — sur la fiche du
  podcast s'il est déjà suivi, sinon sur un aperçu d'où s'abonner.
- **Ouvrir un fichier OPML** : depuis Fichiers, Mail ou le Finder, « Ouvrir
  avec › Skingomz » importe les abonnements du fichier.
+0 −1
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@
			<key>CFBundleURLSchemes</key>
			<array>
				<string>podcast</string>
				<string>pcast</string>
				<string>itpc</string>
				<string>feed</string>
			</array>
+5 −3
Original line number Diff line number Diff line
@@ -4,9 +4,11 @@ import Foundation
/// under a scheme of its own, so that the system opens a podcast app rather
/// than a browser.
public enum PodcastLink {
    /// `podcast` and `pcast` come from Apple Podcasts, `itpc` from iTunes,
    /// `feed` from the feed readers of the 2000s. All four mean the same thing.
    public static let schemes = ["podcast", "pcast", "itpc", "feed"]
    /// `podcast` comes from Apple Podcasts, `itpc` from iTunes, `feed` from the
    /// feed readers of the 2000s. All three mean the same thing. `pcast`, the
    /// fourth of the family, is reserved: App Store Connect refuses any build
    /// that registers it.
    public static let schemes = ["podcast", "itpc", "feed"]

    /// The feed such a link designates, or `nil` for anything else.
    ///
+2 −1
Original line number Diff line number Diff line
@@ -10,7 +10,6 @@ import Testing
    @Test func schemeStandingInForHTTPBecomesHTTPS() {
        #expect(feed("feed://example.com/rss.xml") == "https://example.com/rss.xml")
        #expect(feed("podcast://feeds.example.com/show") == "https://feeds.example.com/show")
        #expect(feed("pcast://example.com/feed") == "https://example.com/feed")
        #expect(feed("itpc://example.com/feed?id=42") == "https://example.com/feed?id=42")
    }

@@ -32,6 +31,8 @@ import Testing
    @Test func otherLinksAreNotFeeds() {
        #expect(feed("https://example.com/rss") == nil)
        #expect(feed("mailto:someone@example.com") == nil)
        // Reserved by Apple: the app may not register it, so never receives it.
        #expect(feed("pcast://example.com/feed") == nil)
        #expect(feed("file:///tmp/subscriptions.opml") == nil)
    }

+1 −1
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ qui n'existe pas sur iOS.
  ou URL directe du flux — locales, hors synchro
- 📂 **Import et export OPML** (migration depuis/vers une autre app) ; un fichier
  `.opml` s'ouvre directement dans l'app
- 🔗 **Liens de podcast** (`podcast://`, `feed://`, `itpc://`, `pcast://`) et
- 🔗 **Liens de podcast** (`podcast://`, `feed://`, `itpc://`) et
  **Handoff** de l'épisode en cours entre iPhone, iPad et Mac
- 🆕 Écran **Nouveautés** (épisodes récents de tous les abonnements)
- 🔍 **Recherche** dans la bibliothèque et les épisodes
Loading