Meine Frage bezieht sich nur auf iOS9!
Ich habe eine HTML
Landing Page und versuche, den Benutzer über das URL-Schema zu meiner App umzuleiten, wenn die App installiert ist, oder ansonsten zum Appstore umleiten .
Mein Code ist:
document.addEventListener("DOMContentLoaded", function(event) {
var body = document.getElementsByTagName('body')[0];
body.onclick = function () {
openApp();
};
});
var timeout;
function preventPopup() {
clearTimeout(timeout);
timeout = null;
window.removeEventListener('pagehide', preventPopup);
}
function openApp(appInstanceId, platform) {
window.addEventListener('pagehide', preventPopup);
document.addEventListener('pagehide', preventPopup);
// create iframe
var iframe = document.createElement("iframe");
document.body.appendChild(iframe);
iframe.setAttribute("style", "display:none;");
iframe.src = 'myscheme://launch?var=val';
var timeoutTime = 1000;
timeout = setTimeout(function () {
document.location = 'https://iTunes.Apple.com/app/my-app';
}, timeoutTime);
}
Das Problem ist, dass der Trick iframe
in Safari
iOS9
Nicht funktioniert.
Irgendeine Idee warum?
Mein iframe
Trick basiert auf this Antwort.
Der iframe-Trick funktioniert nicht mehr - ich vermute, dass Apple) mehr Entwickler ermutigt, Universal Links schneller zu implementieren.
Sie können immer noch window.location='your-uri-scheme://';
und nach 500 ms auf den App Store zurückgreifen. Es gibt einen "Tanz" zwischen Popups, wenn Sie diesen Ansatz wählen, wie wir es bei Branch tun (wir tun es als Fallback, wenn Universal Links nicht funktionieren).
window.location = 'your-uri-scheme://'; // will result in error message if app not installed
setTimeout(function() {
// Link to the App Store should go here -- only fires if deep link fails
window.location = "https://iTunes.Apple.com/us/app/myapp/id123456789?ls=1&mt=8";
}, 500);
Ich wünschte, ich hätte eine bessere Antwort für dich. iOS 9 ist definitiv etwas eingeschränkter.
Um eine hilfreiche Übersicht über die für Universal Links erforderlichen Funktionen zu erhalten, lesen Sie meine Antwort hier oder lesen Sie dieses Tutorial
Wie bereits erwähnt Einstellung window.location
unter iOS 9 funktioniert immer noch. Dadurch wird jedoch ein Dialogfeld "In App öffnen" geöffnet. Ich habe ein Beispiel für https://bartt.me/openapp gegeben:
Weitere Informationen finden Sie in der Quelle von https://lab.bartt.me/openapp .
Versuchen Sie vielleicht, Ihnen App-Unterstützung für Universal Links zu geben
Idee: Vermeiden Sie benutzerdefinierte (JavaScript, iframe) Lösungen in Safari und ersetzen Sie Ihren Code durch einen unterstützten Universal Link.
Beispiel
<html>
<head>
...
</head>
<body>
<div class"app-banner-style">
<a href="http://yourdomain.com">In app open</a>
</div>
...content
</body>
</html>
wenn Ihre App Universal Links unterstützt (z. B. yourdomain.com), müssen Sie Ihre Domain (und Ihren Pfad) konfigurieren und iOS9 sollte auf den Link reagieren, mit dem Sie Ihre App öffnen. Das ist nur Theorie , aber ich denke, sollte funktionieren :)
iFrame Hack funktioniert nicht mehr in ios9. Mögliche Lösung ist die Verwendung von zwei Tasten. Beispiel:
$('#goToStoreBtn').text( "go to store" ).click(function(event){
event.preventDefault();
event.stopPropagation();
window.location = storeUrl; // https://iTunes.Apple.com/...
});
$('#goToAppBtn').text( "go to app" ).click(function(event){
event.preventDefault();
event.stopPropagation();
window.location = appUrl; // myApp://...
});