Existe-t-il un schéma d'URL permettant d'ouvrir l'application YouTube iOS avec une requête de recherche spécifiée?
J'ai essayé:
NSString *stringURL = @"http://www.youtube.com/results?search_query=foo";
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];
Mais cela ouvrira Safari au lieu de l'application YouTube.
Vous ne pouvez pas utiliser ce http://www.youtube.com/results?search_query=foo
pour ouvrir une application youtube. Si vous utilisez l'URL ci-dessus, le safari sera ouvert au lieu de l'application youtube.
Il n'y a que trois URLSchemes disponibles pour ouvrir l'application youtube:
http://www.youtube.com/watch?v=VIDEO_IDENTIFIER
http://www.youtube.com/v/VIDEO_IDENTIFIER
youtube://
Référence: iPhoneURLScheme
cela fonctionne très bien dans iOS 9
youtube://www.youtube.com/channel/<channel-id>
Mise à jour pour Swift 3 et iOS 10+
OK, il y a deux étapes faciles pour y parvenir:
Tout d'abord, vous devez modifier Info.plist
pour lister Youtube
avec LSApplicationQueriesSchemes
. Ouvrez simplement Info.plist
en tant que code source et collez ceci:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>youtube</string>
</array>
Après cela, vous pouvez ouvrir n’importe quelle URL youtube dans l’application Youtube en remplaçant simplement https://
par youtube://
. Voici un code complet, vous pouvez lier ce code à n’importe quel bouton de votre action:
@IBAction func YoutubeAction() {
let YoutubeQuery = "Your Query"
let escapedYoutubeQuery = YoutubeQuery.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)
let appURL = NSURL(string: "youtube://www.youtube.com/results?search_query=\(escapedYoutubeQuery!)")!
let webURL = NSURL(string: "https://www.youtube.com/results?search_query=\(escapedYoutubeQuery!)")!
let application = UIApplication.shared
if application.canOpenURL(appURL as URL) {
application.open(appURL as URL)
} else {
// if Youtube app is not installed, open URL inside Safari
application.open(webURL as URL)
}
}
Si un schéma d'URL de recherche d'application YouTube est pris en charge, il n'est pas bien documenté (et sera probablement fragile). Vous pouvez ouvrir l'application YouTube directement à l'aide de:
youtube://
Vous pouvez lire des vidéos spécifiques en utilisant:
http://www.youtube.com/watch?v=VIDEO_IDENTIFIER
J'abordais ce problème en interrogeant directement la liste et en affichant les résultats dans une vue Web. Idéalement, vous ne voulez pas reproduire l'application YouTube (il y en a déjà une sur l'App Store), il serait donc préférable de trouver l'identifiant vidéo spécifique sur une autre route.
Il peut être ouvert en utilisant
vnd.youtube:///
(notez que trois barres obliques sont définies)
Si vous souhaitez ouvrir l'application YouTube iOS avec une requête de recherche, utilisez cette syntaxe:
youtube:///results?q=search%20query
(remplacez search%20query
par des termes de recherche sans guillemets)
Remarque: la syntaxe ci-dessus comporte trois barres obliques au lieu de deux.
(Fonctionne à partir de 20160420)
Pour iOS 11 cela devrait fonctionner:
youtube://www.youtube.com/<channel-id>
Vous pouvez ouvrir l'application YouTube iOS de cette manière:
Vidéos
<a href="youtube://dQw4w9WgXcQ">Open in YouTube</a>
<a href="youtube://watch?v=dQw4w9WgXcQ">Open in YouTube</a>
Utilisateurs et chaînes
Pas possible pour le moment. (Source: tests approfondis.)
Listes de lecture
Inconnu/Non testé
Selon la dernière documentation destinée aux développeurs Apple, YouTube ne peut pas être ouvert à l'aide du schéma youtube: // url, mais doit être conforme aux indications du lien ci-dessous.
Pour ouvrir un lien Youtube qui s'ouvre dans l'application, à partir d'une page Web (safari ou n'importe quel navigateur), et que cette procédure fonctionne également à partir d'une fonction javascript, vous devez envoyer une requête de formulaire appropriée à Youtube:
<form id='form' action='https://m.youtube.com/watch?v=' method='get'>
<input type='hidden' name='v' id='v' value='XgQrzkvvOO4'>
</form>
Ceci est pour les sites mobiles. Pour les navigateurs normaux, changez "' https://m.youtube.com/watch?v= " en "' https://youtube.com/watch?v= "
Si vous avez besoin d’un lien ou d’un bouton, changez simplement le type de saisie en bouton.
EDIT: cette méthode ne fonctionne plus sur iphone depuis les dernières modifications IOS et YT. Toujours à la recherche d'une méthode pour ouvrir l'application Youtube à partir d'un script, sans que le navigateur ne le demande, oui ou non.