Solución:
Creo que la respuesta más simple sería configurar una página en su servidor con el siguiente javascript:
(function() {
var app = {
launchApp: function() {
window.location.replace("myapp://");
this.timer = setTimeout(this.openWebApp, 1000);
},
openWebApp: function() {
window.location.replace("http://itunesstorelink/");
}
};
app.launchApp();
})();
Básicamente, esto intenta redirigir a su aplicación y establece un tiempo de espera para redirigir a la tienda de aplicaciones si falla.
Incluso podría hacer que el código sea un poco más inteligente y verificar el agente de usuario para ver si es un usuario de ios, un usuario de Android o un usuario web, y luego redirigirlos de manera apropiada.
No hay forma de comprobarlo. Sin embargo, hay una buena solución.
La idea es básicamente esta:
- La primera vez que abre su aplicación, abre safari móvil desde su aplicación a una URL predefinida en su servidor
- En esa URL, configura una cookie, como una aplicación instalada en el safari móvil de los usuarios.
- Luego, devuelve al usuario a su aplicación con su esquema registrado (lo mismo que hace FB con SSO)
- Todos los enlaces de su correo electrónico apuntan a su sitio web, pero en el sitio web usted comprueba si el navegador es Safari móvil y si existe la cookie instalada de la aplicación.
- Si el navegador no es Safari móvil o no se encuentra la cookie, redirige a la AppStore o permanece en su página web.
- Si las condiciones del n. ° 4 son verdaderas, redirige al usuario a su aplicación con el esquema registrado
- Si el usuario ha eliminado la aplicación, por lo que el esquema de URL personalizado falla, tiene un redireccionamiento a prueba de fallas a la tienda de aplicaciones.
Los 2 últimos pasos se explican en esta publicación SO
Si tiene una página web a la que enlaza desde el correo electrónico con la página web que contiene un iframe
con el src
configurado en el esquema personalizado para su aplicación, iOS redirigirá automáticamente a esa ubicación en la aplicación. Si la aplicación no está instalada, no pasará nada. Esto le permite establecer un vínculo profundo en la aplicación si está instalada, o redirigir a la App Store si no está instalada.
Por ejemplo, si tiene instalada la aplicación de Twitter y navega a una página web que contiene el siguiente marcado, se le dirigirá inmediatamente a la aplicación. Si no tenía la aplicación de Twitter instalada, verá el texto “La aplicación de Twitter no está instalada”.
<!DOCTYPE html>
<html>
<head>
<title>iOS Automatic Deep Linking</title>
</head>
<body>
<iframe src="https://foroayuda.es/twitter://" width="0" height="0"></iframe>
<p>The Twitter App is not installed</p>
</body>
</html>
Aquí hay un ejemplo más completo que redirige a la tienda de aplicaciones si la aplicación no está instalada:
<!DOCTYPE html>
<html>
<head>
<title>iOS Automatic Deep Linking</title>
<script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
<script src="https://mobileesp.googlecode.com/svn/JavaScript/mdetect.js"></script>
<script>
(function ($, MobileEsp) {
// On document ready, redirect to the App on the App store.
$(function () {
if (typeof MobileEsp.DetectIos !== 'undefined' && MobileEsp.DetectIos()) {
// Add an iframe to twitter://, and then an iframe for the app store
// link. If the first fails to redirect to the Twitter app, the
// second will redirect to the app on the App Store. We use jQuery
// to add this after the document is fully loaded, so if the user
// comes back to the browser, they see the content they expect.
$('body').append('<iframe class="twitter-detect" src="https://foroayuda.es/twitter://" />')
.append('<iframe class="twitter-detect" src="itms-apps://itunes.com/apps/twitter" />');
}
});
})(jQuery, MobileEsp);
</script>
<style type="text/css">
.twitter-detect {
display: none;
}
</style>
</head>
<body>
<p>Website content.</p>
</body>
</html>