Настроить проект Xcode

Следуйте инструкциям в этом руководстве, чтобы скачать Places SDK для iOS, добавить библиотеку и ее зависимости в свое приложение и бесплатно получить ключ API.

Примечания к выпуску доступны для каждого выпуска.

Шаг 1: Получите последнюю версию Xcode

Чтобы создать проект с помощью Places SDK для iOS, вам необходимо:

  1. Xcode версии 14.0 или новее.
  2. Кокоаподы или карфагеняне .

Шаг 2. Установите SDK

Чтобы установить API в новый проект, выполните следующие действия:

Используйте какаподы

Places SDK для iOS доступен в виде модуля CocoaPod , GooglePlaces , который содержит все функции мест.

CocoaPods — это менеджер зависимостей с открытым исходным кодом для проектов Swift и Objective-C Cocoa. Если у вас еще нет инструмента CocoaPods, установите его в macOS, выполнив следующую команду из терминала. Подробнее см. в руководстве по началу работы с CocoaPods .

sudo gem install cocoapods

Создайте Podfile для Places SDK для iOS и используйте его для установки SDK и его зависимостей:

  1. Если у вас еще нет проекта Xcode, создайте его сейчас и сохраните на локальном компьютере. Если вы новичок в разработке для iOS, создайте новый проект и выберите шаблон приложения iOS .
  2. Создайте файл с именем Podfile в каталоге вашего проекта. Этот файл определяет зависимости вашего проекта.
  3. Отредактируйте Podfile и добавьте свои зависимости вместе с их версиями . Вот пример, в котором указывается целевое имя вашего приложения и имя модуля GooglePlaces :
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '14.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GooglePlaces', '8.0.0'
    end
    
    Обязательно регулярно запускайте pod outdated , чтобы определить наличие более новой версии и убедиться, что вы всегда используете последнюю версию.
  4. Сохраните Podfile .
  5. Откройте терминал и перейдите в каталог, содержащий Podfile :

    cd <path-to-project>
  6. Запустите команду pod install . Это установит API, указанные в Podfile , вместе со всеми возможными зависимостями.

    pod install
  7. Закройте Xcode, а затем откройте (дважды щелкните) файл .xcworkspace вашего проекта, чтобы запустить Xcode. С этого момента для открытия проекта необходимо использовать файл .xcworkspace .

Чтобы обновить API для существующего проекта, выполните следующие действия:

  1. Откройте терминал и перейдите в каталог проекта, содержащий Podfile .
  2. Запустите команду pod update . Это обновит все API, указанные в Podfile , до последней версии.

Использовать Карфаген

Places SDK для iOS доступен для использования с Carthage — простым децентрализованным менеджером зависимостей для проектов Swift и Objective-C Cocoa.

  1. Установить Карфаген. Существует несколько способов, поэтому смотрите точные шаги в файле Carthage README .
  2. Если у вас еще нет проекта Xcode, создайте его сейчас и сохраните на локальном компьютере. Если вы новичок в разработке для iOS, создайте новый проект и выберите шаблон приложения iOS .
  3. Создайте файл с именем Cartfile в каталоге вашего проекта. Этот файл определяет зависимости вашего проекта.
  4. Отредактируйте Cartfile и добавьте свои зависимости вместе с их версиями :
     binary "https://dl.google.com/geosdk/GooglePlaces.json" == 6.2.1
    Обязательно регулярно запускайте carthage outdated , чтобы определить появление более новой версии и всегда пользоваться последней версией.
  5. Сохраните Cartfile .
  6. В окне терминала перейдите в каталог, содержащий Cartfile :
    cd <path-to-project>
  7. Запустите команду carthage update . Это установит API, указанные в Cartfile , вместе со всеми возможными зависимостями.
  8. В Finder в каталоге вашего проекта перейдите к загруженным файлам фреймворка в Carthage/Build/iOS .
  9. Перетащите следующие пакеты в свой проект (при появлении запроса выберите Копировать элементы, если необходимо ):
    • GooglePlaces-xxx/Frameworks/GooglePlaces.xcframework
  10. Щелкните правой кнопкой мыши GooglePlaces.xcframework в своем проекте и выберите Показать в Finder .
  11. Перетащите GooglePlaces.bundle из папки Resources в свой проект. При появлении запроса убедитесь, что флажок Копировать элементы в папку целевой группы не выбран.
  12. Выберите свой проект в Навигаторе проектов и выберите цель вашего приложения.
  13. Откройте вкладку Build Phases и в Link Binary with Libraries добавьте следующие фреймворки и библиотеки:
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  14. Выберите свой проект, а не конкретную цель, и откройте вкладку Build Settings .

  15. В разделе Other Linker Flags добавьте -ObjC . Если эти настройки не отображаются, измените фильтр на панели Build Settings с Basic на All .

Чтобы обновить API для существующего проекта, выполните следующие действия:

  1. Откройте терминал и перейдите в каталог проекта, содержащий Cartfile .
  2. Запустите команду carthage update . Это обновит все API, указанные в Cartfile , до последней версии.

Установить вручную

