2012-03-13 15 views
14

En mi iPhone, me acabo de dar cuenta de que si realizo una Búsqueda de Google (en Mobile Safari) y selecciono un resultado en quora.com, la página de resultados inicia la aplicación nativa Quora en mi teléfono.¿Cómo redirigir desde Mobile Safari a la aplicación nativa de iOS (como Quora)?

¿Cómo se hace esto? Específicamente, ¿es una detección del agente de usuario y el uso de un esquema de URL de iOS? ¿Puede decir si la aplicación nativa está instalada y/o redirigir a la tienda de aplicaciones?

Respuesta

4

Puede hacer que su aplicación se inicie usando custom URL scheme, registrada por su aplicación con el tiempo de ejecución de iOS. Luego, en su sitio web, escriba el código para detectar el User-Agent entrante y, si se detecta iOS, genere su URL personalizada en lugar de las http habituales.

+4

Por lo tanto, lo que sucede si no tienen la aplicación instalada? – Callmeed

+0

Buena pregunta, porque no hay una forma estándar de manejar esto. Pero [aquí] (http://stackoverflow.com/questions/1108693/is-it-possible-to-register-a-httpdomain-based-url-scheme-for-iphone-apps-like/1109200#1109200) es una solución decente publicada por otro usuario de este sitio. – Perception

+0

¿Dónde está la solución para detectar si su aplicación está instalada sin mensaje de error? – kkurni

15

estoy volver a colocar una respuesta a mi propia relacionada (pero originalmente era de Ruby-on-Rails-específicas) Pregunta de aquí: Rails: redirect_to 'myapp://' to call iOS app from mobile safari

Puede redirigir el uso de JavaScript window.location.

código

muestra:

<html><head> 
    <script type="text/javascript"> 
     var userAgent = window.navigator.userAgent; 
     if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i)) { 
     window.location = "myiosapp://" 
     } 
    </script> 
    </head> 
    <body> 
    Some html page 
    </body> 
</html> 
+0

No funciona en mi dispositivo iOS 7. – Jonny

+0

No funciona en mi dispositivo iOS 7 SI lanzo la aplicación web desde un clip web en modo de pantalla completa. No debe ser una configuración de modo de pantalla completa para el clip web. – Jonny

+0

Esto no funcionará si la aplicación no está instalada. – kkurni

5

Sólo una pequeña mejora del código JS, si la aplicación no está instalada, se enviará al usuario tienda de itunes;)

<script type="text/javascript"> 

    // detect if safari mobile 
    function isMobileSafari() { 
     return navigator.userAgent.match(/(iPod|iPhone|iPad)/) && navigator.userAgent.match(/AppleWebKit/) 
    } 
    //Launch the element in your app if it's already installed on the phone 
    function LaunchApp(){ 
     window.open("Myapp://TheElementThatIWantToSend","_self"); 
    }; 

    if (isMobileSafari()){ 
     // To avoid the "protocol not supported" alert, fail must open itunes store to dl the app, add a link to your app on the store 
     var appstorefail = "https://itunes.apple.com/app/Myapp"; 
     var loadedAt = +new Date; 
     setTimeout(
      function(){ 
      if (+new Date - loadedAt < 2000){ 
       window.location = appstorefail; 
      } 
      } 
     ,100); 
     LaunchApp() 

    } 

</script> 
Cuestiones relacionadas