Guia de início rápido para iOS

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

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

  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 "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

  1. Abra o Xcode e crie um novo projeto:
    1. Clique em File > New > Project, selecione o modelo iOS > Application > Single View Application e clique em Next.
    2. 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.
    3. Clique em Próxima.
    4. Selecione um diretório de destino para o projeto e clique em Criar.
  2. Para fechar o projeto, clique em File > Close Project.
  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 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 XCode Project Navigator, selecione o nó do projeto "quickstartApp". Em seguida, clique no item de menu File > Add files to "quickstartApp".

  6. Localize o arquivo GoogleService-Info.plist salvo anteriormente e selecione-o. 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 aos 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 desta captura de tela:

    2. Em seguida, selecione o destino apropriado:

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

  11. Recrie o projeto:

    1. Clique em Product > Clean Build Folder enquanto mantém pressionada a tecla option.
    2. Clique em Produto > Criar.

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

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.

Leitura adicional