Configurar um projeto do Xcode

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Siga as etapas deste guia para fazer o download do SDK do Places para iOS e adicionar a biblioteca e as dependências ao seu app, além de receber uma chave de API sem custos financeiros.

As notas da versão estão disponíveis para cada versão.

Etapa 1: obter a versão mais recente do Xcode

Para criar um projeto usando o SDK do Places para iOS, você precisa de:

  1. Xcode versão 13.0 ou posterior.
  2. Cocoapods ou Carthage.

Etapa 2: instalar o SDK

Para instalar a API em um novo projeto, siga estas etapas:

Usar CocoaPods

O SDK do Places para iOS está disponível como um pod do CocoaPod, o GooglePlaces, que contém a funcionalidade de todos os lugares.

O CocoaPods é um gerenciador de dependências de código aberto para projetos Cocoa em Swift e Objective-C. Se você ainda não tiver a ferramenta CocoaPods, instale-a no macOS executando o seguinte comando no terminal. Para mais detalhes, consulte o Guia de primeiros passos do CocoaPods.

sudo gem install cocoapods

Crie um Podfile para o SDK do Places para iOS e use-o para instalar o SDK e as dependências dele:

  1. Se você ainda não tiver um projeto Xcode, crie um agora e salve-o no computador local. Se você não tem experiência com o desenvolvimento para iOS, crie um novo projeto e selecione o modelo de app iOS.
  2. Crie um arquivo chamado Podfile no seu diretório do projeto para definir as dependências.
  3. Edite as Podfile e adicione suas dependências com as versões delas. Veja um exemplo que especifica o nome de destino do seu aplicativo e o nome do pod GooglePlaces:
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '13.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GooglePlaces', '7.1.0'
    end
    Execute regularmente pod outdated para detectar quando há uma versão mais recente e garantir que você esteja sempre com as últimas.
  4. Salve o Podfile.
  5. Abra um terminal e acesse o diretório que contém o Podfile:

    cd <path-to-project>
  6. Execute o comando pod install. Isso instalará as APIs especificadas no Podfile e as respectivas dependências.

    pod install
  7. Feche o Xcode e clique duas vezes no arquivo .xcworkspace do projeto para iniciar o programa. Depois disso, é preciso usar o arquivo .xcworkspace para abrir o projeto.

Para atualizar a API de um projeto existente, siga estas etapas:

  1. Abra um terminal e acesse o diretório do projeto que contém o Podfile.
  2. Execute o comando pod update. Isso atualizará todas as APIs especificadas em Podfile para a versão mais recente.

Usar o Carthage

O SDK do Places para iOS está disponível para uso com o Carthage, um gerenciador de dependências simples e descentralizado para projetos Cocoa em Swift e Objective-C.

  1. Instale o Carthage. Como existem vários métodos, consulte o arquivo README do Carthage para ver as etapas exatas.
  2. Se você ainda não tiver um projeto Xcode, crie um agora e salve-o no computador local. Se você não tem experiência com o desenvolvimento para iOS, crie um novo projeto e selecione o modelo de app iOS.
  3. Crie um arquivo chamado Cartfile no seu diretório do projeto Esse arquivo define as dependências do projeto.
  4. Edite o Cartfile e adicione suas dependências com as versões:
     binary "https://dl.google.com/geosdk/GooglePlaces.json" == 6.2.1
    Execute o carthage outdated regularmente para detectar quando há uma versão mais recente e garantir que você esteja sempre na versão mais recente.
  5. Salve o Cartfile.
  6. Em uma janela do terminal, acesse o diretório que contém o Cartfile:
    cd <path-to-project>
  7. Execute o comando carthage update. Isso instalará as APIs especificadas no Cartfile e as respectivas dependências.
  8. No Finder, no diretório do projeto, acesse os arquivos do framework salvos em Carthage/Build/iOS.
  9. Arraste os seguintes pacotes para seu projeto. Quando solicitado, selecione Copiar itens, se necessário:
    • GooglePlaces-5.x.x/Frameworks/GooglePlaces.framework
  10. Clique com o botão direito do mouse em GooglePlaces.framework no projeto e selecione Show In Finder.
  11. Arraste GooglePlaces.bundle da pasta Resources para o projeto. Quando solicitado, verifique se Copy items into destination group's folder não está selecionado.
  12. Selecione o projeto no Project Navigator e escolha o local de destino do aplicativo.
  13. Abra a guia Fases de compilação e, em Vincular binário com bibliotecas, adicione os seguintes frameworks e bibliotecas:
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  14. Escolha seu projeto, em vez de um destino específico, e abra a guia Build Settings.

  15. Na seção Outras sinalizações do vinculador, adicione -ObjC. Se essas configurações não estiverem visíveis, mude o filtro na barra Build Settings de Basic para All.

