Tengo dos enlaces en un sitio web optimizado de Safari móvil. Uno es un enlace a la App Store para descargar mi aplicación. El otro es un botón Iniciar aplicación que usa el protocolo de la aplicación registrada: // para abrir la aplicación. El problema es que el Safari móvil se bloquea cuando el usuario hace clic en el botón Iniciar aplicación si la aplicación no está instalada. ¿Es posible detectar si el protocolo registrado está disponible y, de no ser así, cambiar el botón Iniciar aplicación con una URL adecuada, como la URL de la aplicación de descarga, para que el usuario no reciba una ventana emergente desagradable?iPhone: redirigir a la tienda de aplicaciones en el safari móvil si la aplicación no está instalada
iPhone: redirigir a la tienda de aplicaciones en el safari móvil si la aplicación no está instalada
Respuesta
Esto es muy similar a this question; las sugerencias más relevantes son tener un solo botón que intente iniciar la aplicación, creando simultáneamente un temporizador que se activará si la aplicación no se instala con el argumento de que si fuera así, Safari habría salido antes de que se dispare el temporizador.
A continuación se muestra un fragmento de código que funciona, pero no es perfecto. Sigue viendo el emergente safari, pero todo lo demás funciona como se espera:
<script type="text/javascript">
var timer;
var heartbeat;
var lastInterval;
function clearTimers() {
clearTimeout(timer);
clearTimeout(heartbeat);
}
window.addEventListener("pageshow", function(evt){
clearTimers();
}, false);
window.addEventListener("pagehide", function(evt){
clearTimers();
}, false);
function getTime() {
return (new Date()).getTime();
}
// For all other browsers except Safari (which do not support pageshow and pagehide properly)
function intervalHeartbeat() {
var now = getTime();
var diff = now - lastInterval - 200;
lastInterval = now;
if(diff > 1000) { // don't trigger on small stutters less than 1000ms
clearTimers();
}
}
function launch_app_or_alt_url(el) {
lastInterval = getTime();
heartbeat = setInterval(intervalHeartbeat, 200);
document.location = 'myapp://customurl';
timer = setTimeout(function() {
document.location = 'http://alternate.url.com';
}, 2000);
}
$(".source_url").click(function(event) {
launch_app_or_alt_url($(this));
event.preventDefault();
});
</script>
he blogged acerca de los detalles aquí: http://aawaara.com/post/74543339755/smallest-piece-of-code-thats-going-to-change-the-world
Si agrega una iframe
en su página web con la src
conjunto de 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 realizar un enlace profundo a la aplicación si está instalada, o redireccionar a la tienda de aplicaciones 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 lo dirigirá inmediatamente a la aplicación. Si no tiene instalada la aplicación Twitter, verá el texto "La aplicación Twitter no está instalada".
<!DOCTYPE html>
<html>
<head>
<title>iOS Automatic Deep Linking</title>
</head>
<body>
<iframe src="twitter://" width="0" height="0"></iframe>
<p>The Twitter App is not installed</p>
</body>
</html>
Esto significa que usted podría tener un solo botón que dirige a una página web con el formato similar a este:
<!DOCTYPE html>
<html>
<head>
<title>iOS Automatic Deep Linking</title>
<script src='//code.jquery.com/jquery-1.11.2.min.js'></script>
<script src='//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="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>
- 1. Navegador iPhone: verificando si la aplicación iPhone está instalada desde el navegador
- 2. ¿Cómo redirigir desde Mobile Safari a la aplicación nativa de iOS (como Quora)?
- 3. Cómo verificar la aplicación instalada en el dispositivo iPhone
- 4. la aplicación para el proyecto no está instalada
- 5. Detectando programáticamente si hay una aplicación instalada en el iPhone
- 6. Eliminar aplicación de la tienda de aplicaciones
- 7. Inicie la aplicación instalada en el iPhone atado
- 8. Problemas que presentan aplicación FireMonkey a la tienda de aplicaciones
- 9. Cómo detectar si Safari está deshabilitado en el iPhone
- 10. Detener iframe redirigir/abrir safari móvil en proyecto de teléfono
- 11. distribución iphone ad-hoc en la tienda de aplicaciones
- 12. ¿Cómo enlazar a la tienda iTunes desde la aplicación iPhone?
- 13. Promedio de tiempo para la aprobación de la aplicación de iPhone en la tienda de aplicaciones
- 14. iPhone - Envío automático de la tienda de aplicaciones
- 15. Seleccionar texto en el dispositivo móvil Safari en el iPhone
- 16. Detectar desde el navegador si está instalada una aplicación específica
- 17. Obtener el APK de la aplicación instalada
- 18. ¿Cambiar el nombre en una aplicación que ya está en la tienda de aplicaciones?
- 19. Hacer la tienda en la aplicación para aplicaciones de quiosco
- 20. iPhone sdk: abre la tienda de aplicaciones para una aplicación específica.
- 21. Primefaces - ¿Cómo redirigir a la versión móvil?
- 22. Imágenes borrosas en el safari móvil iphone 4
- 23. setInterval pausa en iphone/ipad (Safari móvil) durante el desplazamiento
- 24. Comportamiento de la aplicación iOS después de instalar una nueva versión desde la tienda de aplicaciones
- 25. Lea UDID de Iphone con javascript en el safari móvil
- 26. ¿Determinar si la tienda está abierta?
- 27. Volver a la aplicación de safari
- 28. ¿Enlace a la tienda de aplicaciones sin redireccionamientos?
- 29. Aplicación móvil: orientación a iPhone, WP7, Android y Blackberry
- 30. ¿Limitaciones del tamaño de la imagen en el safari móvil?
Esto funciona en iOS7, pero no parece que trabajar en ios8. Puedo llamar a cualquier otra URL de la aplicación excepto itms: // o itms-app: //. Funciona en ios7. ¿Tiene esto que ver con que Apple impulse el uso de banners inteligentes en lugar de redirigir automáticamente a la tienda de aplicaciones? – SuperDuperTango