Ich möchte, dass iOS URLs aus meiner Domain (z. B. http://martijnthe.nl ) mit meiner App öffnet, wenn die App auf dem Telefon installiert ist, und mit Mobile Safari, falls dies nicht der Fall ist.
Ich habe gelesen, dass es möglich ist, ein eindeutiges Protokollsuffix dafür zu erstellen und es in der Info.plist zu registrieren, aber Mobile Safari gibt einen Fehler aus, falls die App nicht installiert ist.
Was wäre eine Problemumgehung?
Eine Idee:
1) Verwenden Sie http: // URLs, die in einem beliebigen Desktop-Browser geöffnet werden, und rendern Sie den Dienst über den Browser
2) Überprüfen Sie den User-Agent und öffnen Sie für den Fall, dass es sich um Mobile Safari handelt, ein myprotocol: // URL, um die iPhone-App zu öffnen (versuchen) und Mobile iTunes zum Herunterladen der App zu öffnen, falls der Versuch fehlschlägt
Nicht sicher, ob dies funktionieren wird ... Vorschläge? Vielen Dank!
Antworten:
Ich denke, der am wenigsten aufdringliche Weg, dies zu tun, ist wie folgt:
appInstalled
Cookiewindow.location
aufyour-uri://
(oder führen Sie die Umleitungsserverseite aus).your-uri://
Die andere Option, mit der ich gespielt habe, die ich aber als etwas klobig empfunden habe, war, in Javascript Folgendes zu tun:
quelle
window.location="custom-uri://
erfolgreich ist, wird das Fallback-Timeout nicht beendet. Wenn der Benutzer von Ihrer App zum Browser zurückkehrt, ist der Timer noch vorhanden und startet den App Store-Link. Dies ist eine schlechte Benutzererfahrung.Es ist durchaus möglich, dies in JavaScript zu tun, solange Ihr Fallback eine andere Anwendung ist. Aufbauend auf Nathans Vorschlag :
Schauen Sie sich hier eine Live-Demo an .
quelle
Für iOS 6-Geräte gibt es eine Option: Heraufstufen von Apps mit Smart App-Bannern
quelle
Ich habe festgestellt, dass die ausgewählte Antwort für die Browser-Apps funktioniert, aber ich hatte Probleme mit dem Code, der in Nicht-Browser-Apps funktioniert, die a implementieren
UIWebView
.Das Problem für mich war, dass ein Benutzer in der Twitter-App auf einen Link klickte, der ihn über eine
UIWebView
in der Twitter-App zu meiner Website führte . Wenn sie dann auf eine Schaltfläche auf meiner Website klicken, versucht Twitter, ausgefallen zu sein und das nur zu vervollständigen,window.location
wenn die Website erreichbar ist. Was also passiert, ist aUIAlertView
Popup-Fenster, das besagt, dass Sie sicher sind, dass Sie fortfahren möchten, und dann ohne ein zweites Popup sofort zum App Store weiterleitet.Meine Lösung beinhaltet Iframes. Dies vermeidet das
UIAlertView
Präsentation und ermöglicht eine einfache und elegante Benutzererfahrung.jQuery
Javascript
BEARBEITEN:
Fügen Sie dem Iframe die absolute Position hinzu, damit beim Einfügen kein zufälliges Leerzeichen am unteren Rand der Seite angezeigt wird.
Es ist auch wichtig zu beachten, dass ich mit Android keinen Bedarf für diesen Ansatz gefunden habe. Die Verwendung
window.location.href
sollte gut funktionieren.quelle
In iOS9 hat Apple endlich die Möglichkeit eingeführt, Ihre App für bestimmte
http://
URLs zu registrieren : Universal Links .Eine sehr grobe Erklärung, wie es funktioniert:
http://
URLs für bestimmte Domains (Web-URLs) in Ihrer App zu öffnen.http://
URLs für ein Setup zu öffnen, wie oben erläutert, und öffnet die richtige App automatisch, wenn sie installiert ist. ohne vorher Safari zu durchlaufen ...Dies ist der sauberste Weg, um Deep Links unter iOS zu erstellen. Leider funktioniert dies nur unter iOS9 und neueren Versionen.
quelle
Nochmals auf die Antwort von Nathan und JB bauen:
So starten Sie die App über eine URL ohne zusätzlichen Klick Wenn Sie eine Lösung bevorzugen, die den Zwischenschritt des Klickens auf einen Link nicht enthält, können Sie Folgendes verwenden. Mit diesem Javascript konnte ich ein Httpresponse-Objekt von Django / Python zurückgeben, das eine App erfolgreich startet, wenn sie installiert ist, oder alternativ den App Store im Falle einer Zeitüberschreitung startet. Hinweis: Ich musste auch die Zeitüberschreitung von 500 auf 100 anpassen, damit dies auf einem iPhone 4S funktioniert. Testen und optimieren Sie, um es für Ihre Situation richtig zu machen.
quelle
document.webkitHidden
Um festzustellen, ob Ihre App bereits aufgerufen wurde und die aktuelle Registerkarte "Safari" in den Hintergrund tritt, stammt dieser Code von www.baidu.comquelle
appurl
undweburl
könnte Ihr Problem lösenWenn Sie
iframe
auf Ihrer Webseite einsrc
benutzerdefiniertes Schema für Ihre App hinzufügen , leitet iOS automatisch zu diesem Speicherort in der App weiter. Wenn die App nicht installiert ist, passiert nichts. Auf diese Weise können Sie eine Deep Link-Verbindung zur App herstellen, wenn diese installiert ist, oder zum App Store umleiten, wenn sie nicht installiert ist.Wenn Sie beispielsweise die Twitter-App installiert haben und zu einer Webseite mit dem folgenden Markup navigieren, werden Sie sofort zur App weitergeleitet.
Hier ist ein ausführlicheres Beispiel, das zum App Store weiterleitet, wenn die App nicht installiert ist:
quelle
Hier ist eine Lösung.
Richten Sie eine boolesche Situation mit Unschärfe und Fokus ein
Binden Sie Ihren Link mit einem JQuery-Click-Handler, der so etwas aufruft.
Wenn die App geöffnet wird, verlieren wir den Fokus auf das Fenster und der Timer endet. Ansonsten bekommen wir nichts und laden die übliche Facebook-URL.
quelle
Soweit ich weiß, können Sie nicht das gesamte Betriebssystem dazu bringen, eine
http:
+ Domain-URL zu verstehen . Sie können nur neue Schemata registrieren (ich verwende siex-darkslide:
in meiner App). Wenn die App installiert ist, startet Mobile Safari die App korrekt.Sie müssten jedoch den Fall behandeln, in dem die App nicht mit einem "Immer noch hier? Klicken Sie auf diesen Link, um die App von iTunes herunterzuladen" installiert wird. auf Ihrer Webseite.
quelle
http
URLs zuDas klingt für mich nach einem vernünftigen Ansatz, aber ich glaube nicht, dass Sie es schaffen werden, mobile iTunes als zweiten Ausweg zu öffnen. Ich denke, Sie müssen das eine oder das andere auswählen - entweder zu Ihrer App oder zu iTunes umleiten.
Wenn Sie also zu myprotocol: // umleiten und die App nicht auf dem Telefon ist, erhalten Sie keine zweite Chance, zu iTunes umzuleiten.
Sie könnten vielleicht zuerst zu einer (für das iPhone optimierten) Zielseite umleiten und dem Benutzer die Möglichkeit geben, sich zu Ihrer App oder zu iTunes durchzuklicken, um die App zu erhalten, wenn er sie nicht hat? Sie verlassen sich jedoch darauf, dass der Benutzer dort das Richtige tut. (Bearbeiten: obwohl Sie ein Cookie so setzen könnten, dass es nur zum ersten Mal ist?)
quelle
Bei dem Versuch, das Problem des Popups zu beheben, stellte ich fest, dass Apple dieses Problem umgehen konnte.
Wenn Sie auf diesen Link klicken und die Anwendung installiert haben, wird sie tatsächlich umgeleitet. Andernfalls werden Sie ohne Popup auf die Webseite weitergeleitet.
quelle