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 App entwickeln.

Für jeden Release sind Versionshinweise verfügbar.

Schritt 1: Erforderliche Software installieren

Wenn Sie ein Projekt mit dem Places SDK for iOS erstellen möchten, benötigen Sie Folgendes:

  • Xcode Version 14.0 oder höher
  • Cocoapods
  • Schritt 2: Xcode-Projekt erstellen und Places SDK for iOS installieren

    So installieren Sie die API in einem neuen Projekt:

    Mit CocoaPods

    Das Places SDK for iOS ist als CocoaPod-Pod (GooglePlaces) mit allen Places-Funktionen verfügbar.

    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 zu CocoaPods.

    sudo gem install cocoapods

    Erstellen Sie eine Podfile für das Places SDK for iOS und installieren Sie damit das SDK und die zugehörigen Abhängigkeiten:

    1. Falls du noch kein Xcode-Projekt hast, erstelle eines und speichere es auf dem lokalen Rechner. Wenn Sie noch nicht so lange in der iOS-Entwicklung sind, 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 Ihre Abhängigkeiten zusammen mit ihren Versionen hinzu. Im folgenden Beispiel werden der Name des Anwendungsziels und der Name des GooglePlaces-Pods angegeben:
      source 'https://github.com/CocoaPods/Specs.git'
      
      platform :ios, '14.0'
      
      target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
        pod 'GooglePlaces', '8.2.1'
      end
      
      Führen Sie pod outdated regelmäßig aus, um zu erkennen, ob eine neuere Version verfügbar ist, damit Sie immer die neueste Version haben.
    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 auf, das Podfile enthält.
    2. Führe den Befehl pod update aus. Dadurch werden alle in Podfile angegebenen APIs auf die neueste Version aktualisiert.

    XCFramework installieren

    Ein XCFramework ist ein binäres Paket, das Sie zum Installieren des Places SDK for iOS auf mehreren Plattformen verwenden können, einschließlich Computern, die den M1-Chipsatz verwenden. In diesem Leitfaden erfahren Sie, wie Sie das XCFramework mit dem Places SDK for iOS zu Ihrem Projekt hinzufügen und die Build-Einstellungen in Xcode konfigurieren.

    Manuell

    In diesem Leitfaden erfahren Sie, wie Sie das Maps SDK for iOS Ihrem Projekt manuell hinzufügen und Ihre Build-Einstellungen in Xcode konfigurieren.

    1. Laden Sie die SDK-Quelldateien herunter: GooglePlaces-8.2.1.
    2. Entpacke die Quelldateien. Öffnen Sie den Ordner Frameworks, um auf XCFramework zuzugreifen.
    3. Starten Sie Xcode und öffnen Sie entweder ein vorhandenes Projekt oder erstellen Sie ein neues Projekt. Wenn Sie mit iOS noch nicht vertraut sind, erstellen Sie ein neues Projekt und wählen Sie die Vorlage für iOS-Apps aus.
    4. Ziehen Sie das folgende XCFramework in Ihr Projekt unter Frameworks, Bibliotheken und eingebettete Inhalte. Wähle Nicht einbetten aus:
      • GooglePlaces-x.x.x/GooglePlaces.xcframework
    5. Klicken Sie mit der rechten Maustaste in Ihrem Projekt auf GooglePlaces.xcframework und wählen Sie Im Finder anzeigen aus.
    6. Ziehen Sie GooglePlaces.bundle aus dem Ordner ios-arm64/GooglePlaces.framework/Resources in das Verzeichnis der obersten Ebene Ihres Xcode-Projekts. Achten Sie darauf, dass Copy items into destination group's folder (Elemente in Ordner der Zielgruppe kopieren) nicht ausgewählt ist, wenn Sie dazu aufgefordert werden.
    7. Wählen Sie Ihr Projekt im Project Navigator und dann das Ziel Ihrer Anwendung aus.
    8. Öffnen Sie den Tab Build Phases (Build-Phasen) und 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
    9. Wählen Sie Ihr Projekt anstelle eines bestimmten Ziels aus und öffnen Sie den Tab Build Settings (Build-Einstellungen).

    10. Fügen Sie im Abschnitt Other Linker Flags den Wert -ObjC hinzu. Wenn diese Einstellungen nicht angezeigt werden, ändern Sie den Filter in der Leiste Build-Einstellungen von Basic in All.

    Mit Karthago

    Manuell einbinden

    In diesem Leitfaden erfahren Sie, wie Sie das GooglePlaces-Framework Ihrem Projekt manuell hinzufügen und Ihre Build-Einstellungen in Xcode konfigurieren.

    1. Laden Sie die SDK-Quelldateien herunter: GooglePlaces-8.2.1
    2. Entpacke die Quelldateien.
    3. Starte Xcode und öffne ein vorhandenes oder erstelle ein neues Projekt. Wenn Sie noch nicht so lange in der iOS-Entwicklung sind, 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. Ziehen Sie die folgenden Bundles in Ihr Projekt und wählen Sie bei entsprechender Aufforderung Copy items if needed (Elemente bei Bedarf kopieren) aus:
      • GooglePlaces-x.x.x/Frameworks/GooglePlaces.xcframework
    6. Klicke in deinem Projekt mit der rechten Maustaste auf GooglePlaces.xcframework und wähle Show In Finder (In Finder zeigen) aus.
    7. Ziehe GooglePlaces.bundle aus dem Ordner Resources in dein Projekt. Prüfe, wenn du dazu aufgefordert wirst, ob Copy items into destination group's folder (Elemente in Ordner der Zielgruppe kopieren) ausgewählt ist. Das sollte nicht der Fall sein.
    8. Wähle im Project Navigator dein Projekt aus und gib dann das Ziel deiner App an.
    9. Öffnen Sie den Tab Build Phases (Build-Phasen) und 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ähle statt eines bestimmten Ziels dein Projekt aus und öffne den Tab Build Settings (Build-Einstellungen).

    11. Fügen Sie im Abschnitt Other Linker Flags den Wert -ObjC hinzu. Wenn diese Einstellungen nicht angezeigt werden, ändern Sie den Filter in der Leiste Build-Einstellungen von Basic in All.

    Schritt 3: 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 dabei 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 dabei YOUR_API_KEY durch Ihren API-Schlüssel:
      [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];

    Schritt 4: Mit dem Schreiben von Code beginnen

    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
          

    Nächste Schritte

    Nachdem Ihr Projekt konfiguriert wurde, können Sie sich die Beispiel-Apps ansehen. Auf Ihrem Gerät muss Cocoapods v1.6.1 installiert sein.