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
-
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.
-
Nella pagina Crea credenziali, fai clic sul pulsante Annulla.
-
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.
-
Seleziona la scheda Credenziali, fai clic sul pulsante Crea credenziali e seleziona ID client OAuth.
- 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
- Apri Xcode e crea un nuovo progetto:
- Fai clic su File > Nuovo > Progetto, seleziona il modello iOS > Applicazione > Applicazione a visualizzazione singola, quindi fai clic su Avanti.
- 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. - Fai clic su Avanti.
- Seleziona una directory di destinazione per il progetto e fai clic su Create (Crea).
- Chiudi il progetto facendo clic su File > Chiudi progetto.
- Apri una finestra del terminale e vai alla directory che contiene il file
QuickstartApp.xcodeproj
appena creato. 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
In XCode Project Navigator, seleziona il nodo del progetto "QuickstartApp". Fai clic sulla voce di menu File > Aggiungi file a "QuickstartApp".
Individua il file
GoogleService-Info.plist
scaricato in precedenza e selezionalo. Fai clic sul pulsante Opzioni.Seleziona le seguenti opzioni nella finestra delle opzioni e fai clic sul pulsante Aggiungi:
- Seleziona la casella di controllo Copia gli 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 degli URL nella pagina di configurazione. Lascia vuoti gli altri campi.Ricrea il progetto:
- Fai clic su Product > Clean Build Folder (Svuota cartella Build) tenendo premuto il tasto option.
- Fai clic su Prodotto > Build.
Passaggio 3: configura l'esempio
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 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.