Depois de ativar o faturamento e criar uma chave de API, você poderá configurar o projeto Xcode usado para desenvolver seu app.
As notas da versão estão disponíveis para cada versão.
Etapa 1: instalar o software necessário
Para criar um projeto usando o SDK do Places para iOS, você precisa de:
- Xcode versão 14.0 ou mais recente
- Cocoapods
- 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 desenvolvimento para iOS, crie um novo projeto e selecione o modelo de app iOS.
- Crie um arquivo chamado
Podfile
no seu diretório do projeto para definir as dependências. - Edite o
Podfile
e adicione as dependências com as versions. Veja um exemplo que especifica o nome do destino do aplicativo e o nome do podGooglePlaces
:source 'https://github.com/CocoaPods/Specs.git' platform :ios, '14.0' target 'YOUR_APPLICATION_TARGET_NAME_HERE' do pod 'GooglePlaces', '8.3.0' end
Executepod outdated
regularmente para detectar quando há uma versão mais recente e garantir que você esteja sempre atualizado. - Salve o
Podfile
. Abra um terminal e acesse o diretório que contém o
Podfile
:cd <path-to-project>
Execute o comando
pod install
. Isso instalará as APIs especificadas noPodfile
e as respectivas dependências.pod install
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.- Abra um terminal e acesse o diretório do projeto que contém o
Podfile
. - Execute o comando
pod update
. Isso vai atualizar todas as APIs especificadas noPodfile
para a versão mais recente. - Faça o download dos seguintes arquivos binários e de recursos do SDK:
- Descompacte os arquivos compactados para acessar o XCFramework e os recursos.
- Inicialize o Xcode e abra ou crie um projeto. Se você não tem experiência com desenvolvimento para iOS, crie um novo projeto e selecione o modelo de app iOS.
- Remova todas as versões anteriores do Maps do projeto.
- Arraste o seguinte XCFramework para o projeto em
Frameworks, bibliotecas e conteúdo incorporado. Selecione
Não incorporar:
GooglePlaces.xcframework
- Arraste
GooglePlaces.bundle
de GooglePlacesResources transferido por download para o diretório de nível superior do seu projeto Xcode. Quando solicitado, verifique se a opção Copiar itens na pasta do grupo de destino está selecionada. - Selecione o projeto no Project Navigator e escolha o destino do aplicativo.
- Abra a guia Fases de compilação, em Vincular binário à
bibliotecas e adicione os seguintes frameworks e bibliotecas:
CoreGraphics.framework
CoreLocation.framework
libc++.tbd
libz.tbd
QuartzCore.framework
UIKit.framework
Escolha o projeto, em vez de um destino específico, e abra a guia Build Settings.
- 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. - Adicione a seguinte instrução de importação:
import GooglePlaces
- Adicione o seguinte ao método
application(_:didFinishLaunchingWithOptions:)
, substituindo YOUR_API_KEY pela chave de API:GMSPlacesClient.provideAPIKey("YOUR_API_KEY")
- Adicione a seguinte instrução de importação:
@import GooglePlaces;
- Adicione o seguinte ao método
application:didFinishLaunchingWithOptions:
, substituindo YOUR_API_KEY pela chave de API:[GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
Etapa 2: criar o projeto Xcode e instalar o SDK do Places para iOS
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, GooglePlaces, que contém todas as funcionalidades de 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 tem a ferramenta CocoaPods, instale-a no macOS executando o comando a seguir no terminal. Para ver 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:
Para atualizar a API de um projeto existente, siga estas etapas:
Instalar manualmente
Este guia mostra como adicionar manualmente o XCFramework que contém o SDK do Places para iOS ao seu projeto e definir as configurações do build no Xcode. Um XCFramework é um pacote binário que pode ser usado em várias plataformas, incluindo máquinas que usam o Apple Silicon.
Etapa 3: adicionar a chave de API ao app
Nos exemplos a seguir, substitua YOUR_API_KEY
pela chave de API.
Swift
Inclua sua chave de API ao AppDelegate.swift
da seguinte maneira:
Objective-C
Inclua sua chave de API ao AppDelegate.m
da seguinte maneira:
Etapa 4: começar a escrever código
Os exemplos de código a seguir demonstram 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, confira os apps de exemplo. Você precisará do Cocoapods v1.6.1 instalado.