Siga este guia para integrar o SDK do Navigation para iOS a um app iOS.
Pré-requisitos
- Antes de começar a usar o SDK do Navigation para iOS, você precisa de um projeto com uma conta de faturamento e ativar o SDK do Maps para iOS. Recomendamos criar vários proprietários de projetos e administradores de faturamento para que sempre haja alguém disponível com esses papéis na sua equipe. Para saber mais, consulte Configurar seu projeto do Google Cloud.
- Para criar um projeto usando o SDK do Navigation para iOS, você precisa da versão 15.0 ou mais recente do Xcode.
- A versão mínima de destino do iOS para o SDK de navegação é a 14.0.
Instalar o SDK
Gerenciador de pacotes do Swift
O SDK do Navigation pode ser instalado usando o Gerenciador de pacotes do Swift. Para adicionar o SDK, verifique se você removeu todas as dependências do SDK do Navigation.
Para adicionar o SDK a um projeto novo ou existente, siga estas etapas:
-
Abra o Xcode
project
ouworkspace
e acesse File > Add Package Dependencies. - Insira https://github.com/googlemaps/ios-navigation-sdk como o URL, pressione Enter para extrair o pacote e clique em "Adicionar pacote".
-
Para instalar um
version
específico, defina o campo Regra de dependência como uma das opções baseadas em versão. Para novos projetos, recomendamos especificar a versão mais recente e usar a opção "Versão exata". Quando terminar, clique em "Adicionar pacote". -
Na janela Choose Package Products, verifique se
GoogleNavigation
vai ser adicionado ao destinomain
designado. Quando terminar, clique em "Adicionar pacote". -
Para verificar a instalação, navegue até o painel
General
do destino. Em Frameworks, bibliotecas e conteúdo incorporado, você encontra os pacotes instalados. Você também pode ver a seção "Dependências de pacotes" do "Navegador do projeto" para verificar o pacote e a versão dele.
Para atualizar o package
de um projeto existente, siga estas etapas:
- No Xcode, acesse "File > Packages > Update To latest Package Versions".
- Para verificar a instalação, vá para a seção Dependências de pacotes do Navegador do projeto para verificar o pacote e a versão dele.
Para remover as dependências do SDK do Navigation adicionadas usando
CocoaPods
, siga estas etapas:
- Feche o espaço de trabalho do Xcode. Abra o terminal e execute o seguinte comando:
sudo gem install cocoapods-deintegrate cocoapods-clean pod deintegrate pod cache clean --all
-
Remova
Podfile
,Podfile.resolved
eworkspace
do Xcode se eles não forem usados para outra finalidade que não seja CocoaPods.
-
Nas configurações do projeto do Xcode, encontre Frameworks, bibliotecas e conteúdo incorporado. Use o sinal de menos(-) para remover o seguinte framework:
GoogleMaps.xcframework
GoogleMapsBase.xcframework
GoogleMapsCore.xcframework
GoogleNavigation.xcframework
-
No diretório de nível superior do seu projeto Xcode, remova o pacote
GoogleMaps
.
CocoaPods
O SDK do Navigation para iOS está disponível como um pod do CocoaPods. 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 essa ferramenta, instale-a no macOS executando o seguinte comando no terminal. Para mais detalhes, consulte o Guia de primeiros passos do CocoaPods (em inglês).
sudo gem install cocoapods
Crie um Podfile
para o SDK do Navigation para iOS e use-o para instalar a API e as dependências dela:
- Se você ainda não tiver um projeto Xcode, crie um agora e salve-o na sua máquina local. Se você ainda não tem experiência com o desenvolvimento para iOS:
- Crie um novo projeto.
- Selecione o modelo iOS > App.
- Na tela de opções do projeto:
- Digite o Nome do projeto.
- Registre o valor do campo Identificador do pacote. Use esse valor para restringir sua chave de API abaixo.
- Defina a Interface do projeto como Storyboard.
- Defina Language como Swift ou Objective-C.
- 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 delas. Este é um exemplo que inclui a dependência necessária para o SDK do Navigation para iOS: # Referência de instalação do Cocoapods #source 'https://github.com/CocoaPods/Specs.git' platform :ios, '14.0' target 'YOUR_APPLICATION_TARGET_NAME_HERE' do pod 'GoogleNavigation', '5.3.1' end
Executepod outdated
regularmente para detectar versões mais recentes. Se necessário, faça upgrade para a versão mais recente. - 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 instala as APIs especificadas noPodfile
com todas as 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.
Para atualizar a API de um projeto existente, siga estas etapas:
- Abra um terminal e acesse o diretório do projeto que contém o
Podfile
. - Execute o comando
pod update
. Isso atualiza todas as APIs especificadas noPodfile
para a versão mais recente.
Instalação manual
Este guia mostra como adicionar manualmente o XCFrameworks contendo o SDK do Navigation para iOS e o SDK do Maps para iOS ao projeto e definir as configurações de compilação no Xcode. Um XCFramework é um pacote binário que pode ser usado em várias plataformas, incluindo máquinas que usam o chipset M1.
Siga estas etapas para instalar o XCFrameworks para o SDK do Navigation para iOS e o SDK do Maps para iOS:
- Faça o download dos seguintes arquivos binários e de recursos do SDK:
- Inicialize o Xcode e abra ou crie um projeto. Se você não tem experiência com o iOS, crie um novo projeto e selecione o modelo de app iOS.
- Remova todas as referências existentes do Maps, Navigation e Places do projeto.
- Arraste os seguintes XCFrameworks para seu projeto em Frameworks, bibliotecas e conteúdo incorporado para instalar os SDKs do Maps e do Navigation. Quando solicitado, selecione Copiar itens se necessário:
GoogleMaps.xcframework
GoogleMapsBase.xcframework
GoogleMapsCore.xcframework
GoogleNavigation.xcframework
- Arraste
GoogleMaps.bundle
de GoogleMapsResources para o diretório de nível superior do seu projeto Xcode. Quando solicitado, verifique se a opção Copy items if needed está selecionada. - Arraste
GoogleNavigation.bundle
de GoogleNavigationResources para o diretório de nível superior do seu projeto Xcode. Quando solicitado, verifique se a opção Copy items into destination group's folder está selecionada. - Selecione o projeto no Navegador de projetos e escolha o destino do aplicativo.
- Abra a guia Fases de build e, em
Vincular binário a bibliotecas, adicione os seguintes frameworks e bibliotecas:
Accelerate.framework
AudioToolbox.framework
AVFoundation.framework
Contacts.framework
CoreData.framework
CoreGraphics.framework
CoreImage.framework
CoreLocation.framework
CoreTelephony.framework
CoreText.framework
GLKit.framework
ImageIO.framework
libc++.tbd
libxml2.tbd
libz.tbd
Metal.framework
OpenGLES.framework
QuartzCore.framework
Security.framework
SystemConfiguration.framework
UIKit.framework
UserNotifications.framework
WebKit.framework
- No destino do seu aplicativo, selecione a guia Capabilities,
ative Background Modes e, em seguida, os seguintes modos:
- Áudio, AirPlay e Picture-in-picture
- Atualizações de local
- Escolha seu projeto, em vez de um destino específico, e abra a guia Build
Settings. Na seção Outras sinalizações do vinculador,
adicione
‑ObjC
para debug e release. Se essas configurações não estiverem visíveis, mude o filtro na barra Build Settings de Basic para All. - Abra
Info.plist
e adicione os seguintes pares de chave-valor:- Chave:
NSLocationWhenInUseUsageDescription
(Descrição de privacidade: local durante o uso)
Valor: "Este app precisa de permissão para usar seu local na navegação guiada." - Chave:
NSLocationAlwaysAndWhenInUseUsageDescription
(Descrição de privacidade: local sempre e quando em uso)
Valor: "Este app precisa de permissão para usar seu local na navegação guiada."
- Chave:
Adicionar arquivo de manifesto de privacidade da Apple
- Faça o download do pacote do Manifesto de privacidade para o SDK do Navigation para iOS: GoogleNavigationPrivacy.
- Extraia o arquivo para acessar
GoogleNavigationPrivacy.bundle
. - Adicione
GoogleNavigationPrivacy.bundle
ao navegador do projeto Xcode usando um destes métodos. Confira se a caixa "Adicionar aos destinos" está marcada para o destino do app. Depois de adicionado, o arquivo PrivacyInfo aparece no navegador do projeto e você pode inspecionar os valores. - Verifique se o manifesto de privacidade foi adicionado criando um arquivo do app e gerando um relatório de privacidade a partir do arquivo.
Adicionar uma chave de API ao seu projeto
Os exemplos a seguir mostram como adicionar a chave de API ao seu projeto no Xcode:
Swift
Inclua sua chave de API ao AppDelegate.swift
da seguinte maneira:
- Adicione as seguintes instruções de importação:
import GoogleMaps import GoogleNavigation
- Adicione o seguinte ao seu método
application(_:didFinishLaunchingWithOptions:)
:GMSServices.provideAPIKey("YOUR_API_KEY")
Objective-C
Inclua sua chave de API ao AppDelegate.m
da seguinte maneira:
- Adicione as seguintes instruções de importação:
@import GoogleMaps; @import GoogleNavigation;
- Adicione o seguinte ao seu método
application:didFinishLaunchingWithOptions:
:[GMSServices provideAPIKey:@"YOUR_API_KEY"];
Adicionar um mapa
Este código demonstra como adicionar um mapa simples a um ViewController
já existente, incluindo algumas configurações iniciais de navegação.
Antes de ativar a navegação, o usuário precisa concordar com os Termos e
condições. Para fazer uma solicitação ao usuário, chame
GMSNavigationServices.showTermsAndConditionsDialogIfNeeded()
e verifique
se os termos foram aceitos. Se o usuário rejeitar os termos, mapView.isNavigationEnabled = true
não terá efeito e mapView.navigator
será nulo.
Swift
import UIKit import GoogleNavigation class ViewController: UIViewController { var mapView: GMSMapView! var locationManager: CLLocationManager! override func loadView() { locationManager = CLLocationManager() locationManager.requestAlwaysAuthorization() let camera = GMSCameraPosition.camera(withLatitude: 47.67, longitude: -122.20, zoom: 14) mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera) // Show the terms and conditions. let companyName = "Ride Sharing Co." GMSNavigationServices.showTermsAndConditionsDialogIfNeeded( withCompanyName: companyName) { termsAccepted in if termsAccepted { // Enable navigation if the user accepts the terms. self.mapView.isNavigationEnabled = true } else { // Handle the case when the user rejects the terms and conditions. } } view = mapView } // TODO: Add navigation code. }
Objective-C
#import "ViewController.h" @import GoogleNavigation; @interface ViewController () @end @implementation ViewController GMSMapView *_mapView; CLLocationManager *_locationManager; - (void)loadView { _locationManager = [[CLLocationManager alloc] init]; [_locationManager requestAlwaysAuthorization]; GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:47.67 longitude:-122.20 zoom:14]; _mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; // Show the terms and conditions. NSString *companyName = @"Ride Sharing Co."; [GMSNavigationServices showTermsAndConditionsDialogIfNeededWithCompanyName:companyName callback:^(BOOL termsAccepted) { if (termsAccepted) { // Enable navigation if the user accepts the terms. _mapView.navigationEnabled = YES; } else { // Handle the case when the user rejects the terms and conditions. } }]; self.view = _mapView; } // TODO: Add navigation code. @end
Execute o aplicativo. Será mostrado um mapa centralizado em Kirkland, Washington. Se o mapa não estiver visível, confirme se você forneceu a chave de API correta.
Se você for cliente de serviços de mobilidade
Se você é cliente de serviços de mobilidade, saiba mais sobre o faturamento na documentação do produto. Para mais informações sobre como registrar transações, consulte Configurar o faturamento. Para saber como adicionar IDs de transação à implementação do SDK do Navigation, consulte Associar o uso do serviço às transações do Mobility.