Guia de início rápido do iOS

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

  1. 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.

  2. Na página Criar credenciais, clique no botão Cancelar.

  3. 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.

  4. Selecione a guia Credenciais, clique no botão Criar credenciais e selecione ID do cliente OAuth.

  5. 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

  1. Abra o Xcode e crie um projeto:
    1. Clique em File > New > Project, selecione o modelo iOS > Application > Single View Application e clique em Next.
    2. 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.
    3. Clique em Próxima.
    4. Selecione um diretório de destino para o projeto e clique em Criar.
  2. Clique em Arquivo > Fechar projeto para fechar o projeto.
  3. Abra uma janela de terminal e navegue até o diretório que contém o arquivo QuickstartApp.xcodeproj que você acabou de criar.
  4. 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
    
  5. No navegador de projetos do Xcode, selecione o nó do projeto "QuickstartApp". Em seguida, clique no item de menu Arquivo > Adicionar arquivos a "QuickstartApp".

  6. Localize e selecione o arquivo GoogleService-Info.plist baixado anteriormente. Clique no botão Opções.

  7. Faça as seguintes seleções na janela de opções e clique no botão Adicionar:

    1. Marque a caixa de seleção Copiar itens, se necessário.
    2. Verifique todos os destinos listados na seção Adicionar a destinos.

  8. Com o nó do projeto ainda selecionado, escolha "QuickstartApp" na seção TARGETS, como mostrado nas duas imagens abaixo:

    1. Clique na área mostrada nesta captura de tela:

    2. Em seguida, selecione o destino adequado:

  9. Selecione a guia Informações e expanda a seção Tipos de URL.

  10. 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.

  11. Recrie o projeto:

    1. Clique em Produto > Limpar pasta de criação (mantendo pressionada a tecla option).
    2. Clique em Produto > Build.

Etapa 3: configurar o exemplo

Substitua o conteúdo dos seguintes arquivos pelo código fornecido:

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

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.

Leitura adicional