Criar o projeto

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:

  1. Abra o Xcode project ou workspace e acesse File > Add Package Dependencies.
  2. Digite https://github.com/googlemaps/ios-navigation-sdk como o URL, pressione Enter para extrair o pacote e clique em "Adicionar pacote".
  3. 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".
  4. Na janela Choose Package Products, verifique se GoogleNavigation será adicionado ao destino main designado. Quando terminar, clique em "Adicionar pacote".
  5. 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:

  1. Se você estiver fazendo upgrade de uma versão anterior à 9.0.0, remova as seguintes dependências: GoogleMapsBase, GoogleMapsCore e GoogleMapsM4B após o upgrade. Não remova a dependência de GoogleMaps. 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)
  2. No Xcode, acesse "File > Packages > Update To latest Package Versions".
  3. 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:

  1. 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
  2. Remova Podfile, Podfile.resolved e workspace do Xcode se não os usar para algo diferente do CocoaPods.

Para remover o SDK do Navigation para iOS instalado manualmente, siga estas etapas:
  1. 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
  2. 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:

  1. 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:
    1. Crie um novo projeto.
    2. Selecione o modelo iOS > App.
    3. Na tela de opções do projeto, faça o seguinte:
      1. Digite o Nome do projeto.
      2. Registre o valor do campo Identificador do pacote. Use esse valor para restringir sua chave de API abaixo.
      3. Defina a Interface do projeto como Storyboard.
      4. Defina a linguagem como Swift ou Objective-C.
  2. Crie um arquivo chamado Podfile no seu diretório do projeto para definir as dependências.
  3. 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
            
    Execute pod outdated regularmente para detectar versões mais recentes. Se necessário, faça upgrade para a versão mais recente.
  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 instala as APIs especificadas no Podfile e todas as 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 atual, 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 atualiza todas as APIs especificadas no Podfile 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:

  1. Faça o download dos seguintes arquivos binários e de recursos do SDK:
  2. 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.
  3. Remova todas as referências existentes de Maps, Navigation e Places do projeto.
  4. 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
  5. 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.
  6. 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.
  7. Selecione o projeto no Project Navigator e escolha o destino do aplicativo.
  8. 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
  9. 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
  10. 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.
  11. 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."

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:

  1. Adicione as seguintes instruções de importação:
    import GoogleMaps
    import GoogleNavigation
  2. 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:

  1. Adicione as seguintes instruções de importação:
    @import GoogleMaps;
    @import GoogleNavigation;
  2. 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.