2011-09-13 13 views
8

estoy registrando una aplicación para manejar se abre a través de URL y estoy confundido conaplicación: openURL: sourceApplication: anotación devuelve ningún frente SÍ

application:openURL:sourceApplication:annotation

De acuerdo con la documentation debe volver SÍ si se puede apoyar la URL y NO si no. ¿Para qué sirve esto? Estoy devolviendo NO en el caso de que la URL esté mal formada o no sea compatible, pero la aplicación aún se abre como si nada hubiera salido mal. ¿Quién escucha la devolución BOOL y qué hacen con ella? ¿Hay alguna forma de evitar que la aplicación se abra si la URL está mal formada o no es compatible?

Respuesta

4

La documentación dice que devuelve YES si abrió correctamente el URI y NO si no lo hizo. Tenga en cuenta que "tuvo éxito o no se pudo abrir" es semánticamente diferente de "puede o no puede abrir". Lamentablemente, no hay forma de evitar que la aplicación se inicie: si registra un esquema, se lanzará independientemente de si el resto del URI está formateado correctamente.

UIApplication tiene dos métodos: canOpenURL: y openURL:. El primero SOLO comprueba si el esquema es compatible (no el URL completo), dónde es el último que inicia la aplicación y devuelve el resultado del delegado de la aplicación.

Así que para responder a su pregunta: la otra aplicación que llama [[UIApplication sharedApplication] openURL:url] es el que escucha a consecuencia de su delegado

+0

interesante, por lo que cuando/cómo debe responder la otra aplicación a la respuesta? En ese punto, el usuario está en la aplicación que no sabe cómo manejar la URL pasada –

+0

Eso es correcto. En ese momento, el usuario está en la otra aplicación y no volverá a la suya a menos que la otra aplicación lance específicamente la suya o el usuario vuelva a cambiar manualmente. No estoy seguro de cuáles fueron sus intenciones al crear esta API, pero supongo que fue creada principalmente para la comunicación entre aplicaciones del mismo desarrollador que "juegan muy bien" entre ellas. Esto es una suposición, no creo que puedas encontrar documentación sobre por qué Apple tiene este enfoque. También podría ser una API obsoleta que era "lo mejor que podían hacer" sobre las versiones heredadas de iOS. – Nick

+1

Esa es una suposición razonable. Gracias por la entrada, marcaré esto como respondido con la creencia de que es principalmente un valor de retorno inútil. –

Cuestiones relacionadas