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 ter um projeto com uma conta de faturamento e ativar o SDK do Maps para iOS. Recomendamos ter vários proprietários de projetos e administradores de faturamento para que sempre haja alguém disponível com essas funções 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 do iOS de destino para o SDK de navegação é a 15.0.
Etapa 1: instalar o SDK
Gerenciador de pacotes do Swift
O SDK do Navigation pode ser instalado pelo Swift Package Manager. Para adicionar o SDK, verifique se você removeu todas as dependências atuais 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. - Digite 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
será adicionado ao destinomain
designado. Quando terminar, clique em "Adicionar pacote". -
Para verificar sua instalação, navegue até o painel
General
do destino. Em Frameworks, bibliotecas e conteúdo incorporado, você verá os pacotes instalados. Você também pode ver a seção "Package Dependencies" do "Project Navigator" para verificar o pacote e a versão dele.
Para atualizar o package
de um projeto existente, siga estas etapas:
Se você estiver fazendo upgrade de uma versão anterior à 9.0.0, remova as seguintes dependências:
GoogleMapsBase
,GoogleMapsCore
eGoogleMapsM4B
após o upgrade. Não remova a dependência deGoogleMaps
. Para mais informações, consulte as Notas de lançamento da versão 9.0.0.Nas configurações do projeto do Xcode, localize Frameworks, bibliotecas e conteúdo incorporado. Use o sinal de menos(-) para remover o seguinte framework:
GoogleMapsBase
(apenas para upgrades de versões anteriores à 9.0.0)GoogleMapsCore
(apenas para upgrades de versões anteriores à 9.0.0)GoogleMapsM4B
(apenas para upgrades de versões anteriores à 9.0.0)
- No Xcode, acesse "File > Packages > Update To latest Package Versions".
- Para verificar sua instalação, vá para a seção Package Dependencies do Project Navigator para conferir o pacote e a versão dele.
Para remover as dependências do SDK do Navigation adicionadas usando
CocoaPods
, siga estas etapas:
- Feche seu 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 não os usar para algo diferente do CocoaPods.
-
Nas configurações do projeto do Xcode, localize 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 (em inglês). 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 iniciação do CocoaPods.
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
máquina local. Se você 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, faça o seguinte:
- 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 a linguagem 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. Veja 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, '15.0' target 'YOUR_APPLICATION_TARGET_NAME_HERE' do pod 'GoogleNavigation', '9.0.0' 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
e 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 atual, 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 que contém o SDK do Navigation para iOS e o SDK do Maps para iOS ao seu 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 os XCFrameworks e os SDK do Navigation e do Maps para iOS nos SDKs do Navigation e do Maps:
- 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 de 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 Copy items if needed):
GoogleMaps.xcframework
GoogleMapsBase.xcframework
GoogleMapsCore.xcframework
GoogleNavigation.xcframework
- Arraste
GoogleMaps.bundle
de GoogleMapsResources que você transferiu por download 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
dos GoogleNavigationResources que você transferiu 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 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 aplicativo de destino, selecione a guia Capabilities, ative Background Modes e habilite 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, altere o filtro na barra Build Settings de Basic para All. - Abra
Info.plist
e adicione os seguintes pares de chave-valor:- Chave:
NSLocationWhenInUseUsageDescription
(Privacidade - Descrição de uso do local)
Valor: "Este app precisa de permissão para usar seu local na navegação guiada." - Chave:
NSLocationAlwaysAndWhenInUseUsageDescription
(Privacidade - Descrição de uso do local sempre e quando em uso)
Valor: "Este app precisa de permissão para usar seu local na navegação guiada."
- Chave:
Etapa 2: inspecionar o arquivo do Manifesto de privacidade da Apple
A Apple exige detalhes de privacidade de apps na App Store. Acesse a página de detalhes de privacidade da App Store da Apple para atualizações e mais informações.
O arquivo do Manifesto de privacidade da Apple está incluído no pacote de recursos do SDK. Para verificar se o arquivo do manifesto de privacidade foi incluído e inspecionar o conteúdo dele, crie um arquivo do seu app e gere um relatório de privacidade.
Etapa 3: adicionar uma chave de API ao 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"];
Etapa 4: adicionar um mapa
Esse código demonstra como adicionar um mapa simples a um ViewController
, incluindo algumas configurações iniciais para navegação.
Antes que a navegação possa ser ativada, 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á
nil.
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. Você verá um mapa centralizado em Kirkland, Washington. Se o mapa não aparecer, confirme se você informou a chave de API correta.
Se você é cliente de serviços de mobilidade
Se você é um cliente de serviços de mobilidade, saiba mais sobre faturamento na documentação de mobilidade. 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.