Configurare un progetto Xcode

Dopo aver abilitato la fatturazione e creato una chiave API, puoi configurare il progetto Xcode che utilizzi per sviluppare la tua app.

Le note di rilascio sono disponibili per ogni uscita.

Passaggio 1: installa il software richiesto

Per creare un progetto utilizzando Maps SDK for iOS, devi scaricare e installare:

  • Xcode 14.0 o versioni successive

Passaggio 2: crea il progetto Xcode e installa l'SDK Maps per iOS

Gestione pacchetti Swift

Maps SDK for iOS può essere installato tramite Swift Package Manager. Per aggiungere l'SDK, assicurati di aver rimosso qualsiasi SDK Maps per iOS esistente.

Per aggiungere l'SDK a un progetto nuovo o esistente:

  1. Apri Xcode project o workspace, quindi vai a File > Aggiungi dipendenze pacchetto.
  2. Inserisci https://github.com/googlemaps/ios-maps-sdk come URL, premi Invio per estrarre il pacchetto e fai clic su "Aggiungi pacchetto".
  3. Per installare un elemento version specifico, imposta il campo Regola di dipendenza su una delle opzioni basate sulle versioni. Per i nuovi progetti, ti consigliamo di specificare la versione più recente e di utilizzare l'opzione "Versione esatta". Al termine, fai clic su "Aggiungi pacchetto".
  4. Nella finestra Scegli prodotti nel pacchetto, verifica che GoogleMaps, GoogleMapsBase e GoogleMapsCore vengano aggiunti alla destinazione main designata. Al termine, fai clic su "Aggiungi pacchetto".
  5. Per verificare l'installazione, vai al riquadro General della destinazione. In Framework, librerie e contenuti incorporati dovresti vedere i pacchetti installati. Puoi anche visualizzare la sezione "Dipendenze pacchetto" di "Navigatore progetti" per verificare il pacchetto e la sua versione.

Per aggiornare package per un progetto esistente:

  1. Da Xcode, vai a "File > Pacchetti > Aggiorna alle versioni più recenti dei pacchetti".
  2. Per verificare l'installazione, vai alla sezione Dipendenze pacchetto di Navigatore progetto per verificare il pacchetto e la relativa versione.

Per rimuovere le dipendenze di Maps SDK esistenti per iOS aggiunte utilizzando CocoaPods, segui questi passaggi:

  1. Chiudi l'area di lavoro Xcode. Apri terminale ed esegui questo comando:
    sudo gem install cocoapods-deintegrate cocoapods-clean 
    pod deintegrate 
    pod cache clean --all
  2. Rimuovi Podfile, Podfile.resolved e Xcode workspace se non li utilizzi per scopi diversi da CocoaPods.

Per rimuovere manualmente l'SDK Maps per iOS esistente:
  1. Nelle impostazioni di configurazione del progetto Xcode, individua Frameworks, librerie e contenuti incorporati. Utilizza il segno meno(-) per rimuovere il seguente framework:
    • GoogleMaps.xcframework
    • GoogleMapsBase.xcframework
    • GoogleMapsCore.xcframework
  2. Dalla directory di primo livello del progetto Xcode, rimuovi il bundle GoogleMaps.

CocoaPods

L'SDK Maps for iOS è disponibile come pod CocoaPods. CocoaPods è un gestore delle dipendenze open source per i progetti Cocoa Swift e Objective-C.

Se non hai ancora lo strumento CocoaPods, installalo su macOS eseguendo questo comando dal terminale. Per maggiori dettagli, consulta la Guida introduttiva di CocoaPods.

sudo gem install cocoapods

Crea un Podfile per l'SDK Maps for iOS e utilizzalo per installare l'API e le sue dipendenze:

  1. Se non hai ancora un progetto Xcode, creane uno e salvalo nella tua macchina locale. Se non hai mai utilizzato lo sviluppo su iOS:
    1. Crea un nuovo progetto.
    2. Seleziona il modello iOS > App.
    3. Nella schermata delle opzioni del progetto:
      1. Inserisci il Nome progetto.
      2. Registra il valore del campo Identificatore pacchetto. Puoi utilizzare questo valore per limitare la chiave API di seguito.
      3. Imposta il progetto Interface su Storyboard.
      4. Imposta la Lingua su Swift o Objective-C.
  2. Crea un file denominato Podfile nella directory del progetto. Questo file definisce le dipendenze del progetto.
  3. Modifica Podfile e aggiungi le dipendenze insieme alle relative versions. Ecco un esempio che include la dipendenza necessaria per Maps SDK for iOS:
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '15.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GoogleMaps', '8.4.0'
    end
    
    Assicurati di eseguire regolarmente pod outdated per rilevare quando è disponibile una versione più recente e assicurarti di avere sempre la versione più recente. Se necessario, esegui l'upgrade alla versione più recente.
  4. Salva Podfile.
  5. Apri un terminale e vai alla directory contenente Podfile:

    cd <path-to-project>
  6. Esegui il comando pod install. Questa operazione installerà le API specificate in Podfile, insieme alle eventuali dipendenze presenti.

    pod install
  7. Chiudi Xcode, quindi apri (doppio clic) il file .xcworkspace del tuo progetto per avviare Xcode. Da questo momento in poi, dovrai utilizzare il file .xcworkspace per aprire il progetto.

