As etapas descritas nesta página explicam como criar rapidamente um aplicativo simples para iOS que faz solicitações à API YouTube Data. Este exemplo mostra como recuperar dados sobre o canal do YouTube GoogleDevelopers. O código também inclui comentários que explicam como modificar a consulta para recuperar dados sobre o canal do YouTube do usuário atual.
Pré-requisitos
Para executar este guia de início rápido, você vai precisar do seguinte:
- Xcode 8.0 ou mais recente.
- Gerenciador de dependências CocoaPods.
- Acesso à Internet e a um navegador da Web.
- uma Conta do Google.
Etapa 1: ativar a API YouTube Data
-
Use este assistente para criar ou selecionar um projeto no Google Developers Console e ativar a API automaticamente. Clique em Continuar e depois em Acessar credenciais.
-
Na página Criar credenciais, clique no botão Cancelar.
-
Na parte superior da página, selecione a guia OAuth consent screen. Selecione um Endereço de e-mail, insira um Nome do produto se ainda não estiver definido e clique no botão Salvar.
-
Selecione a guia Credenciais, clique no botão Criar credenciais e selecione ID do cliente OAuth.
- Selecione o tipo de aplicativo iOS, insira o nome "Início rápido da API
YouTube Data", o ID do pacote
com.example.QuickstartApp
e clique no botão Criar.
Etapa 2: preparar o espaço de trabalho
- Abra o Xcode e crie um projeto:
- Clique em File > New > Project, selecione o modelo iOS > Application > Single View Application e clique em Next.
- Defina o Nome do produto como "QuickstartApp", o Identificador da organização
como "com.example" e o Idioma como
Objective-C.
Abaixo do identificador da organização, você vai encontrar um
Identificador do pacote gerado que corresponde ao ID do pacote do iOS
(
com.example.QuickstartApp
) inserido na etapa 1.b. - Clique em Próxima.
- Selecione um diretório de destino para o projeto e clique em Criar.
- Clique em Arquivo > Fechar projeto para fechar o projeto.
- Abra uma janela de terminal e navegue até o diretório que contém o arquivo
QuickstartApp.xcodeproj
que você acabou de criar. Execute os comandos a seguir para criar o Podfile, instalar a biblioteca e abrir o projeto do Xcode resultante:
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
No navegador de projetos do Xcode, selecione o nó do projeto "QuickstartApp". Em seguida, clique no item de menu Arquivo > Adicionar arquivos a "QuickstartApp".
Localize e selecione o arquivo
GoogleService-Info.plist
baixado anteriormente. Clique no botão Opções.Faça as seguintes seleções na janela de opções e clique no botão Adicionar:
- Marque a caixa de seleção Copiar itens, se necessário.
- Verifique todos os destinos listados na seção Adicionar a destinos.
Com o nó do projeto ainda selecionado, escolha "QuickstartApp" na seção TARGETS, como mostrado nas duas imagens abaixo:
Clique na área mostrada nesta captura de tela:
Em seguida, selecione o destino adequado:
Selecione a guia Informações e expanda a seção Tipos de URL.
Clique no botão + e adicione um esquema de URL ao ID do cliente inverso. Para encontrar esse valor, abra o arquivo de configuração
GoogleService-Info.plist
selecionado na etapa 2.f. Procure a chave REVERSED_CLIENT_ID. Copie e cole o valor da chave na caixa Esquemas de URL na página de configuração. Deixe os outros campos em branco.Recrie o projeto:
- Clique em Produto > Limpar pasta de criação (mantendo pressionada a tecla option).
- Clique em Produto > Build.
Etapa 3: configurar o exemplo
Substitua o conteúdo dos seguintes arquivos pelo código fornecido:#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
Etapa 4: executar a amostra
Mude para o esquema QuickstartApp clicando em Product > Scheme > QuickstartApp e execute a amostra (Cmd+R) usando o simulador de dispositivo ou um dispositivo configurado. Na primeira vez que você executar a amostra, será necessário fazer login na sua Conta do Google e autorizar o acesso.
Observações
- As informações de autorização são armazenadas no seu Keychain, então as execuções subsequentes não vão pedir autorização.