В этом руководстве показано, как вручную добавить платформу GooglePlaces в ваш проект и настроить параметры сборки в Xcode.

  1. Загрузите исходные файлы SDK: GooglePlaces-8.0.0.
  2. Распаковать исходные файлы.
  3. Запустите Xcode и либо откройте существующий проект, либо создайте новый проект. Если вы новичок в разработке для iOS, создайте новый проект и выберите шаблон приложения iOS .
  4. Удалите из проекта все пакеты Карт из предыдущих выпусков.
  5. Перетащите следующие пакеты в свой проект (при появлении запроса выберите Копировать элементы, если необходимо ):
    • GooglePlaces-xxx/Frameworks/GooglePlaces.xcframework
  6. Щелкните правой кнопкой мыши GooglePlaces.xcframework в своем проекте и выберите Показать в Finder .
  7. Перетащите GooglePlaces.bundle из папки Resources в свой проект. При появлении запроса убедитесь, что флажок Копировать элементы в папку целевой группы не выбран.
  8. Выберите свой проект в Навигаторе проектов и выберите цель вашего приложения.
  9. Откройте вкладку Build Phases и в Link Binary with Libraries добавьте следующие фреймворки и библиотеки:
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  10. Выберите свой проект, а не конкретную цель, и откройте вкладку Build Settings .

  11. В разделе Other Linker Flags добавьте -ObjC . Если эти настройки не отображаются, измените фильтр на панели Build Settings с Basic на All .

Установите XCFramework

XCFramework — это двоичный пакет, который можно использовать на нескольких платформах, в том числе на компьютерах с набором микросхем M1, для установки Places SDK для iOS. В этом руководстве показано, как добавить XCFramework, содержащий Places SDK для iOS, в ваш проект и настроить параметры сборки в Xcode.

С Карфагеном

Places SDK для iOS доступен для использования с Carthage — простым децентрализованным менеджером зависимостей для проектов Swift и Objective-C Cocoa.

  1. Установить Карфаген. Существует несколько способов, поэтому смотрите точные шаги в файле Carthage README .
  2. Если у вас еще нет проекта Xcode, создайте его сейчас и сохраните на локальном компьютере. Если вы новичок в разработке для iOS, создайте новый проект и выберите шаблон приложения iOS .
  3. Создайте файл с именем Cartfile в каталоге вашего проекта. Этот файл определяет зависимости вашего проекта.
  4. Отредактируйте Cartfile и добавьте свои зависимости вместе с их версиями :

    binary "https://dl.google.com/geosdk/GooglePlaces.json" == 6.2.1-beta
  5. Сохраните Cartfile .
  6. В окне терминала перейдите в каталог, содержащий Cartfile :

    cd <path-to-project>
  7. Запустите команду carthage update . Это установит API, указанные в Cartfile , вместе со всеми возможными зависимостями.
  8. В Finder в каталоге вашего проекта перейдите к загруженным файлам фреймворка в разделе Carthage/Build .
  9. Перетащите следующий XCFramework в свой проект в раздел Frameworks, Libraries и Embedded Content . Обязательно выберите «Не вставлять» :
    • GooglePlaces-xxx/GooglePlaces.xcframework
  10. Щелкните правой кнопкой мыши GooglePlaces.xcframework в своем проекте и выберите Показать в Finder .
  11. Перетащите GooglePlaces.bundle из папки ios-arm64/GooglePlaces.framework/Resources в каталог верхнего уровня вашего проекта Xcode. При появлении запроса убедитесь, что флажок Копировать элементы в папку целевой группы не выбран.
  12. Выберите свой проект в Навигаторе проектов и выберите цель вашего приложения.
  13. Откройте вкладку Build Phases и в Link Binary with Libraries добавьте следующие фреймворки и библиотеки:
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  14. Выберите свой проект, а не конкретную цель, и откройте вкладку Build Settings .

  15. В разделе Other Linker Flags добавьте -ObjC . Если эти настройки не отображаются, измените фильтр на панели Build Settings с Basic на All .

Вручную

В этом руководстве показано, как вручную добавить Maps SDK для iOS в проект и настроить параметры сборки в Xcode.

  1. Загрузите исходные файлы SDK: GooglePlaces-8.0.0 .
  2. Распаковать исходные файлы. Перейдите в папку Frameworks , чтобы получить доступ к файлу XCFramework.
  3. Запустите Xcode и либо откройте существующий проект, либо создайте новый проект. Если вы новичок в iOS, создайте новый проект и выберите шаблон приложения iOS .
  4. Перетащите следующий XCFramework в свой проект в раздел Frameworks, Libraries и Embedded Content . Обязательно выберите «Не вставлять» :
    • GooglePlaces-xxx/GooglePlaces.xcframework
  5. Щелкните правой кнопкой мыши GooglePlaces.xcframework в своем проекте и выберите Показать в Finder .
  6. Перетащите GooglePlaces.bundle из папки ios-arm64/GooglePlaces.framework/Resources в каталог верхнего уровня вашего проекта Xcode. При появлении запроса убедитесь, что флажок Копировать элементы в папку целевой группы не выбран.
  7. Выберите свой проект в Навигаторе проектов и выберите цель вашего приложения.
  8. Откройте вкладку Build Phases и в Link Binary with Libraries добавьте следующие фреймворки и библиотеки:
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  9. Выберите свой проект, а не конкретную цель, и откройте вкладку Build Settings .

  10. В разделе Other Linker Flags добавьте -ObjC . Если эти настройки не отображаются, измените фильтр на панели Build Settings с Basic на All .

Шаг 3. Добавьте ключ 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"];

Шаг 4: Начните писать код

В следующих примерах кода показано, как получить текущее место .

Быстрый

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
      

Следующие шаги

После настройки проекта вы можете изучить примеры приложений . Вам потребуется установить Cocoapods v1.6.1.