2009-11-22 2 views
17

Das ist neu für mich als Desktop-Entwickler.Wie startet die Apple iTunes-Website die iTunes-Anwendung auf meinem Computer, wenn ich auf die blaue Schaltfläche "Launch iTunes" klicke?

Wenn ich herausfinden könnte, wie dies erreicht wird, könnte es relevant für einige Forschung, die ich mache, speziell wie migriert dicke Desktop-Anwendungen zu einer Web-Implementierung.

Je mehr Formen orientierte und leichte Grafiken kann ich herausfinden, aber schwergewichtige 3D-Grafik erfordert immer noch eine Form von Nicht-Browser-Anwendung.

So gut wie ich feststellen kann, installiert iTunes eine Form von neuen Protokoll-Handler auf meinem Rechner, entsprechend "itms", anstelle von "http".

Das ist cool und geheimnisvoll für mich, fast schon magisch. Jede Hilfe oder Vorschläge für zusätzliches Lesematerial und/oder Ressourcen wäre sehr willkommen.

+0

Welche Plattform? – arul

+0

Windows für das Geschenk, aber ich habe Ideen ... – kmontgom

Antwort

14

Sie Register "Protokoll-Handler" können mit einigen Browsern. Ich denke, es gibt einen Platz im Betriebssystem, wo Sie Ihre eigenen registrieren können.

Siehe

neue zu schaffen in Firefox: http://ajaxian.com/archives/creating-custom-protocol-handlers-with-html-5-and-firefox

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

spezielle "mobile Protokoll-Handler" ausgiebig auf dem iPhone/iPod verwendet, um die Wählhilfe zu starten, E-Mail senden, google maps und so weiter ... http://www.iphonedevfaq.com/index.php?title=Protocols

Hier ist ein Beispiel dafür, wie die mailto: Protokollhandler rekonfigurieren gmail auszulösen, anstatt einem externen E-Mail-Client: http://lifehacker.com/392287/set-firefox-3-to-launch-gmail-for-mailto-links

+1

Vielen Dank! Ich recherchiere gerade die Links. – kmontgom

+0

Wenn Sie Ihren eigenen Protokoll-Handler hinzufügen möchten, müssen Sie Ihren Web-Browser konfigurieren - und möglicherweise Ihre Betriebssystem-/UI-Shell (ich vermute, dass dies mit IE & Safari gemacht würde.) Aus Sicherheitsgründen wäre es gefährlich um ein altes JavaScript zuzulassen, das aus dem Internet heruntergeladen wurde, um Ihren Browser so zu konfigurieren, dass Apps auf Ihrem Desktop ausgelöst werden. – daf

+0

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

7

Einfach.

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

meisten Apps jetzt-a-Tage haben "Custom URL Schemes" Für Beispiel - Coda (http://panic.com/coda) Sie Code-Schnipsel über hinzufügen:

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

Danke für die Info. Jetzt muss ich in Protokollhandler eintauchen und wie man sie erstellt. Irgendwelche Vorschläge? – kmontgom

+0

für Ihre eigene App? – tarnfeld

+0

Ja. Wie gesagt, viele Funktionen können direkt im Browser über HTML/AJAX oder Flex oder Silverlight aufgenommen werden. Es ist die Hochleistungsgrafik, die wahrscheinlich nicht sein kann. In diesem Fall möchte ich eine separate, vorinstallierte Anwendung starten, die speziell das 3D-Material behandelt. Unter Schwerlast verstehe ich Dutzende Millionen Eckpunkte und Millionen Quads/Dreiecke. – kmontgom

1

In Windows wird dies als Pluggable Protocol Handler bezeichnet. This article on CodeProject zeigt, wie ein steckbarer Protokollhandler unter Windows implementiert wird.

Hinweis, dies ist mehr beteiligt als nur ein neues Protokoll in der Registrierung registrieren, wie Myprotocol: // und damit es eine bestimmte exe immer wenn ein Myprotocol: // Anker geklickt wird.

Es ermöglicht Ihrer Anwendung tatsächlich, die Anforderung zu empfangen und zu verarbeiten und Antwortdaten dynamisch zu erstellen. Wenn Ihr Protokoll auch programmgesteuert aufgerufen wird, ist dies in der Regel wichtig.

Dies kann für Ihre Situation Overkill sein, aber es ist praktisch zu wissen.

0

Nur ein Follow-up für diejenigen, die geantwortet haben.

Stellt sich heraus, dass die Situation etwas kompliziert ist. Obwohl about: config für FireFox verfügbar ist, funktionieren die entsprechenden Einträge nicht.

Dieser Link: http://support.mozilla.com/tiki-view_forum_thread.php?locale=fr&forumId=1&comments_parentId=74068 beschreibt Probleme für Linux, aber ich kann überprüfen, dass die gleichen Probleme auch unter Windows auftreten.

Um diese Arbeit unter Windows zu machen, ich hatte eine REG-Datei zu erstellen, die die entsprechenden Informationen enthält nach diesem Link: http://kb.mozillazine.org/Register_protocol#Windows

Jetzt funktioniert es!

Vielen Dank für alle Antworten.

1

Der einfachste Weg ist, einen Dateityp zu Ihrer Anwendung (auch Dateizuordnung genannt) zu registrieren, zum Beispiel ".myp" und wenn der Benutzer "start myapp" auf der Site drückt, lädt er eine Datei "startapp.myp" herunter.

Windows wird dann auf die Erweiterung der Datei schauen und feststellen, dass sie in Ihrer App registriert ist und starten Sie Ihre Anwendung mit der Datei als Befehlsparameter. Ihre App kann dann die Datei lesen und je nach Inhalt Inhalte erstellen.

Hier sind Code eine Datei des Typs Ihrer Anwendung in VB.Net getan registrieren:
(Beispiel aus http://www.developerfusion.com/article/36/file-assocation/2/ genommen wird, aber hier für persistenten Grund kopiert, für Kommentare Original-Website überprüfen)

'// 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 
Verwandte Themen