После включения выставления счетов и создания ключа API вы готовы настроить проект Xcode, который вы используете для разработки своего приложения.
Примечания к выпуску доступны для каждого выпуска.
Шаг 1. Установите необходимое программное обеспечение
Чтобы создать проект с помощью Places SDK для iOS, вам необходимо:
- Xcode версии 15.0 или новее
Шаг 2. Создайте проект Xcode и установите Places SDK для iOS.
Менеджер пакетов Swift
Places SDK для iOS можно установить через Swift Package Manager . Чтобы добавить SDK, убедитесь, что вы удалили все существующие зависимости Places SDK для iOS.
Чтобы добавить SDK в новый или существующий проект, выполните следующие действия:
- Откройте
project
илиworkspace
Xcode, затем выберите «Файл» > «Добавить зависимости пакета» . - Введите https://github.com/googlemaps/ios-places-sdk в качестве URL-адреса, нажмите Enter , чтобы получить пакет, и нажмите «Добавить пакет».
- Чтобы установить конкретную
version
, установите в поле «Правило зависимости» один из вариантов, зависящих от версии. Для новых проектов рекомендуем указывать последнюю версию и использовать опцию «Точная версия». После завершения нажмите «Добавить пакет». - В окне «Выбор пакетных продуктов» убедитесь, что
GooglePlaces
будет добавлен к назначенной вамиmain
цели. После завершения нажмите «Добавить пакет». - Чтобы проверить установку, перейдите на панель
General
» целевой системы. В разделе «Платформы», «Библиотеки» и «Встроенный контент» вы должны увидеть установленные пакеты. Вы также можете просмотреть раздел «Зависимости пакетов» в «Навигаторе проекта», чтобы проверить пакет и его версию.
Чтобы обновить package
для существующего проекта, выполните следующие действия:
- В Xcode перейдите в «Файл» > «Пакеты» > «Обновить до последних версий пакетов».
- Чтобы проверить установку, перейдите в раздел «Зависимости пакетов» в «Навигаторе проекта» , чтобы проверить пакет и его версию.
Чтобы удалить существующий Places SDK для iOS, установленный вручную, выполните следующие действия:
- В настройках конфигурации проекта Xcode найдите Frameworks, Libraries и Embedded Content . Используйте знак минус (-), чтобы удалить следующую структуру:
-
GooglePlaces.xcframework
-
- Из каталога верхнего уровня вашего проекта Xcode удалите пакет
GooglePlaces
.
Какао-стручки
Places SDK для iOS доступен в виде модуля CocoaPod GooglePlaces , который содержит все возможности мест.
CocoaPods — это менеджер зависимостей с открытым исходным кодом для проектов Swift и Objective-C Cocoa. Если у вас еще нет инструмента CocoaPods, установите его в macOS, выполнив следующую команду из терминала. Подробности см. в руководстве по началу работы с CocoaPods .
sudo gem install cocoapods
Создайте Podfile
для Places SDK для iOS и используйте его для установки SDK и его зависимостей:
- Если у вас еще нет проекта Xcode, создайте его сейчас и сохраните на своем локальном компьютере. Если вы новичок в разработке iOS, создайте новый проект и выберите шаблон приложения iOS .
- Создайте файл с именем
Podfile
в каталоге вашего проекта. Этот файл определяет зависимости вашего проекта. - Отредактируйте
Podfile
и добавьте свои зависимости вместе с их версиями . Вот пример, в котором указывается целевое имя вашего приложения и имя модуля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
pod outdated
чтобы обнаружить появление более новой версии и быть уверенным, что вы всегда используете самую последнюю версию. - Сохраните
Podfile
. Откройте терминал и перейдите в каталог, содержащий
Podfile
:cd <path-to-project>
Запустите команду
pod install
. При этом будут установлены API, указанные вPodfile
, вместе со всеми зависимостями, которые они могут иметь.pod install
Закройте Xcode, а затем откройте (дважды щелкните) файл
.xcworkspace
вашего проекта, чтобы запустить Xcode. С этого момента вы должны использовать файл.xcworkspace
для открытия проекта.
Чтобы обновить API для существующего проекта, выполните следующие действия:
- Откройте терминал и перейдите в каталог проекта, содержащий
Podfile
. - Запустите команду
pod update
. Это обновит все API, указанные вPodfile
до последней версии.
Ручная установка
В этом руководстве показано, как вручную добавить XCFramework, содержащий Places SDK для iOS, в ваш проект и настроить параметры сборки в Xcode. XCFramework — это двоичный пакет, который можно использовать на нескольких платформах, включая машины, использующие Apple Silicon .
- Загрузите следующие двоичные файлы SDK и файлы ресурсов:
- Извлеките файлы, чтобы получить доступ к XCFramework и ресурсам.
- Запустите Xcode и либо откройте существующий проект, либо создайте новый проект. Если вы новичок в разработке iOS, создайте новый проект и выберите шаблон приложения iOS .
- Удалите из проекта все пакеты Карт из предыдущих выпусков.
- Откройте вкладку «Общие» . Перетащите следующий XCFramework в свой проект в разделе «Платформы, библиотеки и встроенный контент» . Обязательно выберите «Не вставлять» :
-
GooglePlaces.xcframework
Перетащите -
- Скопируйте файл
GooglePlaces.bundle
из загруженного вами GooglePlacesResources в каталог верхнего уровня вашего проекта Xcode. При появлении запроса обязательно выберите «Копировать элементы в папку целевой группы» . - Выберите свой проект в Навигаторе проектов и выберите цель своего приложения.
- Откройте вкладку «Фазы сборки» . В Link Binary with Libraries добавьте следующие платформы и библиотеки:
-
CoreGraphics.framework
-
CoreLocation.framework
-
libc++.tbd
-
libz.tbd
-
QuartzCore.framework
-
UIKit.framework
-
Выберите свой проект, а не конкретную цель, и откройте вкладку «Настройки сборки» . В разделе «Связывание — Общие -> Другие флаги компоновщика» добавьте
-ObjC
в поля «Отладка» и «Выпуск». Если эти параметры не отображаются, измените фильтр на панели «Настройки сборки» с «Базовый» на «Все» .
GooglePlaces.bundle
из загруженных вами ресурсов GooglePlacesResources .GooglePlacesSwift
Вы можете установить SDK GooglePlacesSwift (Preview) с помощью диспетчера пакетов Swift, CocoaPods или вручную. Шаги по установке во всех процессах повторяют шаги, описанные для Places SDK для iOS, со следующими отличиями:
- Требуется Xcode 15.3.
- Если вы используете Swift Package Manager, вам необходимо заменить экземпляры
GooglePlaces
наGooglePlacesSwift
. Сюда входят операторы импорта.- Замените экземпляры https://github.com/googlemaps/ios-places-sdk на https://github.com/googlemaps/ios-places-swift-sdk .
- Обновите номер версии до 0.1.0.
- При установке вручную загрузите следующие двоичные файлы SDK и файлы ресурсов:
Например, при использовании CocoaPods отредактированный Podfile
будет выглядеть так:
source 'https://github.com/CocoaPods/Specs.git' platform :ios, '15.3' target 'YOUR_APPLICATION_TARGET_NAME_HERE' do pod 'GooglePlacesSwift', '0.1.0' end
Шаг 3. Проверьте файл манифеста конфиденциальности Apple.
Apple требует предоставить информацию о конфиденциальности для приложений в App Store. Посетите страницу сведений о конфиденциальности Apple App Store для получения обновлений и дополнительной информации.
Файл манифеста конфиденциальности Apple включен в пакет ресурсов для SDK. Чтобы убедиться, что файл манифеста конфиденциальности включен, и проверить его содержимое, создайте архив своего приложения и создайте отчет о конфиденциальности из архива.
Шаг 4. Добавьте ключ API в свое приложение.
В следующих примерах замените YOUR_API_KEY
своим ключом API.
Быстрый
Добавьте свой ключ API в свой AppDelegate.swift
следующим образом:
- Добавьте следующий оператор импорта:
import GooglePlaces
- Добавьте в свой
application(_:didFinishLaunchingWithOptions:)
следующее, заменив YOUR_API_KEY своим ключом API:GMSPlacesClient.provideAPIKey("YOUR_API_KEY")
Цель-C
Добавьте свой ключ API в свой AppDelegate.m
следующим образом:
- Добавьте следующий оператор импорта:
@import GooglePlaces;
- Добавьте в свое
application:didFinishLaunchingWithOptions:
заменив YOUR_API_KEY своим ключом API:[GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
GooglePlacesSwift
Добавьте свой ключ API в свой AppDelegate.swift
следующим образом:
- Добавьте следующий оператор импорта:
import GooglePlacesSwift
- Добавьте в свой
application(_:didFinishLaunchingWithOptions:)
следующее, заменив YOUR_API_KEY своим ключом API:PlacesClient.shared.provideAPIKey("YOUR_API_KEY")
Шаг 5. Начните писать код
Следующие примеры кода демонстрируют, как получить текущее место.
Быстрый
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 } } }
Цель-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() } }
Следующие шаги
После настройки проекта вы можете изучить примеры приложений .