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
-
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.
-
Nella pagina Crea credenziali, fai clic sul pulsante Annulla.
-
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.
-
Seleziona la scheda Credenziali, fai clic sul pulsante Crea credenziali e seleziona ID client OAuth.
- 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
- Apri Xcode e crea un nuovo progetto:
- Fai clic su File > Nuovo > Progetto, seleziona il modello iOS > Applicazione > Applicazione con una sola visualizzazione e fai clic su Avanti.
- 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. - Fai clic su Avanti.
- Seleziona una directory di destinazione per il progetto e fai clic su Crea.
- Chiudi il progetto facendo clic su File > Chiudi progetto.
- Apri una finestra del terminale e vai alla directory contenente il file
QuickstartApp.xcodeproj
che hai appena creato. 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
Nel navigatore del progetto Xcode, seleziona il nodo del progetto "QuickstartApp". Poi fai clic sulla voce di menu File > Add files to "QuickstartApp".
Individua e seleziona il file
GoogleService-Info.plist
scaricato in precedenza. Fai clic sul pulsante Opzioni.Effettua le seguenti selezioni nella finestra delle opzioni e poi fai clic sul pulsante Aggiungi:
- Seleziona la casella di controllo Copia elementi se necessario.
- Controlla tutti i target elencati nella sezione Aggiungi ai target.
Con il nodo del progetto ancora selezionato, seleziona "QuickstartApp" nella sezione TARGETS, come mostrato nelle due immagini seguenti:
Fai clic sull'area mostrata in questo screenshot:
Poi seleziona il target corretto:
Seleziona la scheda Informazioni ed espandi la sezione Tipi di URL.
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.Ricrea il progetto:
- Fai clic su Prodotto > Pulisci cartella di build (tenendo premuto il tasto Opzione).
- Fai clic su Prodotto > Crea.
Passaggio 3: configura il campione
Sostituisci i contenuti dei seguenti file con il codice fornito:#import <UIKit/UIKit.h> @import GoogleSignIn; @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window; @end
#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
#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
#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.