Xcode-Projekt einrichten

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

Versionshinweise sind für alle Veröffentlichung.

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 installiert werden. Swift Package Manager Damit du das SDK hinzufügen kannst, alle vorhandenen Abhängigkeiten des Places SDK for iOS entfernt.

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

  1. Öffne deinen Xcode project oder workspace und klicke auf Datei > Paketabhängigkeiten hinzufügen.
  2. Geben Sie https://github.com/googlemaps/ios-places-sdk als URL ein und drücken Sie die Eingabetaste. um das Paket zu laden, und klicke auf „Paket hinzufügen“.
  3. Um eine bestimmte version zu installieren, legen Sie das Feld Abhängigkeitsregel auf eine der folgenden Werte fest: zu den versionsbasierten Optionen. Für neue Projekte empfehlen wir, die neueste Version und mit der Spalte „Exakte Version“ Option. Klicke anschließend auf „Paket hinzufügen“.
  4. Prüfe im Fenster Paketprodukte auswählen, ob GooglePlaces hinzugefügt wird Ihr festgelegtes Ziel für main. 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 die „Paketabhängigkeiten“ von Projektnavigator um das Paket und seine Version zu überprüfen.

So aktualisieren Sie den package für ein vorhandenes Projekt:

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

    Gehen Sie in den Konfigurationseinstellungen des Xcode-Projekts zu Frameworks, Libraries, 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 > Pakete > Auf neueste Paketversionen aktualisieren“.
  3. Um die Installation zu überprüfen, gehen Sie in der Projektnavigation zum Abschnitt Paketabhängigkeiten. um das Paket und seine Version zu überprüfen.

So entfernen Sie vorhandene Abhängigkeiten des Places SDK for iOS, die mithilfe von CocoaPods, gehen Sie so vor:

  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. Entfernen Sie Podfile, Podfile.resolved und den Xcode workspace, wenn du sie ausschließlich für CocoaPods verwendest.

So entfernen Sie manuell installierte Places SDK for iOS: führen Sie folgende Schritte aus:
  1. Gehen Sie in den Konfigurationseinstellungen des Xcode-Projekts zu Frameworks, Libraries, und eingebettete Inhalte. Verwenden Sie das Minuszeichen(-), um das folgende Framework zu entfernen:
    • GooglePlaces.xcframework
  2. Entfernen Sie im Verzeichnis der obersten Ebene Ihres Xcode-Projekts das GooglePlaces Set.

CocoaPods

Das Places SDK for iOS ist als CocoaPod verfügbar. GooglePlaces, der alle Places-Funktionen enthält.

CocoaPods ist ein Open-Source-Abhängigkeitsmanager für Cocoa-Projekte in Swift und Objective-C. Wenn Sie das Tool CocoaPods noch nicht haben, installieren Sie es auf unter macOS durch Ausführen des folgenden Befehls im Terminal. Weitere Informationen finden Sie unter im Startleitfaden für CocoaPods

sudo gem install cocoapods

Podfile für das Places SDK for iOS erstellen und verwenden 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 du noch keine Erfahrung mit der iOS-Entwicklung hast, erstelle 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 den zugehörigen Versionen hinzu. Hier ist eine in dem das Anwendungsziel und der Name des dem Pod GooglePlaces:
    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 pod outdated regelmäßig aus, um zu erkennen, wann eine neuere um sicherzustellen, dass Sie immer die aktuelle Version verwenden.
  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 APIs aktualisiert in Podfile auf die neueste Version aktualisiert.

Manuelle Installation

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

  1. Laden Sie die folgenden SDK-Binärdateien 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 du noch keine Erfahrung mit der iOS-Entwicklung hast, erstelle 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 unter Frameworks, Bibliotheken und eingebettete Inhalte. Achten Sie darauf, um Nicht einbetten auszuwählen:
    • GooglePlaces.xcframework
  6. GooglePlaces.bundle aus den heruntergeladenen GooglePlacesResources ziehen
  7. Kopieren Sie den GooglePlaces.bundle aus GooglePlacesResources. die Sie in das Verzeichnis der obersten Ebene Ihres Xcode-Projekts heruntergeladen haben. Achten Sie darauf, Kopieren Sie die Elemente in den Ordner der Zielgruppe, wenn Sie dazu aufgefordert werden.
  8. Wählen Sie im Project Navigator Ihr Projekt und dann Anwendungsziel.
  9. Öffnen Sie den Tab Build Phases (Build-Phasen). Innerhalb von Binärprogramm verknüpfen mit Bibliotheken, fügen Sie die folgenden Frameworks und Bibliotheken hinzu:
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  10. Wählen Sie Ihr Projekt statt eines bestimmten Ziels aus und öffnen Sie das Build Settings (Build-Einstellungen). Klicken Sie im Menü Linking - General -> Andere Verknüpfung Flags hinzufügen, fügen Sie -ObjC zur Fehlerbehebung hinzu. und „Veröffentlichung“. Wenn diese Einstellungen nicht sichtbar sind, ändern Sie den Filter in der Leiste Build-Einstellungen von Einfach zu Alle ändern.

GooglePlacesSwift

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

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 bei 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
  • Folgendes Ihrem application(_:didFinishLaunchingWithOptions:) hinzufügen 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;
  • Folgendes Ihrem application:didFinishLaunchingWithOptions: hinzufügen und ersetzen Sie dabei 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
  • Folgendes Ihrem application(_:didFinishLaunchingWithOptions:) hinzufügen und ersetzen Sie dabei 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 Beispiel-Apps.