ios - smart - ¿Lanzando la aplicación O la tienda de aplicaciones de Safari?
smart app banner ios (4)
Ya sé cómo lanzar una aplicación desde Safari, pero ¿es posible verificar si la aplicación está instalada antes de iniciar? Estoy pensando en lanzar la tienda de aplicaciones si la aplicación no está actualmente instalada en el iPhone.
Esto funcionó para mí con una situación similar: en la que quería abrir la aplicación gmaps si era compatible; de lo contrario, vaya al sitio gmap directamente.
function mapLink(addy) {
addy = encodeURIComponent(addy);
var fallback = ''http://maps.google.com/?q='' + addy
, link = ''comgooglemaps://?q='' + addy;
try {
document.location = link;
} catch(err) {
document.location = fallback;
}
}
Parece funcionar bastante bien para mi caso de uso.
Actualización: si desea hacer una nueva ventana en la alternativa, esto aún permite que aparezca el mensaje de error ios. Para moverse, intente esto.
try {
document.location = link;
} catch(err) {
window.location.reload(true);
window.open(fallback, ''_blank'');
}
No es posible verificar si la aplicación está instalada desde una página web. Podrías hacerlo dentro de otra aplicación comprobando si tu esquema de URL se puede abrir usando el método -canOpenURL: de UIApplication, pero no hay javascript equivalente a esto.
Sin embargo, puede usar la siguiente solución alternativa:
<script language="javascript">
function open_appstore() {
window.location=''http://itunes.com/'';
}
function try_to_open_app() {
setTimeout(''open_appstore()'', 300);
}
</script>
<a onClick="javascript:try_to_open_app();" href="yourappurl:">App name</a>
Este código establecerá un tiempo de espera en el enlace que llamará a la función open_appstore si este tiempo de espera finaliza. Dado que su enlace apunta a la url personalizada de la aplicación, Safari intentará abrir ese enlace y, si puede, abrirá la aplicación y detendrá el temporizador, por lo que no se abrirá el enlace de AppStore.
Si no se puede abrir el enlace de la aplicación, cuando se agote el tiempo mostrará un mensaje emergente de error que dice que no puede abrir la página (no puede deshacerse de eso), pero irá inmediatamente a la AppStore y descartará ese error.
iOS 9 agrega una característica realmente agradable que permite a su aplicación abrir una url http / s: enlaces universales
En iOS 10 hay una ventana emergente que dice " Abrir en [Nombre de la aplicación] " cuando tocas el enlace y la aplicación está instalada. Si el usuario no toca " Abrir " en el timeout
dado, esta solución utilizará el respaldo. Como 300 ms es demasiado corto para tocar cualquier cosa, esta solución siempre falla en iOS 10 .
Simplemente puede leer el valor de retorno del método - (BOOL) openURL: (NSURL ) url *, si es NO, significa que la aplicación de destino no está instalada. El código siguiente recortado da un ejemplo usando el esquema de URL de navegación:
NSString *stringURL = @"navigon://coordinate/NaviCard/19.084443/47.573305";
NSURL *url = [NSURL URLWithString:stringURL];
if([[UIApplication sharedApplication] openURL:url]) {
NSLog(@"Well done!");
} else {
stringURL = @"https://itunes.apple.com/it/app/id320279293?mt=8";
url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];
}
Gracias a zszen por la corrección.
La solución de Apple:
De la documentación de Apple
Si la aplicación ya está instalada en el dispositivo de un usuario, el banner cambia de forma inteligente su acción, y al tocar el banner simplemente se abrirá la aplicación. Si el usuario no tiene su aplicación en su dispositivo, al tocar en el banner lo llevará a la entrada de la aplicación en la App Store. Cuando regresa a su sitio web, aparece una barra de progreso en el banner, que indica cuánto tiempo más tardará la descarga en completarse. Cuando la aplicación finalice la descarga, el botón Ver cambiará a un botón Abrir, y al tocar el banner se abrirá la aplicación y se conservará el contexto del usuario desde su sitio web.
Smart App Banners determina automáticamente si la aplicación es compatible con el dispositivo del usuario. Si el dispositivo que carga el banner no es compatible con su aplicación, o si su aplicación no está disponible en la ubicación del usuario, el banner no se mostrará.
Para agregar un Banner de aplicación inteligente a nuestra página web, incluya la siguiente metaetiqueta en el encabezado de cada página donde desea que aparezca el banner:
NOTA: también podemos pasar el argumento de la aplicación: como myName, etc.
Compruebe que proporciona un contexto de navegación para el encabezado de su aplicación en https://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/PromotingAppswithAppBanners/PromotingAppswithAppBanners.html
Actualizaciones:
1. Una vez que haya cerrado el banner que aparece, no se volverá a mostrar a pesar de que tenía esa metaetiqueta en nuestro html.
2. Para restablecer el inicio de la aplicación de configuración, vaya a General> Resent> Restablecer todas las configuraciones