Para atualizar a API de um projeto existente, siga estas etapas:

  1. Abra um terminal e acesse o diretório do projeto que contém o Cartfile.
  2. Execute o comando carthage update. Isso atualizará todas as APIs especificadas na Cartfile para a versão mais recente.

Instalar manualmente

Este guia mostra como adicionar manualmente o framework do Google Places ao seu projeto e como definir as configurações de compilação no Xcode.

  1. Faça o download dos arquivos de origem do SDK: GooglePlaces-7.1.0
  2. Descompacte-os.
  3. Inicialize o Xcode e abra ou crie um projeto. Se você não tem experiência com o desenvolvimento para iOS, crie um novo projeto e selecione o modelo de app iOS.
  4. Remova todas as versões anteriores do Maps do projeto.
  5. Arraste os seguintes pacotes para seu projeto. Quando solicitado, selecione Copiar itens, se necessário:
    • GooglePlaces-5.x.x/Frameworks/GooglePlaces.framework
  6. Clique com o botão direito do mouse em GooglePlaces.framework no projeto e selecione Show In Finder.
  7. Arraste GooglePlaces.bundle da pasta Resources para o projeto. Quando solicitado, verifique se Copy items into destination group's folder não está selecionado.
  8. Selecione o projeto no Project Navigator e escolha o local de destino do aplicativo.
  9. Abra a guia Fases de compilação e, em Vincular binário com bibliotecas, adicione os seguintes frameworks e bibliotecas:
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  10. Escolha seu projeto, em vez de um destino específico, e abra a guia Build Settings.

  11. Na seção Outras sinalizações do vinculador, adicione -ObjC. Se essas configurações não estiverem visíveis, mude o filtro na barra Build Settings de Basic para All.

Instalar o XCFramework

Um XCFramework é um pacote binário que pode ser usado em várias plataformas, incluindo máquinas com o chipset M1, para instalar o SDK do Places para iOS. Este guia mostra como adicionar o XCFramework com o SDK do Places para iOS ao seu projeto e definir as configurações de compilação no Xcode.

Com Carthage

O SDK do Places para iOS está disponível para uso com o Carthage, um gerenciador de dependências simples e descentralizado para projetos Cocoa em Swift e Objective-C.

  1. Instale o Carthage. Como existem vários métodos, consulte o arquivo README do Carthage para ver as etapas exatas.
  2. Se você ainda não tiver um projeto Xcode, crie um agora e salve-o na sua máquina local. Se você não tem experiência com o desenvolvimento para iOS, crie um novo projeto e selecione o modelo de app iOS.
  3. Crie um arquivo chamado Cartfile no seu diretório do projeto Esse arquivo define as dependências do projeto.
  4. Edite o Cartfile e adicione suas dependências com as versões:

    binary "https://dl.google.com/geosdk/GooglePlaces.json" == 6.2.1-beta
  5. Salve o Cartfile.
  6. Em uma janela do terminal, acesse o diretório que contém Cartfile:

    cd <path-to-project>
  7. Execute o comando carthage update. Isso instalará as APIs especificadas na Cartfile, além de todas as dependências que elas possam ter.
  8. No Finder, no diretório do projeto, acesse os arquivos do framework salvos em Carthage/Build.
  9. Arraste o seguinte XCFramework para o projeto em Frameworks, Bibliotecas e Conteúdo incorporado. Selecione Não incorporar:
    • GooglePlaces-x.x.x/GooglePlaces.xcframework
  10. Clique com o botão direito do mouse em GooglePlaces.xcframework no projeto e selecione Show In Finder.
  11. Arraste o GooglePlaces.bundle da pasta ios-arm64/GooglePlaces.framework/Resources para o diretório de nível superior do seu projeto do Xcode. Quando solicitado, verifique se a opção Copiar itens para a pasta do grupo de destino não está selecionada.
  12. Selecione o projeto no Project Navigator e escolha o destino do aplicativo.
  13. Abra a guia Fases de compilação e em Vincular binário com bibliotecas, e adicione os seguintes frameworks e bibliotecas:
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  14. Escolha o projeto, em vez de um destino específico, e abra a guia Build Settings.

  15. Na seção Outras sinalizações do vinculador, adicione -ObjC. Se essas configurações não estiverem visíveis, mude o filtro na barra Build Settings de Basic para All.

Manualmente

