Как веб-сайт Apple iTunes запускает приложение iTunes на моем компьютере, когда я нажимаю синюю кнопку "Запустить iTunes"?
Это новое для меня как разработчик настольных систем.
Если бы я мог понять, как это делается, это может иметь значение для некоторых исследований, которые я делаю, в частности, как переносить толстые настольные приложения в веб-реализацию.
Чем больше форм-ориентированная и легкая графика я могу понять, но и тяжелая 3D-графика по-прежнему требует неформального приложения.
Как я могу определить, iTunes устанавливает на моей машине какой-то новый обработчик протокола, соответствующий "itms" вместо "http".
Это круто и загадочно для меня, почти волшебное. Любая помощь или предложения по дополнительным материалам и/или ресурсам для чтения будут приветствоваться.
Ответы
Ответ 1
Вы можете зарегистрировать "обработчики протоколов" с некоторыми браузерами. Я думаю, там есть место в операционной системе, где вы можете зарегистрироваться самостоятельно.
См
Создание новых в firefox: http://ajaxian.com/archives/creating-custom-protocol-handlers-with-html-5-and-firefox
В сафари: http://discussions.apple.com/thread.jspa?threadID=1280989
Специальные "обработчики мобильных протоколов" широко используются в iPhone/iPod для запуска телефонного дозвона, отправки электронной почты, карт Google и т.д. http://www.iphonedevfaq.com/index.php?title=Protocols
Здесь пример того, как перенастроить обработчик протокола mailto:
, чтобы вызвать gmail, а не внешний почтовый клиент: http://lifehacker.com/392287/set-firefox-3-to-launch-gmail-for-mailto-links
Ответ 2
Simple.
<a href="itunes:///">Open iTunes</a>
В большинстве приложений сейчас есть "пользовательские схемы URL",
Например: Coda (http://panic.com/coda), вы можете добавить фрагменты кода через:
<a href="codaclips:///<<**Title:NAME**>>blabla">Add Clip</a>
Ответ 3
В Windows это называется обработчиком подключаемого протокола. В этой статье о CodeProject показано, как реализовать подключаемый обработчик протокола в Windows.
Обратите внимание, что это больше связано с регистрацией нового протокола в реестре, например myprotocol://и при запуске конкретного exe всякий раз, когда нажимается myprotocol://anchor.
Фактически это позволяет вашему приложению получать и обрабатывать запрос и динамически создавать данные ответа. Если ваш протокол также будет называться программно, это обычно важно.
Это может быть излишним для вашей ситуации, но это удобно знать.
Ответ 4
Самый простой способ - зарегистрировать тип файла в вашем приложении (также называемый File Association), например ".myp", и когда пользователь нажимает "start myapp" на сайте, он загружает файл "startapp.myp".
Затем Windows просмотрит расширение файла и обнаружит, что оно зарегистрировано в вашем приложении и запустило ваше приложение с файлом в качестве параметра команды. Затем ваше приложение может читать файл и делать материал в зависимости от его содержимого.
Вот код для регистрации filetype для вашего приложения, сделанного в VB.Net:
(Пример взята из http://www.developerfusion.com/article/36/file-assocation/2/, но скопирована здесь для постоянной причины, проверьте исходный сайт для комментариев)
'// 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
Ответ 5
Просто последующие действия для тех, кто ответил.
Оказывается, что ситуация несколько сложная. Хотя примерно: config доступен для FireFox, поэтому соответствующие записи просто не работают.
Эта ссылка: http://support.mozilla.com/tiki-view_forum_thread.php?locale=fr&forumId=1&comments_parentId=74068 описывает проблемы для Linux, но я могу проверить, что те же проблемы также возникают в Windows.
Чтобы сделать эту работу под Windows, мне пришлось создать файл .REG, который содержит соответствующую информацию, по этой ссылке: http://kb.mozillazine.org/Register_protocol#Windows
Теперь он работает!
Спасибо за все ответы.