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

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

  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 "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

  1. Ouvrez Xcode et créez un projet :
    1. Cliquez sur Fichier > Nouveau > Projet, sélectionnez le modèle iOS > Application > Application Single View, puis cliquez sur Suivant.
    2. 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.
    3. Cliquez sur Suivant.
    4. Sélectionnez un répertoire de destination pour le projet, puis cliquez sur Créer.
  2. Fermez le projet en cliquant sur Fichier > Fermer le projet.
  3. Ouvrez une fenêtre 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 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
    
  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 des options, puis cliquez sur le bouton Add (Ajouter) :

    1. Cochez la case Copier les éléments si nécessaire.
    2. Vérifiez toutes les cibles listées dans la section Ajouter aux cibles.

  8. 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:

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

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

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

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

  11. Recompilez le projet:

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

Étape 3: Configurez 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é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.

Complément d'informations