Ist es möglich, Ihre eigenen http-URL-Schemata in iOS zu verwalten?

71

iTunes, App Store und YouTube unter iOS registrieren eindeutig http: // ... URL-Schemata, um ihre Apps zu öffnen.

Kann das jemand, nicht nur Ihr eigenes Protokoll?

Der Grund, warum ich das machen möchte, ist, dass ich an einer App für ein Festival arbeite. Ich möchte Links zu bestimmten Seiten der Website "abfangen" und stattdessen die App starten, falls installiert.

Bisher hatte ich nicht viel Glück

Baswell
quelle

Antworten:

61

Die Art und Weise, wie Sie dies für "http: //" - URLs tun können (und was Apple und Spotify meiner Meinung nach tun), ist folgende:

  1. Registrieren Sie ein benutzerdefiniertes URL-Schema, wie in den anderen Antworten gezeigt .

  2. Richten Sie Ihre HTTP-URL so ein, dass sie auf eine echte Webseite verweist.

  3. Fügen Sie auf dieser Seite ein Skript ein, um unter iOS zu Ihrer benutzerdefinierten URL umzuleiten.

Hier ist beispielsweise eine Beispielseite, auf der Sie zur Twitter-App für einen bestimmten Benutzer oder zur Twitter-Website gelangen, je nachdem, ob Sie sich im Web oder auf Ihrem iOS-Gerät befinden:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Twitter</title>
</head>
<body>
    <script type="text/javascript">
        var username = document.location.search.substr(1);
        document.location.replace(
            "standalone" in window.navigator ?
            'twitter:@'+username :              // iOS
            'http://twitter.com/'+username);    // others
    </script>
</body>
</html>

Probieren Sie es hier aus: http://bl.ocks.org/d/3153819/?mckamey

mckamey
quelle
1
Ja, das mache ich jetzt. Nicht ganz so, wie es der App Store macht, da er direkt zum App Store geht, ohne vorher zu Safari zu gehen.
Baswell
27
Was ist, wenn Ihre App nicht installiert ist?
stephane k.
3
Möglicherweise können Sie auch einen versteckten iFrame auf der Seite verwenden, die auf das benutzerdefinierte Schema verweist. Wenn es fehlschlägt, bemerkt niemand etwas. Wenn dies erfolgreich ist, wird die Kontrolle von der Seite an die App übertragen.
McKamey
1
@mckamey Ja, jetzt denke ich, dass Apples Weg besser ist. Der Benutzer erwartet, dass der Browser mit einer http-URL geöffnet wird, und iOS Safari verfügt über ein intelligentes Banner, mit dem der Benutzer zur App wechseln kann, wenn diese installiert ist. Wenn andererseits http als App-URL zulässig ist, kann eine Drittanbieter-App eine offizielle Website entführen, was gelinde gesagt eine Sicherheitslücke darstellt.
NeoWang
9
@NeoWang Apples Weg ist nicht besser. Mit Android können Schema, Host, Pfad und Port definiert werden, und ich habe noch keine Probleme damit gehört. Der Benutzer kann immer auswählen, mit welcher App er die URL öffnen möchte, damit keine Entführung stattfindet, ohne dass der Benutzer davon Kenntnis hat. Wenn der Benutzer in Android nicht möchte, dass die App sie öffnet, ist der Browser garantiert dazu in der Lage, was viel dynamischer als iOS ist.
Craned
46

iOS 9 unterstützt Universal Links , mit denen iOS eine App basierend auf einem Standard starten kannhttp:// URL (basierend auf dem Hostnamen) ohne dass der Benutzer Safari durchlaufen muss.

Es erfordert eine gewisse Webserverkonfiguration (Sie benötigen eine Website), aber nach dem Einrichten öffnet die registrierte App den Link anstelle von Safari.

Für Benutzer ohne iOS 9 können Sie Smart Banners verwenden , um die Benutzererfahrung zu vereinfachen.

Marcus Adams
quelle
2

Nein, Sie können nur benutzerdefinierte Schemata registrieren.

Und ich kann Apple auch nicht dabei sehen ...

Eiko
quelle
Schade. Apple macht es auf jeden Fall. E-Mail (oder SMS) selbst und Link zum iTunes Store (iTunes .... ). Klicken Sie auf dem iPhone per E-Mail darauf. Der App Store wird geöffnet, ohne vorher zu Safari zu gehen.
Baswell
Nein. Für E-Mails gibt es (offensichtlich) das Mailto: -Schema, für SMS ist es SMS:, und im Fall von iTunes verwenden sie beim ersten Anruf normalerweise http:, leiten dann aber zu etwas anderem um (was getan werden kann) transparent, damit der Benutzer es nicht sieht).
Eiko
@ HappyFlow Nicht sicher, was Sie mir sagen wollen?
Eiko
Bedeutet das nicht, dass Sie keinen Webbrowser implementieren können, der sich beim Klicken auf eine URL öffnen würde?
Diidu
0

Die Frage ist alt, aber da ich Jahre später auf diese Seite gestoßen bin, werde ich bei der Suche nach einer Antwort auf dieselbe Frage eine Antwort hinzufügen, wie es jetzt geht:

Verwenden Sie universelle Links. Aktivieren Sie zuerst "Associated Domains" oder Ihre App-ID in developer.apple.com. Fügen Sie dann Ihre Domain als Applink in Xcode hinzu (wählen Sie Ziel-> Signieren & Funktionen-> Zugehörige Domains) und erstellen Sie dann eine Apple-App-Site-Zuordnungsdatei auf Ihrer Website.

Details werden hier erklärt .

diidu
quelle