2009-11-22 12 views
17

Esto es nuevo para mí como desarrollador de escritorio.¿Cómo inicia el sitio web Apple iTunes la aplicación iTunes en mi computadora cuando hago clic en el botón azul "Iniciar iTunes"?

Si pudiera descubrir cómo se logra esto, puede ser relevante para algunas investigaciones que estoy haciendo, específicamente sobre cómo migrar aplicaciones de escritorio gruesas a una implementación web.

Los gráficos más orientados a formularios y livianos que puedo imaginar, pero los gráficos en 3D pesados ​​aún requieren alguna forma de aplicación que no sea del navegador.

Por lo que puedo determinar, iTunes instala alguna forma de controlador de protocolo nuevo en mi máquina, que corresponde a "itms", en lugar de "http".

Esto es genial y misterioso para mí, casi mágico. Cualquier ayuda o sugerencia para materiales y/o recursos de lectura adicionales sería muy bienvenida.

+0

¿Qué plataforma? – arul

+0

Ventanas por el momento, pero tengo ideas ... – kmontgom

Respuesta

14

Puede registrar el "controladores de protocolo" con algunos navegadores Creo que hay un lugar en el sistema operativo donde puedes regsiter el tuyo.

Ver

la creación de otras nuevas en Firefox: http://ajaxian.com/archives/creating-custom-protocol-handlers-with-html-5-and-firefox

en Safari: http://discussions.apple.com/thread.jspa?threadID=1280989

especiales "controladores de protocolo móviles" se utilizan ampliamente en el iPhone/iPod para iniciar la marcación del teléfono, el envío de correo electrónico, Google Maps y así sucesivamente ... http://www.iphonedevfaq.com/index.php?title=Protocols

He aquí un ejemplo de cómo para volver a configurar el manejador de protocolo mailto: para activar Gmail en lugar de una externa cliente de correo: http://lifehacker.com/392287/set-firefox-3-to-launch-gmail-for-mailto-links

+1

¡Gracias! Estoy investigando los enlaces ahora mismo. – kmontgom

+0

Si desea agregar su propio manejador de protocolo, debe configurar su navegador web, y posiblemente su shell de sistema operativo/UI (supongo que así se haría con IE y Safari). Por razones de seguridad, sería peligroso para permitir que cualquier javascript antiguo descargado de la web reconfigure su navegador para activar aplicaciones en su escritorio. – daf

+0

en chrome: http://updates.html5rocks.com/2011/06/Registering-a-custom-protocol-handler –

7

Simple.

<a href="itunes:///">Open iTunes</a> 

