So öffnen Sie eine native iOS-App über eine Web-App

Zusammenfassung Ich habe eine App mit einem korrekt funktionierenden URL-Schema, die ich über eine auf dem Startbildschirm gespeicherte Web-App starten möchte, und die normalen JavaScript-Weiterleitungsmethoden scheinen nicht zu funktionieren.

Einzelheiten Ich versuche, eine iOS-Web-App zu erstellen, die über einen auf dem Startbildschirm gespeicherten Link im Vollbildmodus geöffnet werden kann. Die Web-App muss eine bestimmte native App öffnen. Ich habe das URL-Schema für die native App bereits registriert und überprüft, ob es ordnungsgemäß funktioniert. Ich kann die native App öffnen, indem ich das Schema beispielsweise direkt in die Adressleiste von Safari eingebe. Ich kann es auch aus anderen Anwendungen mit dem öffnen+openURL: Methode vonUIApplication. Ich möchte es auch mit bestimmten Argumenten aus einer nativen Web-App öffnen, die zum Startbildschirm hinzugefügt werden kann.

Ich versuche, JavaScript in der nativen App wie folgt zu verwenden:

<code>window.location = "myapp://myparam";
</code>

Wenn ich diesen Code in der Web-App verwende, erhalte ich die Warnmeldung:

"MyWebAppName kann nicht geöffnet werden - myWebAppName konnte nicht geöffnet werden. Der Fehler war" Diese URL kann nicht angezeigt werden ".".

Dasselbe Javascript, wenn es in Safari ausgeführt wird, funktioniert ordnungsgemäß. Ich erhalte das gleiche Ergebnis mitwindow.location.replace("myapp://myparam").

Der HTML-Code für die Web-App lautet:

<code><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">

<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>untitled</title>
    <meta name="generator" content="TextMate http://macromates.com/">
    <meta name="author" content="Carl Veazey">
    <!-- Date: 2012-04-19 -->
    <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta names="apple-mobile-web-app-status-bar-style" content="black-translucent" />
</head>
<body>
    <script type="text/javascript" charset="utf-8">
        if (window.navigator.userAgent.indexOf('iPhone') != -1) {
            if (window.navigator.standalone == true) {
                window.location = "myapp://myparam";
            } else {
                document.write("please save this to your home screen");
        };} else {
                alert("Not iPhone!");
                document.location.href = 'please-open-from-an-iphone.html';
        };
    </script>
</body>
</html>
</code>

Was mache ich hier falsch? Ich bin ziemlich unerfahren mit Javascript und mobilem Web, daher vermute ich, dass mir nur etwas Offensichtliches fehlt.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage