2012-01-26 19 views
5

Estoy trabajando en una aplicación que gestiona mi propio esquema de URL, así que implementar la devolución de llamada:¿Cómo puedo volver a iniciar la aplicación que abrió mi esquema de URL personalizado?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions (NSDictionary *)launchOptions 
{ 
    // Get our launch URL 
    if (launchOptions != nil) 
    { 
     // Launch dictionary has data 
     NSURL* launchURL = [launchOptions objectForKey: UIApplicationLaunchOptionsURLKey]; 

     // Parse the URL 
     NSString* hostString = [launchURL host]; 

     blah blah blah... 

Funciona muy bien, pero necesito para iniciar la aplicación que llama (es decir, la aplicación que abre la URL). Entonces mi pregunta aquí es, ¿es posible?

He estado jugando con UIApplicationLaunchOptionsSourceApplicationKey pero no puedo iniciar de nuevo la aplicación por su aplicación Bundle ID. ¿Puedo?

También he intentado el launchApplicationWithIdentifier: indocumentado de UIApplication, pero necesito una solución real y parece que la solución solo funciona en el simulador.

¿Alguna idea? ¡Gracias!

+0

Estoy tratando de hacer algo muy similar, después de abrir mi aplicación de Safari, quiero volver a Safari (sin cargar una nueva URL). Quiero simplemente abrir Safari como si lo hubiera cambiado usando el selector de tareas. ¿Puede explicar el "método indocumentado" que utilizó para lograr esto? – Plasma

+0

Una solución en iPad es hacer que el usuario tenga en cuenta el gesto incorporado: * Deslizar horizontalmente cuatro dedos por la pantalla para volver a la aplicación anterior *. Parece ser solo para iPad, no en dispositivos portátiles. –

Respuesta

2

La única manera sería que ambas aplicaciones admitan un esquema de URL personalizado. Luego incrusta la URL del llamante en la URL de la otra aplicación.

Por ejemplo, supongamos que App2 desea llamar a App1 de forma que App1 pueda "devolver la llamada" a App2. Sería crear y abrir una URL como esta:

app1://?caller=app2%3A%2F%2Fblabla 

Al decodificar la parte caller se podrían obtener de vuelta la cadena app2://blabla que se podría, de nuevo abierto con openURL: a "devolver la llamada".

+0

Sí, me temo que es imposible sin que cada aplicación admita un esquema de URL personalizado. Solo quiero agotar todas las posibilidades, ¡gracias DarkDust! – zapador

+1

Debería haber alguna otra forma ... has visto la aplicación de Facebook ... vamos a la aplicación de Facebook para la autenticación y luego a la aplicación de Facebook abrimos nuestra aplicación ... incluso cuando nuestra aplicación no tiene un esquema de URL personalizado ... – Saurabh

+2

Eso es porque las aplicaciones se autentican con Facebook SSO (inicio de sesión único) registre su esquema de URL personalizado con Facebook. – Lance

Cuestiones relacionadas