2012-09-20 11 views
9

Aunque la aplicación YouTube ya no es una aplicación incorporada de Apple, parece que al tocar un enlace de YouTube (en el correo, por ejemplo), que comienza con http://www.youtube.com, se abre YouTube aplicación de inmediato.Iniciar aplicación personalizada con URL por dominio

¿Hay alguna manera de hacerlo para aplicaciones personalizadas en iOS 6? Solo sé de esquemas personalizados como la forma de lanzar una aplicación a través de la URL.

+0

[Aquí] (http://www.absoluteripple.com/1/post/2012/02/using-custom-url-scheme-to-launch- application.html) es el enlace que intenté publicar previamente en mi respuesta que se eliminó. Lo siento, @ChrisF ... todavía estoy aprendiendo las cuerdas. – codeqi

+0

He publicado una respuesta con tanta profundidad como creo que puede necesitar. Seguí exactamente los mismos pasos cuando estaba registrando mi aplicación para una URL personalizada. ¿Puedes ver si mi respuesta a continuación responde tu pregunta? – SashaZd

+0

@SashaZd Su respuesta en profundidad no tiene nada que ver con la respuesta, ya que no explica cómo la aplicación de YouTube hace lo que hace. –

Respuesta

2

No estoy seguro de entender su pregunta, pero aquí está mi intento de respuesta. Usted pregunta si hay una forma de abrir aplicaciones de terceros desde otra aplicación. La respuesta es que puede si la aplicación ha implementado un esquema de URL personalizado (consulte here y navegue a la sección Comunicación con otras aplicaciones).

Pero también pareces decir que ya sabes sobre esto. En ese caso, estoy bastante seguro de que no hay otra manera.

0

Imagino que la aplicación de correo nativa utiliza el mismo método que todas las aplicaciones para abrir URL (que abrirá una aplicación o usará Mobile Safari para completar la solicitud si ninguna aplicación instalada puede procesarla).

Usted debe ser capaz de lograr el mismo resultado utilizando la siguiente:

NSString *youtubeURL = @"http://www.youtube.com/watch?v=c2JTu22qxms"; 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:youtubeURL]]; 

Esto abrirá la aplicación de YouTube si se instala o usar Safari para reproducir el vídeo si la aplicación de YouTube no está instalado.

---- ----- ACTUALIZACIÓN

decidí mirar en cómo es exactamente la aplicación de YouTube lo hace.

¡He encontrado algo interesante!

Estas son las direcciones URL de la aplicación de YouTube declara:

  • fb [appID]

  • vnd.youtube

  • youtube

Esto implica que http://www.youtube.com redirecciones la solicitud a una de las URL en el li S t. Pero cuando lo intento, no veo que Mobile Safari se abra y luego se redirecciona.

Seguiré investigando, es muy intrigante.

+0

La pregunta es cómo imitar este comportamiento para aplicaciones personalizadas que no sean de youtube. – Danra

+0

@Danra ¡tienes toda la razón! Me confundí con la fraseología. – Zebs

2

Para registrar un tipo de URL para su aplicación

Incluir la clave CFBundleURLTypes en el archivo Info.plist de su aplicación. La clave CFBundleURLTypes contiene una matriz de diccionarios, cada uno de los cuales define un esquema de URL compatible con la aplicación.

Keys and values of the CFBundleURLTypes property

llamada la URL (registrado como arriba)

NSURL *myURL = [NSURL URLWithString:@"todolist://www.acme.com?Quarterly%20Report#200806231300"]; 
[[UIApplication sharedApplication] openURL:myURL]; 

llamadas mango para Custom esquemas de URL

Una aplicación que tiene su esquema de URL propio personalizado debe ser capaz de para manejar las URL que se le pasan. Todas las URL se pasan al delegado de su aplicación, ya sea en el momento del lanzamiento o mientras se ejecuta su aplicación o en segundo plano. Para gestionar las URL entrantes, su delegado debe implementar los siguientes métodos:

Utilice los métodos application:willFinishLaunchingWithOptions: y application:didFinishLaunchingWithOptions: para recuperar información sobre la URL y decidir si desea abrirla. Si alguno de los métodos devuelve NO, no se llama al código de manejo de URL de su aplicación. En iOS 4.2 y posterior, use el método application:openURL:sourceApplication:annotation: para abrir el archivo. En iOS 4.1 y versiones anteriores, use el método application:handleOpenURL: para abrir el archivo. Si su aplicación no se está ejecutando cuando llega una solicitud de URL, se lanza y se mueve al primer plano para que pueda abrir la URL. La implementación de su método application:willFinishLaunchingWithOptions: o application:didFinishLaunchingWithOptions: debe recuperar la URL de su diccionario de opciones y determinar si la aplicación puede abrirla. Si puede, devuelva SÍ y deje que su método application:openURL:sourceApplication:annotation: (o application:handleOpenURL:) maneje la apertura real de la URL. (Si implementa ambos métodos, ambos deben devolver SÍ antes de que se pueda abrir la URL).

Si su aplicación se está ejecutando pero está en segundo plano o suspendida cuando llega una solicitud de URL, se mueve al primer plano para abrir URL. Poco después, el sistema llama al application:openURL:sourceApplication:annotation: del delegado para verificar la URL y abrirla. Si su delegado no implementa este método (o la versión actual del sistema es iOS 4.1 o anterior), el sistema llama al método application:handleOpenURL: de su delegado.

Nota

Si dos o más solicitudes se han registrado la misma URL personalizada, no hay Garantía de la aplicación que el IOS se abrirá si la URL personalizada se llama.

Lectura adicional

iOS App Programming Guide :: Advanced Tips and Trics

+0

Gracias, he mencionado en la pregunta que conozco esquemas de URL personalizados, y estoy buscando una manera de prescindir de ellos, al igual que lo hace en YouTube. – Danra

+1

Youtube usa esquemas de url personalizados. ¿Qué te hace pensar que no? ¿El www.youtube.com/watch? es el esquema de URL personalizado asignado a YouTube – SashaZd

+0

¿Qué te hace pensar que 'www.youtube.com/watch?' es un esquema de URL? – Bogdacutu

Cuestiones relacionadas