Guida rapida per iOS

I passaggi descritti in questa pagina spiegano come creare rapidamente una semplice applicazione iOS che effettua richieste all'API YouTube Data. Questo esempio mostra come recuperare i dati sul canale YouTube GoogleDevelopers. Il codice include anche commenti che spiegano come modificare la query per recuperare i dati sul canale YouTube dell'utente corrente.

Prerequisiti

Per eseguire questa guida rapida, devi disporre di:

  • Xcode 8.0 o versioni successive.
  • Gestore delle dipendenze CocoaPods.
  • Accesso a internet e a un browser web.
  • Un Account Google.

Passaggio 1: attiva l'API YouTube Data

  1. Utilizza questa procedura guidata per creare o selezionare un progetto nella Google Developers Console e attivare automaticamente l'API. Fai clic su Continua, quindi su Vai alle credenziali.

  2. Nella pagina Crea credenziali, fai clic sul pulsante Annulla.

  3. Nella parte superiore della pagina, seleziona la scheda Schermata di consenso OAuth. Seleziona un indirizzo email, inserisci un nome prodotto se non è già impostato e fai clic sul pulsante Salva.

  4. Seleziona la scheda Credenziali, fai clic sul pulsante Crea credenziali e seleziona ID client OAuth.

  5. Seleziona il tipo di applicazione iOS, inserisci il nome "YouTube Data API Quickstart", l'ID bundle com.example.QuickstartApp e fai clic sul pulsante Crea.

Passaggio 2: prepara lo spazio di lavoro

  1. Apri Xcode e crea un nuovo progetto:
    1. Fai clic su File > Nuovo > Progetto, seleziona il modello iOS > Applicazione > Applicazione con una sola visualizzazione e fai clic su Avanti.
    2. Imposta Nome prodotto su "QuickstartApp", Identificatore organizzazione su "com.example" e Lingua su Objective-C. Sotto l'identificatore dell'organizzazione, dovresti vedere un identificatore bundle generato che corrisponde all'ID bundle iOS (com.example.QuickstartApp) che hai inserito nel passaggio 1.b.
    3. Fai clic su Avanti.
    4. Seleziona una directory di destinazione per il progetto e fai clic su Crea.
  2. Chiudi il progetto facendo clic su File > Chiudi progetto.
  3. Apri una finestra del terminale e vai alla directory contenente il file QuickstartApp.xcodeproj che hai appena creato.
  4. Esegui i seguenti comandi per creare il Podfile, installare la libreria e aprire il progetto XCode risultante:

    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. Nel navigatore del progetto Xcode, seleziona il nodo del progetto "QuickstartApp". Poi fai clic sulla voce di menu File > Add files to "QuickstartApp".

  6. Individua e seleziona il file GoogleService-Info.plist scaricato in precedenza. Fai clic sul pulsante Opzioni.

  7. Effettua le seguenti selezioni nella finestra delle opzioni e poi fai clic sul pulsante Aggiungi:

    1. Seleziona la casella di controllo Copia elementi se necessario.
    2. Controlla tutti i target elencati nella sezione Aggiungi ai target.

  8. Con il nodo del progetto ancora selezionato, seleziona "QuickstartApp" nella sezione TARGETS, come mostrato nelle due immagini seguenti:

    1. Fai clic sull'area mostrata in questo screenshot:

    2. Poi seleziona il target corretto:

  9. Seleziona la scheda Informazioni ed espandi la sezione Tipi di URL.

  10. Fai clic sul pulsante + e aggiungi uno schema URL per l'ID client invertito. Per trovare questo valore, apri il file di configurazione GoogleService-Info.plist che hai selezionato nel passaggio 2.f. Cerca la chiave REVERSED_CLIENT_ID. Copia il valore di questa chiave e incollalo nella casella Schemi URL nella pagina di configurazione. Lascia vuoti gli altri campi.

  11. Ricrea il progetto:

    1. Fai clic su Prodotto > Pulisci cartella di build (tenendo premuto il tasto Opzione).
    2. Fai clic su Prodotto > Crea.

Passaggio 3: configura il campione

Sostituisci i contenuti dei seguenti file con il codice fornito:

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

Passaggio 4: esegui il campione

Passa allo schema QuickstartApp facendo clic su Prodotto > Schema > QuickstartApp ed esegui l'esempio (Cmd+R) utilizzando il simulatore di dispositivo o un dispositivo configurato. La prima volta che esegui l'esempio, ti verrà chiesto di accedere al tuo Account Google e autorizzare l'accesso.

Note

  • Le informazioni di autorizzazione vengono memorizzate nel portachiavi, quindi le esecuzioni successive non richiedono l'autorizzazione.

Per approfondire