Xcode-Projekt einrichten

Nachdem Sie die Abrechnung aktiviert und einen API-Schlüssel erstellt haben, können Sie das Xcode-Projekt einrichten, mit dem Sie Ihre Anwendung entwickeln.

Für jede Version sind Versionshinweise verfügbar.

Schritt 1: Erforderliche Software installieren

Zum Erstellen eines Projekts mit dem Places SDK for iOS benötigen Sie Folgendes:

  • Xcode Version 15.0 oder höher

Schritt 2: Xcode-Projekt erstellen und Places SDK for iOS installieren

Swift-Paketmanager

Das Places SDK for iOS kann über den Paketmanager Swift installiert werden. Wenn Sie das SDK hinzufügen möchten, müssen Sie alle vorhandenen Abhängigkeiten des Places SDK for iOS entfernt haben.

So fügen Sie das SDK einem neuen oder vorhandenen Projekt hinzu:

  1. Öffnen Sie Xcode project oder workspace und klicken Sie dann auf Datei > Paketabhängigkeiten hinzufügen.
  2. Geben Sie https://github.com/googlemaps/ios-places-sdk als URL ein, drücken Sie die Eingabetaste, um das Paket abzurufen, und klicken Sie auf „Paket hinzufügen“.
  3. Wenn Sie eine bestimmte version installieren möchten, legen Sie das Feld Abhängigkeitsregel auf eine der versionsbasierten Optionen fest. Bei neuen Projekten empfehlen wir, die neueste Version anzugeben und die Option „Exakte Version“ zu verwenden. Klicke anschließend auf „Paket hinzufügen“.
  4. Prüfen Sie im Fenster Paketprodukte auswählen, ob GooglePlaces dem festgelegten Ziel main hinzugefügt wird. Klicke anschließend auf „Paket hinzufügen“.
  5. Um die Installation zu überprüfen, navigiere zum Bereich General deines Ziels. Die installierten Pakete sollten nun unter Frameworks, Bibliotheken und eingebettete Inhalte zu sehen sein. Sie können auch den Abschnitt „Paketabhängigkeiten“ der Projektnavigation aufrufen, um das Paket und seine Version zu prüfen.

So aktualisieren Sie package für ein vorhandenes Projekt:

  1. Wenn Sie ein Upgrade von einer Version vor 9.0.0 durchführen, müssen Sie nach dem Upgrade die folgenden Abhängigkeiten entfernen: GoogleMapsBase, GoogleMapsCore und GoogleMapsM4B. Entfernen Sie die Abhängigkeit für GoogleMaps nicht. Weitere Informationen finden Sie in den Versionshinweisen zu Version 9.0.0.

    Suchen Sie in den Xcode-Projektkonfigurationseinstellungen nach Frameworks, Bibliotheken und eingebettete Inhalte. Verwenden Sie das Minuszeichen(-), um das folgende Framework zu entfernen:

    • GoogleMapsBase (nur für Upgrades von Versionen vor 9.0.0)
    • GoogleMapsCore (nur für Upgrades von Versionen vor 9.0.0)
    • GoogleMapsM4B (nur für Upgrades von Versionen vor 9.0.0)
  2. Gehen Sie in Xcode zu „File > Packages > Update to Latest Package Versions“ (Datei > Pakete> Auf neueste Paketversionen aktualisieren).
  3. Um Ihre Installation zu überprüfen, gehen Sie zum Abschnitt Paketabhängigkeiten der Projektnavigation, um das Paket und seine Version zu überprüfen.

So entfernen Sie vorhandene Places SDK for iOS-Abhängigkeiten, die mithilfe von CocoaPods hinzugefügt wurden:

  1. Schließen Sie den Xcode-Arbeitsbereich. Öffnen Sie das Terminal und führen Sie den folgenden Befehl aus:
    sudo gem install cocoapods-deintegrate cocoapods-clean 
    pod deintegrate 
    pod cache clean --all
  2. Entferne Podfile, Podfile.resolved und Xcode workspace, wenn du sie ausschließlich für CocoaPods verwendest.

So entfernen Sie manuell installierte Places SDK for iOS:
  1. Suchen Sie in den Xcode-Projektkonfigurationseinstellungen nach Frameworks, Bibliotheken und eingebettete Inhalte. Verwenden Sie das Minuszeichen(-), um das folgende Framework zu entfernen:
    • GooglePlaces.xcframework
  2. Entfernen Sie das GooglePlaces-Bundle aus dem Verzeichnis der obersten Ebene Ihres Xcode-Projekts.