Este guia mostra como adicionar manualmente o SDK do Maps para iOS ao seu projeto e definir as configurações de compilação no Xcode.

  1. Faça o download dos arquivos de origem do SDK: GooglePlaces-7.1.0-beta-xcframework.
  2. Descompacte-os.
  3. Inicie o Xcode e abra um projeto existente ou crie um novo. Se você não tem experiência com o iOS, crie um novo projeto e selecione o modelo de app iOS.
  4. Arraste o seguinte XCFramework para o projeto em Frameworks, Bibliotecas e Conteúdo incorporado. Selecione Não incorporar:
    • GooglePlaces-x.x.x/GooglePlaces.xcframework
  5. Clique com o botão direito do mouse em GooglePlaces.xcframework no projeto e selecione Show In Finder.
  6. Arraste o GooglePlaces.bundle da pasta ios-arm64/GooglePlaces.framework/Resources para o diretório de nível superior do seu projeto do Xcode. Quando solicitado, verifique se a opção Copiar itens para a pasta do grupo de destino não está selecionada.
  7. Selecione o projeto no Project Navigator e escolha o destino do aplicativo.
  8. Abra a guia Fases de compilação e em Vincular binário com bibliotecas, e adicione os seguintes frameworks e bibliotecas:
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  9. Escolha o projeto, em vez de um destino específico, e abra a guia Build Settings.

  10. Na seção Outras sinalizações do vinculador, adicione -ObjC. Se essas configurações não estiverem visíveis, mude o filtro na barra Build Settings de Basic para All.

Etapa 3: adicionar a chave de API ao app

Nos exemplos a seguir, substitua YOUR_API_KEY pela sua chave de API.

Swift

Inclua sua chave de API ao AppDelegate.swift da seguinte maneira:

  • Adicione a seguinte instrução de importação:
    import GooglePlaces
  • Adicione o seguinte ao seu método application(_:didFinishLaunchingWithOptions:), substituindo YOUR_API_KEY pela sua chave de API:
    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

Objective-C

Inclua sua chave de API ao AppDelegate.m da seguinte maneira:

  • Adicione a seguinte instrução de importação:
    @import GooglePlaces;
  • Adicione o seguinte ao seu método application:didFinishLaunchingWithOptions:, substituindo YOUR_API_KEY pela sua chave de API:
    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];

Etapa 4: começar a escrever o código

Nas amostras de código a seguir, veja como acessar o lugar atual.

Swift

import GooglePlaces
import UIKit

class GetStartedViewController : UIViewController {

  // Add a pair of UILabels in Interface Builder, and connect the outlets to these variables.
  @IBOutlet private var nameLabel: UILabel!
  @IBOutlet private var addressLabel: UILabel!

  private var placesClient: GMSPlacesClient!

  override func viewDidLoad() {
    super.viewDidLoad()
    placesClient = GMSPlacesClient.shared()
  }

  // Add a UIButton in Interface Builder, and connect the action to this function.
  @IBAction func getCurrentPlace(_ sender: UIButton) {
    let placeFields: GMSPlaceField = [.name, .formattedAddress]
    placesClient.findPlaceLikelihoodsFromCurrentLocation(withPlaceFields: placeFields) { [weak self] (placeLikelihoods, error) in
      guard let strongSelf = self else {
        return
      }

      guard error == nil else {
        print("Current place error: \(error?.localizedDescription ?? "")")
        return
      }

      guard let place = placeLikelihoods?.first?.place else {
        strongSelf.nameLabel.text = "No current place"
        strongSelf.addressLabel.text = ""
        return
      }

      strongSelf.nameLabel.text = place.name
      strongSelf.addressLabel.text = place.formattedAddress
    }
  }
}
      

Objective-C

#import "GetStartedViewController.h"
@import GooglePlaces;

@interface GetStartedViewController ()
// Add a pair of UILabels in Interface Builder and connect the outlets to these variables
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;
@property (weak, nonatomic) IBOutlet UILabel *addressLabel;
@end

@implementation GetStartedViewController {
  GMSPlacesClient *_placesClient;
}

- (void)viewDidLoad {
  [super viewDidLoad];
  _placesClient = [GMSPlacesClient sharedClient];
}

// Add a pair of UILabels in Interface Builder and connect the outlets to these variables.
- (IBAction)getCurrentPlace:(UIButton *)sender {
  GMSPlaceField placeFields = (GMSPlaceFieldName | GMSPlaceFieldFormattedAddress);

  __weak typeof(self) weakSelf = self;
  [_placesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:placeFields callback:^(NSArray<GMSPlaceLikelihood *> * _Nullable likelihoods, NSError * _Nullable error) {
    __typeof__(self) strongSelf = weakSelf;
    if (strongSelf == nil) {
      return;
    }

    if (error != nil) {
      NSLog(@"An error occurred %@", [error localizedDescription]);
      return;
    }

    GMSPlace *place = likelihoods.firstObject.place;
    if (place == nil) {
      strongSelf.nameLabel.text = @"No current place";
      strongSelf.addressLabel.text = @"";
      return;
    }

    strongSelf.nameLabel.text = place.name;
    strongSelf.addressLabel.text = place.formattedAddress;
  }];
}

@end
      

Próximas etapas

Depois de configurar o projeto, você poderá explorar os apps de exemplo. Você precisará que o Cocoapods v1.6.1 esteja instalado.