Guide de démarrage rapide pour iOS

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 qui expliquent 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 devez disposer des éléments suivants :

  • Xcode 8.0 ou version ultérieure
  • CocoaPods CocoaPods
  • Accès à Internet et à un navigateur Web
  • Un compte Google

Étape 1 : Activer l'API YouTube Data

  1. 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.

  2. Sur la page Créer des identifiants, cliquez sur le bouton Annuler.

  3. En haut de la page, sélectionnez l'onglet OAuth consent screen (Écran de consentement OAuth). Sélectionnez une adresse e-mail, saisissez un nom de produit s'il n'est pas déjà défini, puis cliquez sur le bouton Enregistrer.

  4. Sélectionnez l'onglet Identifiants , cliquez sur le bouton Créer des identifiants , puis sélectionnez ID client OAuth.

  5. Sélectionnez le type d'application iOS, saisissez le nom "YouTube Data API Quickstart" (Démarrage rapide de l'API YouTube Data), l'ID du bundle com.example.QuickstartApp, puis cliquez sur le bouton Créer.

Étape 2 : Préparer l'espace de travail

  1. Ouvrez Xcode et créez un projet :
    1. Cliquez sur File > New > Project (Fichier > Nouveau > Projet), sélectionnez le modèle iOS > Application > Single View Application (iOS > Application > Application à vue unique), puis cliquez sur Next (Suivant).
    2. Définissez le Product Name (Nom du produit) sur "QuickstartApp", l'Organization Identifier (Identifiant de l'organisation) sur "com.example" et la Language (Langue) sur Objective-C. Sous l'identifiant de l'organisation, vous devriez voir un Bundle Identifier (identifiant du bundle) généré qui correspond à l'iOS Bundle ID (com.example.QuickstartApp) (ID du bundle iOS) que vous avez saisi à l' étape 1.b.
    3. Cliquez sur Next (Suivant).
    4. Sélectionnez un répertoire de destination pour le projet, puis cliquez sur Create (Créer).
  2. Fermez le projet en cliquant sur File > Close Project (Fichier > Fermer le projet).
  3. Ouvrez une fenêtre de terminal et accédez au répertoire contenant le fichier QuickstartApp.xcodeproj que vous venez de créer.
  4. Exécutez les commandes suivantes pour créer le 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
    
  5. 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").

  6. Recherchez le fichier GoogleService-Info.plist téléchargé précédemment et sélectionnez-le. Cliquez sur le bouton Options.

  7. Effectuez les sélections suivantes dans la fenêtre d'options, puis cliquez sur le bouton Add (Ajouter) :

    1. Cochez la case Copy items if needed (Copier les éléments si nécessaire).
    2. Cochez toutes les cibles listées dans la section Add to targets (Ajouter aux cibles).

  8. Le nœud de projet étant toujours sélectionné, sélectionnez "QuickstartApp" dans la section TARGETS (CIBLES), comme illustré dans les deux images ci-dessous :

    1. Cliquez sur la zone indiquée dans cette capture d'écran :

    2. Sélectionnez ensuite la cible appropriée :

  9. Sélectionnez l'onglet Info, puis développez la section URL Types (Types d'URL).

  10. Cliquez sur le bouton +, puis ajoutez un URL scheme (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 URL Schemes (Schémas d'URL) de la page de configuration. Laissez les autres champs vides.

  11. Recompilez le projet :

    1. Cliquez sur Product > Clean Build Folder (Produit > Nettoyer le dossier de compilation) tout en maintenant la touche Option enfoncée.
    2. Cliquez sur Product > Build (Produit > Compiler).

Étape 3 : Configurer l'exemple

Remplacez le contenu des fichiers suivants par le code fourni :

AppDelegate.h
#import <UIKit/UIKit.h>
@import GoogleSignIn;

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;


@end
AppDelegate.m
#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
ViewController.h
#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
ViewController.m
#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écuter l'exemple

Passez au schéma QuickstartApp en cliquant sur Product > Scheme > QuickstartApp (Produit > Schéma > QuickstartApp), puis exécutez l'exemple (Cmd+R) à l'aide du simulateur d'appareil ou d'un appareil configuré. La première fois que vous exécutez l'exemple, vous êtes invité à vous connecter à votre compte Google et à autoriser l'accès.

Remarques

  • Les informations d'autorisation sont stockées dans votre trousseau. Par conséquent, les exécutions suivantes ne vous demanderont pas d'autorisation.

Documentation complémentaire