CocoaPods

Das Places SDK for iOS ist als CocoaPod-Pod (GooglePlaces) verfügbar und enthält alle Places-Funktionen.

CocoaPods ist ein Open-Source-Abhängigkeitsmanager für Cocoa-Projekte in Swift und Objective-C. Wenn du das Tool CocoaPods noch nicht hast, installiere es unter macOS, indem du den folgenden Befehl über das Terminal ausführst. Weitere Informationen findest du im Startleitfaden für CocoaPods.

sudo gem install cocoapods

Erstellen Sie ein Podfile für das Places SDK for iOS und verwenden Sie es, um das SDK und seine Abhängigkeiten zu installieren:

  1. Falls du noch kein Xcode-Projekt hast, erstelle eines und speichere es auf dem lokalen Rechner. Wenn Sie noch keine Erfahrung mit der iOS-Entwicklung haben, erstellen Sie ein neues Projekt und wählen Sie die Vorlage für iOS-Apps aus.
  2. Erstelle in deinem Projektverzeichnis eine Datei mit dem Namen Podfile. In dieser Datei sind die Abhängigkeiten des Projekts definiert.
  3. Bearbeiten Sie die Podfile und fügen Sie die Abhängigkeiten zusammen mit ihren Versionen hinzu. Im folgenden Beispiel werden der Name des Anwendungsziels und der Name des Pods GooglePlaces angegeben:
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '15.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GooglePlaces', '8.3.0'
    end
    
    Führen Sie regelmäßig pod outdated aus, um zu erkennen, wann eine neuere Version verfügbar ist und Sie immer auf dem neuesten Stand sind.
  4. Speichere die Podfile.
  5. Öffne ein Terminalfenster und suche das Verzeichnis mit der Podfile:

    cd <path-to-project>
  6. Führe den Befehl pod install aus. Dadurch werden die in der Podfile angegebenen APIs und ggf. zugehörige Abhängigkeiten installiert.

    pod install
  7. Schließe Xcode und öffne dann mit einem Doppelklick die Datei .xcworkspace deines Projekts, um Xcode wieder zu starten. Ab jetzt musst du das Projekt über die Datei .xcworkspace aufrufen.

So aktualisieren Sie die API für ein vorhandenes Projekt:

  1. Öffnen Sie ein Terminal und rufen Sie das Projektverzeichnis mit der Datei Podfile auf.
  2. Führe den Befehl pod update aus. Dadurch werden alle in der Podfile angegebenen APIs auf die neueste Version aktualisiert.

Manuelle Installation

In diesem Leitfaden erfahren Sie, wie Sie das XCFramework, das das Places SDK for iOS enthält, Ihrem Projekt manuell hinzufügen und die Build-Einstellungen in Xcode konfigurieren. Ein XCFramework ist ein Binärpaket, das Sie auf mehreren Plattformen verwenden können, einschließlich Rechnern, die Apple Silicon verwenden.

  1. Laden Sie die folgenden SDK-Binär- und Ressourcendateien herunter:
  2. Extrahieren Sie die Dateien, um auf XCFramework und Ressourcen zuzugreifen.
  3. Starte Xcode und öffne ein vorhandenes oder erstelle ein neues Projekt. Wenn Sie noch keine Erfahrung mit der iOS-Entwicklung haben, erstellen Sie ein neues Projekt und wählen Sie die Vorlage für iOS-Apps aus.
  4. Entfernen Sie Maps-Bündel aus vorherigen Releases aus Ihrem Projekt.
  5. Öffnen Sie den Tab Allgemein. Ziehen Sie das folgende XCFramework in Ihr Projekt zu Frameworks, Libraries, and Embedded Content (Frameworks, Bibliotheken und eingebettete Inhalte). Wähle Nicht einbetten aus:
    • GooglePlaces.xcframework
  6. GooglePlaces.bundle aus den heruntergeladenen GooglePlacesResources ziehen
  7. Kopieren Sie die GooglePlaces.bundle aus den heruntergeladenen GooglePlacesResources in die oberste Ebene Ihres Xcode-Projekts. Wählen Sie bei entsprechender Aufforderung Elemente in Ordner der Zielgruppe kopieren aus.
  8. Wählen Sie Ihr Projekt aus dem Project Navigator und dann das Ziel Ihrer App aus.
  9. Öffnen Sie den Tab Build Phases (Build-Phasen). Fügen Sie unter Link Binary with Libraries (Binärdatei mit Bibliotheken verknüpfen) die folgenden Frameworks und Bibliotheken hinzu:
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  10. Wählen Sie Ihr Projekt anstelle eines bestimmten Ziels aus und öffnen Sie den Tab Build Settings (Build-Einstellungen). Fügen Sie im Abschnitt Verknüpfung – Allgemein -> Andere Verknüpfungs-Flags -ObjC zu „Debug“ und „Release“ hinzu. Wenn diese Einstellungen nicht angezeigt werden, ändern Sie den Filter in der Leiste Build Settings (Build-Einstellungen) von Basic (Standard) zu All (Alle).

