ver usar restaurar que porque pestañas paginas los las este configuracion con como cargan asocian aplicaciones algunas abre abiertas ios tabs safari native

ios - usar - restaurar safari iphone



iOS: regrese a Safari desde la aplicación nativa sin abrir una nueva pestaña (2)

El comportamiento que describió es exactamente para lo que está diseñado AppLinks de FB , y obtendrá el mismo comportamiento con todas las aplicaciones de iOS que lo soporten (¡que es bastante) fuera de la caja!

Por cierto, Google Maps usa el mismo componente: ¡puedes verlo si abres Google Maps desde, digamos, Fantastical.app!

Tengo problemas para descubrir cómo cambiar a Safari desde una aplicación nativa en iOS 7+. He usado UIApplication.sharedApplication.openURL() , pero eso abre una nueva pestaña. Me gustaría devolver al usuario a la página actual que estaba viendo antes sin abrir una pestaña nueva. Encontré esta publicación SO, pero tiene algunos años, así que esperaba que las cosas hubieran cambiado desde entonces.

Aquí está el flujo de trabajo que estoy visualizando:

  1. El usuario toca un enlace en una página HTML en Safari para abrir / instalar mi aplicación
  2. El usuario realiza una acción en mi aplicación
  3. Una vez que el usuario finaliza la acción, mi aplicación abre Safari automáticamente y el usuario vuelve a la página donde lo dejó.

Google lo ha hecho de alguna manera con su aplicación Google Maps. Si busca una dirección en google.com en Safari, puede tocar el mapa que aparece en los resultados de búsqueda y se abrirá la aplicación Mapas. En la parte superior de la aplicación Mapas, habrá una barra "Volver a Safari" a la que puedes tocar. Una vez que lo toque, regresará a Safari sin cargar otra pestaña. Parece que no puedo encontrar nada sobre cómo Google hizo esto. Si puedo replicar ese comportamiento en mi aplicación, eso funcionaría bien.

¡Cualquier ayuda sería muy apreciada!


Hay una forma de lograr lo que desea con las API estándar de iOS. No es necesario usar componentes externos.

Usted controla su página web y su aplicación, para que sepa la URL exacta que tiene el enlace a su aplicación.

Estos son los pasos:

1) En su aplicación, defina un esquema de URL personalizado. En este caso, supongamos que usas el esquema myawesomeapp:// . Puede hacer esto en su proyecto Xcode yendo a la sección Información de su objetivo. Vea abajo

2) En su página web necesita manejar los dos escenarios: aplicación instalada / no instalada. Solo se trata de detectar si una aplicación responde al esquema myawesomeapp:// .

Para detectar desde su página web si su aplicación no está instalada, consulte esta publicación

Explicaré el caso donde su aplicación ya está instalada.

Digamos que la página web que contiene el enlace es:

http://www.mywebsite.com/mypage.html#mytag

El enlace que proporcione en su página web debe pasar algunos parámetros a la aplicación y uno de ellos debe ser la URL que desea que devuelva la aplicación. Siguiendo con el ejemplo, el enlace podría ser:

myawesomeapp://?action=my_action_1&sourceurl=http%3A%2F%2Fwww.mywebsite.com%2Fmypage.html%23mytag

Tenga en cuenta que la URL que pase como parámetro dentro del esquema tiene que estar codificada en la URL o no funcionará correctamente.

3) En su delegado de aplicación debe implementar el método:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

En este método, analice la URL, descodifique los elementos de la consulta y pase el sourceURL al controlador de vista responsable de manejar la acción antes de llamarlo. En este caso, establecí una propiedad pública en ViewController que almacenará la URL.

@property (nonatomic, strong) NSURL *sourceURL;

4) En el controlador de visualización cuando el usuario finaliza la interacción, simplemente llama:

[[UIApplication sharedApplication] openURL:self.sourceURL];

Como self.sourceURL contiene la URL de su página web, Safari se lanzará con la URL. Sin embargo, como esa página ya está abierta, iOS lo detecta y vuelve a abrir esa página.

Tengo un proyecto de muestra en mi página de Github que implementa todo esto.

Y para finalizar, después de instalar el proyecto de ejemplo en su iPhone, abra esta publicación de desbordamiento de pila desde el dispositivo móvil Safari y abra mi aplicación impresionante.

Una vez que se abre la aplicación, haz clic en el botón y volverás a esta publicación de desbordamiento de pila.