2013-07-12 7 views
15

Wir haben eine App, lassen Sie uns anrufen: xyz_app für die ich ein benutzerdefiniertes URL-Schema in Form von xyz_app:// haben.Wie öffne ich eine App, wenn sie über eine Webseite in Safari installiert wurde?

Wir senden eine E-Mail an den Benutzer.

wenn er auf den Link klickt, soll er zur App gehen und falls die App nicht installiert ist, unsere mobile Website.

also aus dem Link in der E-Mail, wie stelle ich sicher, dass, wenn die App nicht installiert ist, sollte dieser Link den Benutzer auf die mobile Website stattdessen senden?

Antwort

23

Das URL-Schema funktioniert nur direkt, wenn die App auf dem iDevice installiert ist. Wenn nicht installiert, wird ein Fehler ausgelöst.

1) Um diese Funktionalität zu implementieren, müssen Sie den Benutzer auf eine Webseite umleiten, die erkennt, ob die App installiert ist, von Ihrem E-Mail-Link. So etwas wie dieses www.yourwebsite/detectapp

2) Ihre detectapp Seite wird eine Javascript-

var appstoreFail = "www.your_redirect_website.com"; 

//Check is device is iOS 
var iOS = /(iPad|iPhone|iPod)/.test(navigator.userAgent); 
var appUrlScheme = "xyz_app://"; 

if (iOS) { 
    // If the app is not installed the script will wait for 2sec and redirect to web. 
    var loadedAt = +new Date; 
    setTimeout(function() { 
     if (+new Date - loadedAt < 2000) 
      window.location = appstoreFail; 
    } ,25); 
    // Try launching the app using URL schemes 
    window.open(appUrlScheme, "_self"); 
} else { 
    // Launch the website 
    window.location = appstoreFail; 
} 
+0

Okay. Vielen Dank. Ich werde es versuchen. –

+0

Gibt es einen bestimmten Grund, warum setTimout nicht direkt auf 2 Sekunden eingestellt ist? –

Verwandte Themen