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.
  • CocoaPodsCocoaPods.
  • 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 console Google Developers e attivare automaticamente l'API. Fai clic su Continua, 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 per il consenso OAuth. Seleziona un indirizzo email, inserisci un nome del 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 YouTube Data", l'ID pacchetto com.example.QuickstartApp e fai clic sul pulsante Crea.

Passaggio 2: prepara il workspace

  1. Apri Xcode e crea un nuovo progetto:
    1. Fai clic su File > Nuovo > Progetto , seleziona il modello iOS > Applicazione > Applicazione a visualizzazione singola 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 pacchetto generato che corrisponde all'ID pacchetto 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". Quindi fai clic sulla voce di menu File > Aggiungi file a "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. Seleziona tutte le destinazioni elencate nella sezione Aggiungi a destinazioni.

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

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

    2. Quindi seleziona la destinazione corretta:

  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 della chiave e incollalo nella casella Schemi URL nella pagina di configurazione. Lascia vuoti gli altri campi.

  11. Ricompila il progetto:

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

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 > QuickstartApp ed esegui l'esempio (Cmd+R) utilizzando il simulatore di dispositivi 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 richiederanno l'autorizzazione.

Per approfondire