Les étapes décrites sur cette page expliquent comment créer rapidement une application iOS simple qui envoie des requêtes à l'API YouTube Data. Cet exemple montre comment récupérer des données sur la chaîne YouTube GoogleDevelopers. Le code inclut également des commentaires expliquant comment modifier la requête pour récupérer des données sur la chaîne YouTube de l'utilisateur actuel.
Prérequis
Pour exécuter ce guide de démarrage rapide, vous aurez besoin des éléments suivants:
- Xcode 8.0 ou version ultérieure
- Gestionnaire de dépendances CocoaPods.
- Accès à Internet et à un navigateur Web
- Un compte Google.
Étape 1: Activez l'API YouTube Data
-
Utilisez cet assistant pour créer ou sélectionner un projet dans la Google Developers Console et activer automatiquement l'API. Cliquez sur Continuer, puis sur Accéder aux identifiants.
-
Sur la page Créer des identifiants, cliquez sur le bouton Annuler.
-
En haut de la page, sélectionnez l'onglet OAuth consent screen (Écran d'autorisation OAuth). Sélectionnez une adresse e-mail, saisissez un nom de produit si ce n'est pas déjà fait, puis cliquez sur le bouton Enregistrer.
-
Sélectionnez l'onglet Identifiants, cliquez sur le bouton Créer des identifiants, puis sélectionnez ID client OAuth.
- Sélectionnez le type d'application iOS, saisissez "Guide de démarrage rapide de l'API YouTube Data", puis l'ID de groupe
com.example.QuickstartApp
. Cliquez ensuite sur le bouton Créer.
Étape 2: Préparez l'espace de travail
- Ouvrez Xcode et créez un projet :
- Cliquez sur Fichier > Nouveau > Projet, sélectionnez le modèle iOS > Application > Application Single View, puis cliquez sur Suivant.
- Définissez le nom du produit sur "QuickstartApp", l'identifiant de l'organisation sur "com.example" et le langage surObjective-C.
Sous l'identifiant de l'organisation, un identifiant de groupe généré doit correspondre à l'ID de groupe iOS (
com.example.QuickstartApp
) que vous avez saisi à l'étape 1.b. - Cliquez sur Suivant.
- Sélectionnez un répertoire de destination pour le projet, puis cliquez sur Créer.
- Fermez le projet en cliquant sur Fichier > Fermer le projet.
- Ouvrez une fenêtre Terminal et accédez au répertoire contenant le fichier
QuickstartApp.xcodeproj
que vous venez de créer. Exécutez les commandes suivantes pour créer le fichier Podfile, installer la bibliothèque et ouvrir le projet XCode obtenu:
cat << EOF > Podfile && platform :ios, '8.0' target 'QuickstartApp' do pod 'GoogleAPIClientForREST/YouTube', '~> 1.2.1' pod 'Google/SignIn', '~> 3.0.3' end EOF pod install && open QuickstartApp.xcworkspace
Dans le navigateur de projet XCode, sélectionnez le nœud de projet "QuickstartApp". Cliquez ensuite sur l'élément de menu File > Add files to "QuickstartApp" (Fichier > Ajouter des fichiers à "QuickstartApp").
Recherchez le fichier
GoogleService-Info.plist
téléchargé précédemment et sélectionnez-le. Cliquez sur le bouton Options.Effectuez les sélections suivantes dans la fenêtre des options, puis cliquez sur le bouton Add (Ajouter) :
- Cochez la case Copier les éléments si nécessaire.
- Vérifiez toutes les cibles listées dans la section Ajouter aux cibles.
Après avoir sélectionné le nœud du projet, sélectionnez "QuickstartApp" dans la section TARGETS (TARGETS), comme illustré dans les deux images ci-dessous:
Cliquez sur la zone affichée sur cette capture d'écran :
Sélectionnez ensuite la cible appropriée :
Sélectionnez l'onglet Infos, puis développez la section Types d'URL.
Cliquez sur le bouton + et ajoutez un schéma d'URL pour votre ID client inversé. Pour trouver cette valeur, ouvrez le fichier de configuration
GoogleService-Info.plist
que vous avez sélectionné à l'étape 2.f. Recherchez la clé REVERSED_CLIENT_ID. Copiez la valeur de cette clé et collez-la dans la zone Schémas d'URL sur la page de configuration. Laissez les autres champs vides.Recompilez le projet:
- Cliquez sur Product > Clean Build Folder (Produit > Nettoyer le dossier de compilation) en maintenant la touche option enfoncée.
- Cliquez sur Product > Build (Produit > Créer).
Étape 3: Configurez l'exemple
Remplacez le contenu des fichiers suivants par le code fourni:#import <UIKit/UIKit.h> @import GoogleSignIn; @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window; @end
#import "AppDelegate.h" @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Initialize Google sign-in. [GIDSignIn sharedInstance].clientID = @"<YOUR_CLIENT_ID>"; return YES; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [[GIDSignIn sharedInstance] handleURL:url sourceApplication:sourceApplication annotation:annotation]; } @end
#import <UIKit/UIKit.h> @import GoogleSignIn; #import <GTLRYouTube.h> @interface ViewController : UIViewController <GIDSignInDelegate, GIDSignInUIDelegate> @property (nonatomic, strong) IBOutlet GIDSignInButton *signInButton; @property (nonatomic, strong) UITextView *output; @property (nonatomic, strong) GTLRYouTubeService *service; @end
#import "ViewController.h" @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Configure Google Sign-in. GIDSignIn* signIn = [GIDSignIn sharedInstance]; signIn.delegate = self; signIn.uiDelegate = self; signIn.scopes = [NSArray arrayWithObjects:kGTLRAuthScopeYouTubeReadonly, nil]; [signIn signInSilently]; // Add the sign-in button. self.signInButton = [[GIDSignInButton alloc] init]; [self.view addSubview:self.signInButton]; // Create a UITextView to display output. self.output = [[UITextView alloc] initWithFrame:self.view.bounds]; self.output.editable = false; self.output.contentInset = UIEdgeInsetsMake(20.0, 0.0, 20.0, 0.0); self.output.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; self.output.hidden = true; [self.view addSubview:self.output]; // Initialize the service object. self.service = [[GTLRYouTubeService alloc] init]; } - (void)signIn:(GIDSignIn *)signIn didSignInForUser:(GIDGoogleUser *)user withError:(NSError *)error { if (error != nil) { [self showAlert:@"Authentication Error" message:error.localizedDescription]; self.service.authorizer = nil; } else { self.signInButton.hidden = true; self.output.hidden = false; self.service.authorizer = user.authentication.fetcherAuthorizer; [self fetchChannelResource]; } } // Construct a query and retrieve the channel resource for the GoogleDevelopers // YouTube channel. Display the channel title, description, and view count. - (void)fetchChannelResource { GTLRYouTubeQuery_ChannelsList *query = [GTLRYouTubeQuery_ChannelsList queryWithPart:@"snippet,statistics"]; query.identifier = @"UC_x5XG1OV2P6uZZ5FSM9Ttw"; // To retrieve data for the current user's channel, comment out the previous // line (query.identifier ...) and uncomment the next line (query.mine ...). // query.mine = true; [self.service executeQuery:query delegate:self didFinishSelector:@selector(displayResultWithTicket:finishedWithObject:error:)]; } // Process the response and display output - (void)displayResultWithTicket:(GTLRServiceTicket *)ticket finishedWithObject:(GTLRYouTube_ChannelListResponse *)channels error:(NSError *)error { if (error == nil) { NSMutableString *output = [[NSMutableString alloc] init]; if (channels.items.count > 0) { [output appendString:@"Channel information:\n"]; for (GTLRYouTube_Channel *channel in channels) { NSString *title = channel.snippet.title; NSString *description = channel.snippet.description; NSNumber *viewCount = channel.statistics.viewCount; [output appendFormat:@"Title: %@\nDescription: %@\nViewCount: %@\n", title, description, viewCount]; } } else { [output appendString:@"Channel not found."]; } self.output.text = output; } else { [self showAlert:@"Error" message:error.localizedDescription]; } } // Helper for showing an alert - (void)showAlert:(NSString *)title message:(NSString *)message { UIAlertController *alert = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { [alert dismissViewControllerAnimated:YES completion:nil]; }]; [alert addAction:ok]; [self presentViewController:alert animated:YES completion:nil]; } @end
Étape 4: Exécutez l'exemple
Basculez vers le schéma QuickstartApp en cliquant sur Product > Scheme > QuickstartApp (Produit > Schéma > QuickstartApp) et exécutez l'exemple (Cmd+R) à l'aide du simulateur d'appareil ou d'un appareil configuré. La première fois que vous exécuterez l'exemple, vous serez invité à vous connecter à votre compte Google et à autoriser l'accès.
Remarques
- Les informations d'autorisation étant stockées dans votre trousseau, les exécutions ultérieures ne demanderont pas d'autorisation.