Per aggiornare l'API per un progetto esistente:

  1. Apri un terminale e vai alla directory del progetto contenente Podfile.
  2. Esegui il comando pod update. Tutte le API specificate in Podfile verranno aggiornate all'ultima versione.

Installazione manuale

Questa guida mostra come aggiungere manualmente al progetto XCFrameworks contenente l'SDK Maps per iOS e come configurare le impostazioni di build in Xcode. Un XCFramework è un pacchetto binario che puoi utilizzare su più piattaforme, incluse le macchine che utilizzano Apple Silicon.
  1. Scarica i seguenti file binari dell'SDK e file di risorse:
  2. Estrai i file per accedere a XCFrameworks e alle risorse.
  3. Se non hai ancora un progetto Xcode, creane uno e salvalo nella tua macchina locale. Se non hai mai utilizzato lo sviluppo su iOS:
    1. Crea un nuovo progetto.
    2. Seleziona il modello iOS > App.
    3. Nella schermata delle opzioni del progetto:
      1. Inserisci il Nome progetto.
      2. Registra il valore del campo Identificatore pacchetto. Puoi utilizzare questo valore per limitare la chiave API di seguito.
      3. Imposta il progetto Interface su Storyboard.
      4. Imposta la Lingua su Swift o Objective-C.
  4. Apri la scheda Generali. Trascina i seguenti XCFrameworks nel progetto in Framework, librerie e contenuti incorporati. Assicurati di selezionare Non incorporare per ogni XCFramework:
    • GoogleMaps.xcframework
    • GoogleMapsBase.xcframework
    • GoogleMapsCore.xcframework
  5. Copia GoogleMaps.bundle da GoogleMapsResources che hai scaricato nella directory di primo livello del tuo progetto Xcode. Assicurati di selezionare Copia elementi nella cartella del gruppo di destinazione quando richiesto.
  6. Seleziona il progetto dal Navigatore progetti e scegli il target dell'applicazione.
  7. Apri la scheda Fasi di creazione per il target dell'applicazione. In Collega file binario alle librerie, aggiungi i seguenti framework e librerie:
    • Accelerate.framework
    • Contacts.framework
    • CoreData.framework
    • CoreGraphics.framework
    • CoreImage.framework
    • CoreLocation.framework
    • CoreTelephony.framework
    • CoreText.framework
    • GLKit.framework
    • ImageIO.framework
    • libc++.tbd
    • libz.tbd
    • Metal.framework
    • OpenGLES.framework
    • QuartzCore.framework
    • SystemConfiguration.framework
    • UIKit.framework
  8. Scegli il tuo progetto anziché una destinazione specifica e apri la scheda Impostazioni build. Nella sezione Collegamento - Generale -> Altri flag linker, aggiungi -ObjC a "Debug" e "Release". Se queste impostazioni non sono visibili, modifica il filtro nella barra Impostazioni build da Di base a Tutti.

  9. Per installare l'XCFramework di Places SDK for iOS, consulta la pagina Iniziare a utilizzare l'SDK Places per iOS.

Aggiungi il file manifest sulla privacy di Apple

  1. Scarica il bundle del manifest per la privacy per l'SDK Maps per iOS: GoogleMapsPrivacy.
  2. Estrai il file per accedere a GoogleMapsPrivacy.bundle.
  3. Copia GoogleMapsPrivacy.bundle nella directory di primo livello del progetto Xcode.

Passaggio 3: aggiungi la chiave API al progetto

In Ottieni una chiave API, hai generato una chiave API per la tua app. Ora aggiungi la chiave al progetto Xcode.

Negli esempi seguenti, sostituisci YOUR_API_KEY con la tua chiave API.

per ulteriori informazioni.

Swift

