As etapas descritas nesta página explicam como criar rapidamente um aplicativo iOS simples que faz solicitações à API de dados do YouTube. Este exemplo mostra como recuperar dados sobre o canal do Google 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ê precisará do seguinte:
- Xcode 8.0 ou versão posterior
- Gerenciador de dependências do 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 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 de 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 "YouTube Data API
guia de início rápido", 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 novo projeto:
- Clique em File > New > Project, selecione o modelo iOS > Application > Single View Application e clique em Next.
- Defina Product Name como "quickstartApp", Organization Identifier
como "com.example" e Language como
Objective-C.
Abaixo do identificador da organização, você verá 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.
- Para fechar o projeto, clique em File > Close Project.
- Abra uma janela do 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 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 XCode Project Navigator, selecione o nó do projeto "quickstartApp". Em seguida, clique no item de menu File > Add files to "quickstartApp".
Localize o arquivo
GoogleService-Info.plist
salvo anteriormente e selecione-o. 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 aos destinos.
Com o nó do projeto ainda selecionado, selecione "quickstartApp" na seção DESTINOS, conforme mostrado nas duas imagens abaixo:
Clique na área desta captura de tela:
Em seguida, selecione o destino apropriado:
Selecione a guia Informações e expanda a seção Tipos de URL.
Clique no botão + e adicione um esquema de URL ao seu ID do cliente revertido. 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 Product > Clean Build Folder enquanto mantém pressionada a tecla option.
- Clique em Produto > Criar.
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
Alterne para o esquema quickstartApp clicando em Product > Scheme > quickstartApp e execute o exemplo (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 conjunto de chaves. Dessa forma, as execuções subsequentes não solicitarão autorização.