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:
-
Öffnen Sie Xcode
project
oderworkspace
und klicken Sie dann auf Datei > Paketabhängigkeiten hinzufügen. - 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“.
-
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“. -
Prüfen Sie im Fenster Paketprodukte auswählen, ob
GooglePlaces
dem festgelegten Zielmain
hinzugefügt wird. Klicke anschließend auf „Paket hinzufügen“. -
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:
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
undGoogleMapsM4B
. Entfernen Sie die Abhängigkeit fürGoogleMaps
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)
- Gehen Sie in Xcode zu „File > Packages > Update to Latest Package Versions“ (Datei > Pakete> Auf neueste Paketversionen aktualisieren).
- 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:
- 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
-
Entferne
Podfile
,Podfile.resolved
und Xcodeworkspace
, wenn du sie ausschließlich für CocoaPods verwendest.
-
Suchen Sie in den Xcode-Projektkonfigurationseinstellungen nach Frameworks, Bibliotheken und eingebettete Inhalte. Verwenden Sie das Minuszeichen(-), um das folgende Framework zu entfernen:
GooglePlaces.xcframework
-
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:
- 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.
- Erstelle in deinem Projektverzeichnis eine Datei mit dem Namen
Podfile
. In dieser Datei sind die Abhängigkeiten des Projekts definiert. - 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 PodsGooglePlaces
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äßigpod outdated
aus, um zu erkennen, wann eine neuere Version verfügbar ist und Sie immer auf dem neuesten Stand sind. - Speichere die
Podfile
. Öffne ein Terminalfenster und suche das Verzeichnis mit der
Podfile
:cd <path-to-project>
Führe den Befehl
pod install
aus. Dadurch werden die in derPodfile
angegebenen APIs und ggf. zugehörige Abhängigkeiten installiert.pod install
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:
- Öffnen Sie ein Terminal und rufen Sie das Projektverzeichnis mit der Datei
Podfile
auf. - Führe den Befehl
pod update
aus. Dadurch werden alle in derPodfile
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.
- Laden Sie die folgenden SDK-Binär- und Ressourcendateien herunter:
- Extrahieren Sie die Dateien, um auf XCFramework und Ressourcen zuzugreifen.
- 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.
- Entfernen Sie Maps-Bündel aus vorherigen Releases aus Ihrem Projekt.
-
Ö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
-
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. - Wählen Sie Ihr Projekt aus dem Project Navigator und dann das Ziel Ihrer App aus.
-
Ö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
-
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).
GooglePlaces.bundle
aus den heruntergeladenen GooglePlacesResources ziehen
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:
- Xcode 15.3 ist erforderlich.
- Wenn Sie Swift Package Manager verwenden, müssen Sie Instanzen von
GooglePlaces
durchGooglePlacesSwift
ersetzen. Dazu gehören auch Importanweisungen.- Ersetzen Sie Instanzen von https://github.com/googlemaps/ios-places-sdk durch https://github.com/googlemaps/ios-places-swift-sdk.
- Aktualisieren Sie die Versionsnummer auf 0.1.0.
- Wenn Sie die Installation manuell vornehmen, laden Sie die folgenden SDK-Binärdateien und Ressourcendateien herunter:
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.