mayoría de las aplicaciones Hoy en día tienen "esquemas de URL personalizados" por ejemplo - Coda (http://panic.com/coda) se puede añadir fragmentos de código a través de:

<a href="codaclips:///<<**Title:NAME**>>blabla">Add Clip</a> 
+0

Gracias por la información. Ahora tengo que profundizar en los manejadores de protocolo y cómo crearlos. ¿Alguna sugerencia? – kmontgom

+0

para su propia aplicación? – tarnfeld

+0

Sí. Como dije, gran parte de la funcionalidad puede acomodarse directamente en el navegador a través de HTML/AJAX o Flex o Silverlight. Son los gráficos de servicio pesado que probablemente no puedan ser. En este caso, quiero lanzar una aplicación separada preinstalada que maneje específicamente las cosas en 3D. Por trabajo pesado me refiero a decenas de millones de vértices y millones de quads/triángulos. – kmontgom

1

En Windows, esto se denomina controlador de protocolo conectable. This article on CodeProject muestra cómo implementar un controlador de protocolo conectable en Windows.

Nota, esto es más complicado que registrar un nuevo protocolo en el registro, como myprotocol: // y hacer que inicie un exe específico cada vez que se hace clic en un anclaje myprotocol: //.

En realidad, permite que su aplicación reciba y procese la solicitud y cree dinámicamente datos de respuesta. Si su protocolo también se llamará programáticamente, esto generalmente es importante.

Esto puede ser excesivo para su situación, sin embargo, es útil saberlo.

0

Solo un seguimiento para quienes respondieron.

Resulta que la situación es algo complicada. Aunque about: config está disponible para Firefox, hacer las entradas adecuadas simplemente no funciona.

Este enlace: http://support.mozilla.com/tiki-view_forum_thread.php?locale=fr&forumId=1&comments_parentId=74068 describe problemas para Linux, pero puedo verificar que también ocurren los mismos problemas en Windows.

Para que esto funcione bajo Windows, tuve que crear un archivo .reg que contiene la información correspondiente, de acuerdo con este enlace: http://kb.mozillazine.org/Register_protocol#Windows

ahora funciona!

Gracias por todas las respuestas.

1

La manera más fácil es registrar un tipo de archivo en su aplicación (también llamado Asociación de archivos), por ejemplo ".myp" y cuando el usuario presiona "iniciar myapp" en el sitio descarga un archivo "startapp.myp".

Windows observará la extensión del archivo y descubrirá que está registrado en su aplicación y comenzará su aplicación con el archivo como un parámetro de comando. Su aplicación puede leer el archivo y hacer cosas dependiendo de su contenido.

Éstos son código para registrar un tipo de archivo a su aplicación de hecho en VB.Net:
(ejemplo se toma de http://www.developerfusion.com/article/36/file-assocation/2/ sino que se copia aquí por razones persiste, verifique el sitio original para comentarios)

'// Registry windows api calls 
Private Declare Function RegCreateKey& Lib "advapi32.DLL" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpszSubKey As String, ByVal lphKey As Long) 
Private Declare Function RegSetValue& Lib "advapi32.DLL" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpszSubKey As String, ByVal fdwType As Long, ByVal lpszValue As String, ByVal dwLength As Long) 
'// Required constants 
Private Const HKEY_CLASSES_ROOT = &H80000000 
Private Const MAX_PATH = 256& 
Private Const REG_SZ = 1 

'// procedure you call to associate the tmg extension with your program. 
Private Sub MakeDefault() 
    Dim sKeyName As String '// Holds Key Name in registry. 
    Dim sKeyValue As String '// Holds Key Value in registry. 
    Dim ret As Long '// Holds error status if any from API calls. 
    Dim lphKey As Long '// Holds created key handle from RegCreateKey. 

    '// This creates a Root entry called "TextMagic" 
    sKeyName = "TextMagic" '// Application Name 
    sKeyValue = "TextMagic Document" '// File Description 
    ret = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey) 
    ret = RegSetValue&(lphKey&, Empty, REG_SZ, sKeyValue, 0&) 

    '// This creates a Root entry called .tmg associated with "TextMagic". 
    sKeyName = ".tmg" '// File Extension 
    sKeyValue = "TextMagic" '// Application Name 
    ret = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey) 

    ret = RegSetValue&(lphKey, Empty, REG_SZ, sKeyValue, 0&) 

    '//This sets the command line for "TextMagic". 
    sKeyName = "TextMagic" '// Application Name 
    If Right$(App.Path, 1) = "\" Then 
     sKeyValue = App.Path & App.EXEName & ".exe %1" '// Application Path 
    Else 
     sKeyValue = App.Path & "\" & App.EXEName & ".exe %1" '// Application Path 
    End If 
    ret = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey) 
    ret = RegSetValue&(lphKey, "shell\open\command", REG_SZ, sKeyValue, MAX_PATH) 
End Sub 

Private Sub Form_Load() 
    '// ensure we only register once. When debugging etc, remove the SaveSetting line, so your program will 
    '// always attempt to register the file extension 
    If GetSetting(App.Title, "Settings", "RegisteredFile", 0) = 0 Then 
     '// associate tmg extension with this app 
     MakeDefault() 
     SaveSetting(App.Title, "Settings", "RegisteredFile", 1) 
    End If 
    '// check command line argument: 
    If Command$ <> Empty Then 
     '// we have a file to open 
     '// Fetch the file name from Command$ and then read the file if needed. 
    End If 

End Sub 
Cuestiones relacionadas