Aggiungi la tua chiave API a AppDelegate.swift come segue:

  1. Aggiungi la seguente istruzione di importazione:
    import GoogleMaps
  2. Aggiungi quanto segue al tuo metodo application(_:didFinishLaunchingWithOptions:) utilizzando la tua chiave API:
    GMSServices.provideAPIKey("YOUR_API_KEY")
  3. Se utilizzi anche l'API Places, aggiungi di nuovo la chiave come mostrato qui:
    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

Objective-C

Aggiungi la tua chiave API a AppDelegate.m come segue:

  1. Aggiungi la seguente istruzione di importazione:
    @import GoogleMaps;
  2. Aggiungi quanto segue al tuo metodo application:didFinishLaunchingWithOptions: utilizzando la tua chiave API:
    [GMSServices provideAPIKey:@"YOUR_API_KEY"];
  3. Se utilizzi anche l'API Places, aggiungi di nuovo la chiave come mostrato qui:
    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];

Passaggio 4: aggiungi una mappa

Swift

/*
 *   Copyright 2020 Google Inc. All rights reserved.
 *
 *
 *   Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
 *   file except in compliance with the License. You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software distributed under
 *   the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
 *   ANY KIND, either express or implied. See the License for the specific language governing
 *   permissions and limitations under the License.
 */

import UIKit
import GoogleMaps

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        // Create a GMSCameraPosition that tells the map to display the
        // coordinate -33.86,151.20 at zoom level 6.

        let options = GMSMapViewOptions()
        options.camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 6.0)
        options.frame = self.view.bounds

        let mapView = GMSMapView(options: options)
        self.view.addSubview(mapView)

        // Creates a marker in the center of the map.
        let marker = GMSMarker()
        marker.position = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.20)
        marker.title = "Sydney"
        marker.snippet = "Australia"
        marker.map = mapView
  }
}

Objective-C

/*
*   Copyright 2020 Google Inc. All rights reserved.
*
*
*   Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
*   file except in compliance with the License. You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
*   Unless required by applicable law or agreed to in writing, software distributed under
*   the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
*   ANY KIND, either express or implied. See the License for the specific language governing
*   permissions and limitations under the License.
*/

#import "ViewController.h"
#import <GoogleMaps/GoogleMaps.h>

@interface ViewController()

@end

@implementation ViewController

-   (void)viewDidLoad {
  [super viewDidLoad];
  // Do any additional setup after loading the view.
  // Create a GMSCameraPosition that tells the map to display the
  // coordinate -33.86,151.20 at zoom level 6.
  GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
  options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:6];
  options.frame = self.view.bounds;
  GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

  [self.view addSubview:mapView];

  // Creates a marker in the center of the map.
  GMSMarker *marker = [[GMSMarker alloc] init];
  marker.position = CLLocationCoordinate2DMake(-33.86, 151.20);
  marker.title = @"Sydney";
  marker.snippet = @"Australia";
  marker.map = mapView;
}

@end

Passaggio 5 (facoltativo): dichiara gli schemi URL utilizzati dall'API

A partire da iOS 9 e Xcode 7, le app possono dichiarare gli schemi URL che intendono aprire, specificando gli schemi nel file Info.plist dell'app. Maps SDK for iOS apre l'app mobile Google Maps quando l'utente fa clic sul logo Google nella mappa e la tua app può pertanto dichiarare gli schemi URL pertinenti.

Per dichiarare gli schemi URL utilizzati da Maps SDK for iOS, aggiungi le seguenti righe a Info.plist:

LSApplicationQueriesSchemes googlechromes comgooglemaps

Il seguente screenshot mostra la configurazione nell'interfaccia utente di Xcode:

Configurazione di LSApplicationQueriesSchemes in
Xcode

Senza la dichiarazione di cui sopra, possono verificarsi i seguenti errori quando l'utente tocca il logo Google sulla mappa:

-canOpenURL: non riuscito per URL: "comgooglemaps://" - errore: "Questa app non è autorizzata a eseguire query per lo schema comgooglemaps" -canOpenURL: non riuscita per l'URL: "googlechromes://" - errore: "Questa app non è autorizzata a eseguire query per lo schema googlechromes"

Per eliminare questi errori, aggiungi la dichiarazione a Info.plist.

Passaggi successivi

Ora che disponi di una chiave API e di un progetto Xcode, puoi creare ed eseguire app. L'SDK di navigazione per iOS fornisce molti tutorial e app di esempio che possono aiutarti a iniziare. Per ulteriori dettagli, vedi: