Guia de início rápido do iOS

As etapas descritas nesta página explicam como criar rapidamente um aplicativo iOS simples 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 início rápido, você precisa de:

  • Xcode 8.0 ou mais recente.
  • 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 em Acessar credenciais.

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

  3. Na parte de cima da página, selecione a guia Tela de permissão OAuth. 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 novo projeto:
    1. Clique em Arquivo > Novo > Projeto , selecione o modelo iOS > Aplicativo > Aplicativo de visualização única e clique em Próxima.
    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ê verá um identificador de pacote gerado que corresponde ao ID do pacote 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. Feche o projeto clicando em Arquivo > Fechar projeto.
  3. Abra uma janela do 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. Marque todos os destinos listados na seção Adicionar a destinos.

  8. Com o nó do projeto ainda selecionado, selecione "QuickstartApp" na seção DESTINOS , conforme 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 invertido. 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 build (mantendo a tecla option pressionada).
    2. Clique em Produto > Build.

Etapa 3: configurar o exemplo

Substitua o conteúdo dos arquivos a seguir 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 Produto > Esquema > QuickstartApp e execute o exemplo (Cmd+R) usando o simulador de dispositivo ou um dispositivo configurado. Na primeira vez que você executar o exemplo, 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. Portanto, as execuções subsequentes não vão solicitar autorização.

Leitura adicional