react que pagina online gratis ejemplos convertir apps appmakr app javascript ios mobile-safari

javascript - que - Cómo abrir una aplicación nativa de iOS desde una aplicación web



progressive web apps ejemplos (4)

Si necesita abrir una aplicación iOS si está instalada y también desea conservar la funcionalidad de su página, la location.href = ''myapp://?params=...''; no ayudará ya que si myapp:// no está registrado, el redireccionamiento lleva al usuario a un destino inalcanzable.

La apuesta más segura parece ser usar un iframe . El siguiente código abrirá una aplicación de iOS si está instalada y no provocará un error si no es así (aunque puede alertar a un usuario de que no se puede llegar a la página si la aplicación no está instalada):

var frame = document.createElement(''iframe''); frame.src = ''myapp://?params=...''; frame.style.display = ''none''; document.body.appendChild(frame); // the following is optional, just to avoid an unnecessary iframe on the page setTimeout(function() { document.body.removeChild(frame); }, 4);

Resumen Tengo una aplicación con un esquema de URL que funciona correctamente que me gustaría iniciar desde una aplicación web almacenada en la pantalla de inicio, y los métodos normales de redirección de JavaScript no parecen funcionar.

Detalles Estoy tratando de crear una aplicación web para iOS, que se abrirá en modo de pantalla completa desde un enlace guardado en la pantalla de inicio. La aplicación web debe abrir una aplicación nativa específica. Ya he registrado el esquema de URL para la aplicación nativa y verifiqué que funciona correctamente. Por ejemplo, puedo abrir la aplicación nativa escribiendo el esquema directamente en la barra de direcciones de Safari. También puedo abrirlo desde otras aplicaciones usando el método +openURL: de UIApplication . También me gustaría abrirlo con ciertos argumentos de una aplicación web nativa que se puede agregar a la pantalla de inicio.

Lo que trato de hacer es usar JavaScript así dentro de la aplicación nativa:

window.location = "myapp://myparam";

Cuando uso este código dentro de la aplicación web recibo una alerta que dice:

"No se puede abrir myWebAppName - myWebAppName no se pudo abrir. El error fue" Esta URL no se puede mostrar ".".

Este mismo javascript cuando se ejecuta dentro de Safari funciona correctamente. Obtengo el mismo resultado usando window.location.replace("myapp://myparam") .

El html para la aplicación web es:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>untitled</title> <meta name="generator" content="TextMate http://macromates.com/"> <meta name="author" content="Carl Veazey"> <!-- Date: 2012-04-19 --> <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" /> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta names="apple-mobile-web-app-status-bar-style" content="black-translucent" /> </head> <body> <script type="text/javascript" charset="utf-8"> if (window.navigator.userAgent.indexOf(''iPhone'') != -1) { if (window.navigator.standalone == true) { window.location = "myapp://myparam"; } else { document.write("please save this to your home screen"); };} else { alert("Not iPhone!"); document.location.href = ''please-open-from-an-iphone.html''; }; </script> </body> </html>

¿Qué estoy haciendo mal aquí? Soy bastante inexperto con JavaScript y la Web móvil, así que sospecho que me estoy perdiendo algo obvio.


Su código funciona si está en safari móvil pero NO si es de un marcador en el escritorio de iOS. Nunca lo había intentado de esa manera, pero ese es el problema. Si solo configuro tu JS

<script type="text/javascript" charset="utf-8"> window.location = "myapp://myparam"; </script>

Funciona en el navegador, pero cuando se marca, falla. Podría tener que hacer algo con la forma en que se carga la url cuando está marcada porque no hay cromo? Supongo que Apple no quiere que las páginas de marcas registradas accedan a las aplicaciones locales. Además, me he dado cuenta de que si marque una página alojada localmente, eso funciona en el safari móvil, no puedo hacer que se cargue a través de un marcador. Es realmente extraño ...

La mejor recomendación que tengo para ti es hacerlo

<meta name="apple-mobile-web-app-capable" />

en lugar de

<meta name="apple-mobile-web-app-capable" content="yes" />

De esta forma estará en la pantalla de inicio, pero desafortunadamente se cargará con el cromo. Esa es la única solución que puedo pensar.


Pruebe de esta manera : la página de índice

<html><head></head><body> <?php $app_url = urlencode(''YourApp://profile/blabla''); $full_url = urlencode(''http://yoursite.com/profile/bla''); ?> <iframe src="receiver.php?mylink1=<?php echo $app_url;?>" width="1px" height="1px" scrolling="no" frameborder="0"></iframe> <iframe src="receiver.php?mylink2=<?php echo $full_url;?>" width="1px" height="1px" scrolling="no" frameborder="0"></iframe> </body> </html>

la página receiver.php :

<?php if ($first == $_GET[''mylink1''])) { ?> <script type="text/javascript"> self.window.location = "<?php echo $first;?>"; </script> <?php } if ($second == $_GET[''mylink2''])) { ?> <script type="text/javascript"> window.parent.location.href = "<?php echo $second ;?>"; //window.top.location.href=theLocation; //window.top.location.replace(theLocation); </script> <?php } ?>


<?php // Detect device type $iPod = stripos($_SERVER[''HTTP_USER_AGENT''],"iPod"); $iPhone = stripos($_SERVER[''HTTP_USER_AGENT''],"iPhone"); // Redirect if iPod/iPhone if( $iPod || $iPhone ){ header(''Location:http://example.com''); } ?>

Lo anterior redirigirá el navegador a la URL ingresada (http://example.com/) si el dispositivo es un iPod o iPhone. Agregue el script a la parte superior de su aplicación web, asegúrese de guardarlo como un archivo .php lugar de .html .

Fuente: http://www.schiffner.com/programming-php-classes/php-mobile-device-detection/