Guida rapida per iOS

I passaggi descritti in questa pagina spiegano come creare rapidamente una semplice applicazione iOS che effettui richieste all'API YouTube Data. Questo esempio mostra come recuperare i dati relativi al canale YouTube GoogleDevelopers. Il codice include anche i 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 in Google Developers Console e attivare automaticamente l'API. Fai clic su Continua e poi su Vai alle credenziali.

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

  3. Nella parte superiore della pagina, seleziona la scheda Schermata 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 "Guida rapida all'API di dati di YouTube", ID pacchetto com.example.QuickstartApp e fai clic sul pulsante Crea.

Passaggio 2: prepara l'area di lavoro

  1. Apri Xcode e crea un nuovo progetto:
    1. Fai clic su File > Nuovo > Progetto, seleziona il modello iOS > Applicazione > Applicazione a visualizzazione singola, quindi fai clic su Avanti.
    2. Imposta il Nome prodotto su "QuickstartApp", l'ID organizzazione su "com.example" e il lingua su Objective-C. Sotto l'identificatore dell'organizzazione, dovresti visualizzare un identificatore pacchetto 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 Create (Crea).
  2. Chiudi il progetto facendo clic su File > Chiudi progetto.
  3. Apri una finestra del terminale e vai alla directory che contiene il file QuickstartApp.xcodeproj appena creato.
  4. Esegui questi 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. In XCode Project Navigator, seleziona il nodo del progetto "QuickstartApp". Fai clic sulla voce di menu File > Aggiungi file a "QuickstartApp".

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

  7. Seleziona le seguenti opzioni nella finestra delle opzioni e fai clic sul pulsante Aggiungi:

    1. Seleziona la casella di controllo Copia gli 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 degli URL nella pagina di configurazione. Lascia vuoti gli altri campi.

  11. Ricrea il progetto:

    1. Fai clic su Product > Clean Build Folder (Svuota cartella Build) tenendo premuto il tasto option.
    2. Fai clic su Prodotto > Build.

Passaggio 3: configura l'esempio

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 l'esempio

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

Note

  • Le informazioni di autorizzazione vengono archiviate nel tuo portachiavi, per cui le esecuzioni successive non richiedono l'autorizzazione.

Per approfondire