GooglePlacesSwift

Sie können das GooglePlacesSwift (Vorabversion) SDK mit Swift Package Manager, CocoaPods oder manuell installieren. Die Schritte für die Installation in allen Prozessen entsprechen den Schritten für das Places SDK for iOS. Es gibt jedoch folgende Unterschiede:

Wenn Sie CocoaPods verwenden, sieht der bearbeitete Podfile beispielsweise so aus:

source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '15.3'

target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
  pod 'GooglePlacesSwift', '0.1.0'
end

Schritt 3: Apple Privacy Manifest-Datei prüfen

Apple verlangt, dass für Apps im App Store Details zum App-Datenschutz angegeben werden. Aktuelle Informationen und weitere Informationen finden Sie auf der Seite zu Datenschutzdetails im Apple App Store.

Die Apple Privacy Manifest-Datei ist im Ressourcenpaket für das SDK enthalten. Wenn Sie prüfen möchten, ob die Privacy Manifest-Datei enthalten ist, und ihren Inhalt prüfen möchten, erstellen Sie ein Archiv Ihrer App und generieren Sie aus dem Archiv einen Datenschutzbericht.

Schritt 4: API-Schlüssel zur App hinzufügen

Ersetzen Sie YOUR_API_KEY in den folgenden Beispielen durch Ihren API-Schlüssel.

Swift

Füge deinen API-Schlüssel folgendermaßen in AppDelegate.swift ein:

  • Fügen Sie die folgende Importanweisung hinzu:
    import GooglePlaces
  • Fügen Sie der Methode application(_:didFinishLaunchingWithOptions:) Folgendes hinzu und ersetzen Sie YOUR_API_KEY durch Ihren API-Schlüssel:
    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

Objective-C

Füge deinen API-Schlüssel folgendermaßen in AppDelegate.m ein:

  • Fügen Sie die folgende Importanweisung hinzu:
    @import GooglePlaces;
  • Fügen Sie der Methode application:didFinishLaunchingWithOptions: Folgendes hinzu und ersetzen Sie YOUR_API_KEY durch Ihren API-Schlüssel:
    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];

GooglePlacesSwift

Füge deinen API-Schlüssel folgendermaßen in AppDelegate.swift ein:

  • Fügen Sie die folgende Importanweisung hinzu:
    import GooglePlacesSwift
  • Fügen Sie der Methode application(_:didFinishLaunchingWithOptions:) Folgendes hinzu und ersetzen Sie YOUR_API_KEY durch Ihren API-Schlüssel:
    PlacesClient.shared.provideAPIKey("YOUR_API_KEY")

Schritt 5: Erste Schritte im Codeschreiben

Die folgenden Codebeispiele zeigen, wie Sie den aktuellen Ort abrufen.

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
  

GooglePlacesSwift

  struct ContentView: View {
    @State var place: Place?

    var body: some View {
      Button("Get Place") {
        // A hotel in Saigon with an attribution.
        let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs"
        let fetchPlaceRequest = FetchPlaceRequest(
          placeID: placeID,
          placeProperties: [.displayName, .formattedAddress]
        )
        Task {
          switch await placesClient.fetchPlace(with: fetchPlaceRequest) {
          case .success(let place):
            self.place = place
          case .failure(let placesError):
            // Handle error
        }
      Text(swiftPlace?.displayName ?? "No place yet")
        .padding()
      Text(swiftPlace?.formattedAddress ?? "No place yet")
        .padding()
    }
  }
  

Nächste Schritte

Nachdem Ihr Projekt konfiguriert wurde, können Sie sich die Beispielanwendungen ansehen.