Stack Overflown chiesto in this question:lancio applicazione se installato o reindirizzare per scaricare - finestre
Su ogni repo, GitHub ha un pulsante con l'etichetta "Clone in Desktop" (esempio: https://github.com/github/developer.github.com). Se hai installato GitHub per Mac, l'href è qualcosa come "github-mac: // openRepo/https://github.com/github/developer.github.com". Questo apre GitHub per Mac e offre di clonare il repository. Se non lo fai, l'href è "http://mac.github.io". Questa è una pagina di download per GitHub per Mac. Mi piacerebbe fare qualcosa di simile sul mio sito web: apri la mia app se installata e reindirizza per il download in caso contrario. Come può essere la cosa migliore da fare ?
La risposta era di circa Github Conduit, ma, per quanto ne so, Github Conduit è solo per Github for Mac.
Ho la stessa domanda, solo per i sistemi operativi Windows. Come fa GitHub a sapere se GitHub è installato su un computer o no?
Come deepcurious detto in their answer, abbiamo bisogno di utilizzare il seguente codice che controlla se un protocollo è iscritto:
$("a[href*='github-windows://']").click(function(e) {
var el = $(this);
setTimeout(function() {
window.location = el.data("data-href-alt");
}, 200);
// once you do the custom-uri, it should properly execute the handler, otherwise, the settimeout that you set before will kick in
window.location = el.data("href");
e.preventDefault();
});
e ho il seguente link HTML:
<a href="github-windows://openRepo/https://github.com/jquery/api.jqueryui.com" data-href-alt="https://www.example.com/app-not-installed">Clone in Desktop</a>
Se l'app è installata, Google Chrome mi fornisce una richiesta di protocollo esterno (di seguito), quindi presumo che dovrebbe funzionare (anche se non fa nulla sul mio computer). Ma, se l'app non è installata, non va alla pagina data-href-alt
.
Ad esempio, se cambio github-windows://
in some-uninstalled-app://
in tutte le istanze nel codice, il collegamento non fa nulla.
Sto solo supponendo, ma sapendo come funzionano i gestori di protocolli personalizzati, forse si scopre solo se il suo protocollo personalizzato è gestito. Se sì, la sua app inizierà. Se no, reindirizza. Quindi la tua domanda si riduce a come trovare se un determinato protocollo personalizzato ha un gestore installato per esso. Vedi https://stackoverflow.com/questions/24779312/simplest-cross-browser-check-if-protocol-handler-is-registered – sashoalm
http://stackoverflow.com/questions/836777/how-to-detect-browsers -protocol-handlers –
Penso che questo possa appartenere a [WebApps] (http://webapps.stackexchange.com). potresti avere più fortuna lì! ':' – sircapsalot