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 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 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 Swift Package Manager installiert werden. Entfernen Sie vor dem Hinzufügen des SDK alle vorhandenen Abhängigkeiten des Places SDK for iOS.
So fügen Sie das SDK einem neuen oder vorhandenen Projekt hinzu:
-
Öffnen Sie
project
oderworkspace
in Xcode und wählen Sie dann Datei > Paketabhängigkeiten hinzufügen aus. - 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, setzen Sie das Feld Abhängigkeitsregel auf eine der versionsbasierten Optionen. 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
zum festgelegtenmain
-Ziel hinzugefügt wird. Klicke anschließend auf „Paket hinzufügen“. -
Um die Installation zu prüfen, gehen Sie zum Bereich
General
Ihres Ziels. Unter Frameworks, Bibliotheken und eingebettete Inhalte sollten die installierten Pakete angezeigt werden. Sie können auch im Abschnitt „Paketabhängigkeiten“ im „Project Navigator“ das Paket und seine Version prüfen.
So aktualisieren Sie die package
für ein vorhandenes Projekt:
Wenn Sie ein Upgrade von einer älteren Version als 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 Konfigurationseinstellungen Ihres Xcode-Projekts 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 Recent Package Versions“ (Datei > Pakete> Auf neueste Paketversionen aktualisieren).
- Wenn Sie die Installation prüfen möchten, rufen Sie in der Projektnavigation den Bereich Paketabhängigkeiten auf. Dort sehen Sie das Paket und seine Version.
So entfernen Sie vorhandene Abhängigkeiten des Places SDK for iOS, die mit 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 den Xcodeworkspace
, wenn du sie ausschließlich für CocoaPods verwendest.
-
Suchen Sie in den Konfigurationseinstellungen Ihres Xcode-Projekts 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, der alle Places-Funktionen enthält.
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:
- 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 versions 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 festzustellen, ob eine neuere Version vorhanden ist. So ist immer die aktuelle Version verfügbar. - 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
Podfile
auf. - Führe den Befehl
pod update
aus. Dadurch werden alle inPodfile
angegebenen APIs auf die neueste Version aktualisiert.
Manuelle Installation
In diesem Leitfaden erfahren Sie, wie Sie das XCFramework mit dem Places SDK for iOS manuell zu Ihrem Projekt hinzufügen und Ihre Build-Einstellungen in Xcode konfigurieren. Ein XCFramework ist ein Binärpaket, das Sie auf mehreren Plattformen verwenden können, einschließlich Maschinen, die Apple Silicon verwenden.
- Laden Sie die folgenden Binär- und Ressourcendateien des SDK 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 in 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 unter Frameworks, Bibliotheken und eingebettete Inhalte. Achte darauf, dass du die Option Nicht einbetten auswählst:
GooglePlaces.xcframework
Ziehen Sie -
Kopieren Sie die
GooglePlaces.bundle
aus den heruntergeladenen GooglePlacesResources in das Verzeichnis der obersten Ebene Ihres Xcode-Projekts. Wählen Sie bei entsprechender Aufforderung Copy items into the target group's Ordner (Elemente in Ordner der Zielgruppe kopieren) aus. - Wählen Sie Ihr Projekt im Project Navigator und dann das Ziel Ihrer Anwendung 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 Linking – General -> Other Linker Flags für „Debug“ und „Release“
-ObjC
hinzu. Wenn diese Einstellungen nicht angezeigt werden, ändere den Filter in der Leiste Build Settings von Basic in All.
GooglePlaces.bundle
aus GooglePlacesResources, die Sie heruntergeladen haben.
GooglePlacesSwift
Sie können das GooglePlacesSwift SDK (Vorabversion) mit dem Swift Package Manager, CocoaPods oder manuell installieren. Die Schritte für die Installation bei allen Prozessen entsprechen den Schritten für das Places SDK for iOS. Es gibt aber die folgenden Unterschiede:
- Xcode 15.3 ist erforderlich.
- Ersetzen Sie für Swift Package Manager auch die Instanzen
GooglePlaces
durchGooglePlacesSwift
. Dies schließt Importanweisungen ein. - Aktualisieren Sie die Versionsnummer auf 0.1.0.
- Ersetzen Sie Instanzen von https://github.com/googlemaps/ios-places-sdk durch https://github.com/googlemaps/ios-places-swift-sdk.
- Bei einer manuellen Installation müssen Sie zusätzlich zu den GooglePlaces XCFramework- und Ressourcendateien das XCFramework
GooglePlacesSwift
und die Ressourcendateien hinzufügen.
Bei Verwendung von CocoaPods würde beispielsweise die bearbeitete Podfile
so aussehen:
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: Datei mit dem Apple Privacy Manifest prüfen
Apple verlangt für Apps im App Store Details zum App-Datenschutz. Auf der Seite mit den Datenschutzinformationen für den Apple App Store finden Sie aktuelle Informationen und weitere Informationen.
Die Apple Privacy Manifest-Datei ist im Ressourcen-Bundle für das SDK enthalten. Um zu überprüfen, ob die Privacy Manifest-Datei enthalten ist, und um ihren Inhalt zu prüfen, erstellen Sie ein Archiv Ihrer App und generieren Sie einen Datenschutzbericht daraus.
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 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"];
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 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
Nach der Konfiguration Ihres Projekts können Sie sich die Beispielanwendungen ansehen.