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

После включения выставления счетов и создания ключа API вы готовы настроить проект Xcode, который вы используете для разработки своего приложения.

Шаг 1: Установите необходимое программное обеспечение

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

  • Xcode версии 14.0 или новее
  • Кокоаподы или Карфаген

Шаг 2. Создайте проект Xcode и установите Maps SDK для iOS.

Используйте CocoaPods

Maps SDK для iOS доступен в виде модуля CocoaPods . CocoaPods — это менеджер зависимостей с открытым исходным кодом для проектов Swift и Objective-C Cocoa.

Если у вас еще нет инструмента CocoaPods, установите его в macOS, выполнив следующую команду из терминала. Подробнее см. в руководстве по началу работы с CocoaPods .

sudo gem install cocoapods

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

  1. Если у вас еще нет проекта Xcode, создайте его сейчас и сохраните на локальном компьютере. Если вы новичок в разработке iOS:
    1. Создайте новый проект.
    2. Выберите iOS > Шаблон приложения .
    3. На экране параметров проекта:
      1. Введите Название проекта .
      2. Запишите значение поля Идентификатор пакета . Вы можете использовать это значение, чтобы ограничить свой ключ API ниже.
      3. Установите интерфейс проекта на Storyboard .
      4. Установите язык на Swift или Objective-C .
  2. Создайте файл с именем Podfile в каталоге вашего проекта. Этот файл определяет зависимости вашего проекта.
  3. Отредактируйте Podfile и добавьте свои зависимости вместе с их версиями . Вот пример, который включает зависимость, необходимую для Maps SDK для iOS:
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '14.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GoogleMaps', '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 , до последней версии.

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

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

  1. Установить Карфаген. Существует несколько способов, поэтому смотрите точные шаги в файле Carthage README .
  2. Если у вас еще нет проекта Xcode, создайте его сейчас и сохраните на локальном компьютере. Если вы новичок в разработке iOS:
    1. Создайте новый проект.
    2. Выберите iOS > Шаблон приложения .
    3. На экране параметров проекта:
      1. Введите Название проекта .
      2. Запишите значение поля Идентификатор пакета . Вы можете использовать это значение, чтобы ограничить свой ключ API ниже.
      3. Установите интерфейс проекта на Storyboard .
      4. Установите язык на Swift или Objective-C .
  3. Создайте файл с именем Cartfile в каталоге вашего проекта. Этот файл определяет зависимости вашего проекта.
  4. Отредактируйте Cartfile и добавьте свои зависимости вместе с их версиями :
    binary "https://dl.google.com/geosdk/GoogleMaps.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. Перетащите следующие пакеты в свой проект: (При появлении запроса выберите Копировать элементы, если необходимо, используйте ту же версию, что и выше. )
    • GoogleMaps-xxx/Base/Frameworks/GoogleMapsBase.xcframework
    • GoogleMaps-xxx/Maps/Frameworks/GoogleMaps.xcframework
    • GoogleMaps-xxx/Maps/Frameworks/GoogleMapsCore.xcframework
    • (Только для клиентов Премиум-плана) GoogleMaps-xxx/M4B/Frameworks/GoogleMapsM4B.xcframework
  10. Щелкните правой кнопкой мыши GoogleMaps.xcframework в своем проекте и выберите Показать в Finder .
  11. Перетащите GoogleMaps.bundle из папки Resources в каталог верхнего уровня вашего проекта Xcode. При появлении запроса убедитесь, что флажок Копировать элементы в папку целевой группы не выбран.
  12. Выберите свой проект в Навигаторе проектов и выберите цель вашего приложения.
  13. Откройте вкладку Build Phases для целевого приложения и в Link Binary with Libraries добавьте следующие платформы и библиотеки:
    • Accelerate.framework
    • CoreData.framework
    • CoreGraphics.framework
    • CoreImage.framework
    • CoreLocation.framework
    • CoreTelephony.framework
    • CoreText.framework
    • GLKit.framework
    • ImageIO.framework
    • libc++.tbd
    • libz.tbd
    • Metal.framework
    • OpenGLES.framework
    • QuartzCore.framework
    • SystemConfiguration.framework
    • UIKit.framework
  14. Выберите свой проект, а не конкретную цель, и откройте вкладку Build Settings . В разделе Other Linker Flags добавьте -ObjC . Если эти настройки не отображаются, измените фильтр на панели Build Settings с Basic на All .

  15. Чтобы установить Places SDK для iOS, см. статью Начало работы с Places SDK для iOS .

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

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

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

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

  1. Загрузите исходные файлы SDK: GoogleMaps-8.0.0 .
  2. Распаковать исходные файлы.
  3. Если у вас еще нет проекта Xcode, создайте его сейчас и сохраните на локальном компьютере. Если вы новичок в разработке iOS:
    1. Создайте новый проект.
    2. Выберите iOS > Шаблон приложения .
    3. На экране параметров проекта:
      1. Введите Название проекта .
      2. Запишите значение поля Идентификатор пакета . Вы можете использовать это значение, чтобы ограничить свой ключ API ниже.
      3. Установите интерфейс проекта на Storyboard .
      4. Установите язык на Swift или Objective-C .
  4. Перетащите следующие пакеты в свой проект: (При появлении запроса выберите Копировать элементы, если необходимо, используйте ту же версию, что и выше. )
    • GoogleMaps-xxx/Base/Frameworks/GoogleMapsBase.xcframework
    • GoogleMaps-xxx/Maps/Frameworks/GoogleMaps.xcframework
    • GoogleMaps-xxx/Maps/Frameworks/GoogleMapsCore.xcframework
    • (Только для клиентов Премиум-плана) GoogleMaps-xxx/M4B/Frameworks/GoogleMapsM4B.xcframework
  5. Щелкните правой кнопкой мыши GoogleMaps.xcframework в своем проекте и выберите Показать в Finder .
  6. Перетащите GoogleMaps.bundle из папки Resources в каталог верхнего уровня вашего проекта Xcode. При появлении запроса убедитесь, что флажок Копировать элементы в папку целевой группы не выбран.
  7. Выберите свой проект в Навигаторе проектов и выберите цель вашего приложения.
  8. Откройте вкладку Build Phases для целевого приложения и в Link Binary with Libraries добавьте следующие платформы и библиотеки:
    • Accelerate.framework
    • CoreData.framework
    • CoreGraphics.framework
    • CoreImage.framework
    • CoreLocation.framework
    • CoreTelephony.framework
    • CoreText.framework
    • GLKit.framework
    • ImageIO.framework
    • libc++.tbd
    • libz.tbd
    • Metal.framework
    • OpenGLES.framework
    • QuartzCore.framework
    • SystemConfiguration.framework
    • UIKit.framework
  9. Выберите свой проект, а не конкретную цель, и откройте вкладку Build Settings . В разделе Other Linker Flags добавьте -ObjC . Если эти настройки не отображаются, измените фильтр на панели Build Settings с Basic на All .

  10. Чтобы установить Places SDK для iOS, см. статью Начало работы с Places SDK для iOS .

Установите XCFramework

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

С Карфагеном

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

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

    binary "https://dl.google.com/geosdk/GoogleMaps.json" == 6.2.1-beta
  5. Сохраните Cartfile .
  6. В окне терминала перейдите в каталог, содержащий Cartfile :
    cd <path-to-project>
  7. Запустите команду carthage update . Это установит API, указанные в Cartfile , вместе со всеми возможными зависимостями.
  8. В Finder в каталоге вашего проекта перейдите к загруженным файлам фреймворка в разделе Carthage/Build .
  9. Перетащите следующие XCFrameworks в свой проект в раздел Frameworks, Libraries и Embedded Content . Обязательно выберите «Не вставлять» для каждого XCFramework:
    • GoogleMaps-xxx/GoogleMapsBase.xcframework
    • GoogleMaps-xxx/GoogleMaps.xcframework
    • GoogleMaps-xxx/GoogleMapsCore.xcframework
    • (Только для клиентов Премиум-плана) GoogleMaps-xxx/GoogleMapsM4B.xcframework
  10. Щелкните правой кнопкой мыши GoogleMaps.xcframework в своем проекте и выберите Показать в Finder .
  11. Перетащите GoogleMaps.bundle из папки ios-arm64_x86_64-simulator/GoogleMaps.framework/Resources в каталог верхнего уровня вашего проекта Xcode. При появлении запроса убедитесь, что параметр Копировать элементы при необходимости не выбран.
  12. Выберите свой проект в Навигаторе проектов и выберите цель вашего приложения.
  13. Откройте вкладку Build Phases для целевого приложения и внутри Link Binary with Libraries и добавьте следующие платформы и библиотеки:
    • Accelerate.framework
    • CoreData.framework
    • CoreGraphics.framework
    • CoreImage.framework
    • CoreLocation.framework
    • CoreTelephony.framework
    • CoreText.framework
    • GLKit.framework
    • ImageIO.framework
    • libc++.tbd
    • libz.tbd
    • Metal.framework
    • OpenGLES.framework
    • QuartzCore.framework
    • SystemConfiguration.framework
    • UIKit.framework
  14. Выберите свой проект, а не конкретную цель, и откройте вкладку Build Settings . В разделе Other Linker Flags добавьте -ObjC . Если эти настройки не отображаются, измените фильтр на панели Build Settings с Basic на All .

  15. Чтобы установить Places SDK для iOS XCFramework, см. статью Начало работы с Places SDK для iOS .

Вручную

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

  1. Загрузите исходные файлы SDK: GoogleMaps-8.0.0 .
  2. Распаковать исходные файлы. Перейдите в папку Frameworks , чтобы получить доступ к файлу XCFramework.
  3. Если у вас еще нет проекта Xcode, создайте его сейчас и сохраните на локальном компьютере. Если вы новичок в разработке iOS:
    1. Создайте новый проект.
    2. Выберите iOS > Шаблон приложения .
    3. На экране параметров проекта:
      1. Введите Название проекта .
      2. Запишите значение поля Идентификатор пакета . Вы можете использовать это значение, чтобы ограничить свой ключ API ниже.
      3. Установите интерфейс проекта на Storyboard .
      4. Установите язык на Swift или Objective-C .
  4. Перетащите следующие XCFrameworks в свой проект в раздел Frameworks, Libraries и Embedded Content . Обязательно выберите «Не вставлять» для каждого XCFramework:
    • GoogleMaps-xxx/GoogleMapsBase.xcframework
    • GoogleMaps-xxx/GoogleMaps.xcframework
    • GoogleMaps-xxx/GoogleMapsCore.xcframework
    • (Только для клиентов Премиум-плана) GoogleMaps-xxx/GoogleMapsM4B.xcframework
  5. Щелкните правой кнопкой мыши GoogleMaps.xcframework в своем проекте и выберите Показать в Finder .
  6. Перетащите GoogleMaps.bundle из папки ios-arm64_x86_64-simulator/GoogleMaps.framework/Resources в каталог верхнего уровня вашего проекта Xcode. При появлении запроса убедитесь, что параметр Копировать элементы при необходимости не выбран.
  7. Выберите свой проект в Навигаторе проектов и выберите цель вашего приложения.
  8. Откройте вкладку Build Phases для целевого приложения и внутри Link Binary with Libraries и добавьте следующие платформы и библиотеки:
    • Accelerate.framework
    • CoreData.framework
    • CoreGraphics.framework
    • CoreImage.framework
    • CoreLocation.framework
    • CoreTelephony.framework
    • CoreText.framework
    • GLKit.framework
    • ImageIO.framework
    • libc++.tbd
    • libz.tbd
    • Metal.framework
    • OpenGLES.framework
    • QuartzCore.framework
    • SystemConfiguration.framework
    • UIKit.framework
  9. Выберите свой проект, а не конкретную цель, и откройте вкладку Build Settings . В разделе Other Linker Flags добавьте -ObjC . Если эти настройки не отображаются, измените фильтр на панели Build Settings с Basic на All .

  10. Чтобы установить Places SDK для iOS XCFramework, см. статью Начало работы с Places SDK для iOS .

Шаг 3: Добавьте свой ключ API в проект

В разделе «Получить ключ API » вы создали ключ API для своего приложения. Теперь добавьте этот ключ в свой проект Xcode.

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

Быстрый

Добавьте свой ключ API в свой AppDelegate.swift следующим образом:

  1. Добавьте следующий оператор импорта:
    import GoogleMaps
  2. Добавьте следующее в свой метод application(_:didFinishLaunchingWithOptions:) , используя ключ API:
    GMSServices.provideAPIKey("YOUR_API_KEY")
  3. Если вы также используете Places API, снова добавьте свой ключ, как показано здесь:
    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

Цель-C

Добавьте свой ключ API в AppDelegate.m следующим образом:

  1. Добавьте следующий оператор импорта:
    @import GoogleMaps;
  2. Добавьте в свой application:didFinishLaunchingWithOptions: метод, используя ключ API:
    [GMSServices provideAPIKey:@"YOUR_API_KEY"];
  3. Если вы также используете Places API, снова добавьте свой ключ, как показано здесь:
    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];

Шаг 4 (необязательно): зарегистрируйтесь, чтобы использовать платформу рендеринга Metal.

Maps SDK для iOS позволяет вам использовать платформу рендеринга Metal от Apple. Чтобы попробовать средство рендеринга Metal в своем приложении, вызовите [GMSServices setMetalRendererEnabled:YES] в Objective-C или GMSServices.setMetalRendererEnabled(true) в Swift перед созданием каких-либо представлений карты.

Если вы устанавливаете SDK вручную , вы также должны добавить Metal.framework в Xcode.

Шаг 5. Добавьте карту

В приведенном ниже коде показано, как добавить простую карту в существующий ViewController :

  1. Добавьте или обновите методы в ViewController вашего приложения по умолчанию, чтобы создать и инициализировать экземпляр GMSMapView .

    Быстрый

    /*
     * Copyright 2020 Google Inc. All rights reserved.
     *
     *
     * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
     * file except in compliance with the License. You may obtain a copy of the License at
     *
     *     http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software distributed under
     * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
     * ANY KIND, either express or implied. See the License for the specific language governing
     * permissions and limitations under the License.
     */
    
    import UIKit
    import GoogleMaps
    
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view.
            // Create a GMSCameraPosition that tells the map to display the
            // coordinate -33.86,151.20 at zoom level 6.
            let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 6.0)
            let mapView = GMSMapView.map(withFrame: self.view.frame, camera: camera)
            self.view.addSubview(mapView)
    
            // Creates a marker in the center of the map.
            let marker = GMSMarker()
            marker.position = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.20)
            marker.title = "Sydney"
            marker.snippet = "Australia"
            marker.map = mapView
      }
    }
    
          

    Цель-C

    /*
    * Copyright 2020 Google Inc. All rights reserved.
    *
    *
    * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
    * file except in compliance with the License. You may obtain a copy of the License at
    *
    *     http://www.apache.org/licenses/LICENSE-2.0
    *
    * Unless required by applicable law or agreed to in writing, software distributed under
    * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
    * ANY KIND, either express or implied. See the License for the specific language governing
    * permissions and limitations under the License.
    */
    
    #import "ViewController.h"
    #import <GoogleMaps/GoogleMaps.h>
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
      // Do any additional setup after loading the view.
      // Create a GMSCameraPosition that tells the map to display the
      // coordinate -33.86,151.20 at zoom level 6.
      GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86
                                                              longitude:151.20
                                                                   zoom:6];
      GMSMapView *mapView = [GMSMapView mapWithFrame:self.view.frame camera:camera];
      mapView.myLocationEnabled = YES;
      [self.view addSubview:mapView];
    
      // Creates a marker in the center of the map.
      GMSMarker *marker = [[GMSMarker alloc] init];
      marker.position = CLLocationCoordinate2DMake(-33.86, 151.20);
      marker.title = @"Sydney";
      marker.snippet = @"Australia";
      marker.map = mapView;
    }
    
    @end
    
          
  2. Запустите ваше приложение. Вы должны увидеть карту с одним маркером в центре Сиднея, Австралия. Если вы видите маркер, но не видите карту, подтвердите, что вы предоставили свой ключ API.

Шаг 6 (необязательно): объявите схемы URL, используемые API

Начиная с iOS 9 и Xcode 7, приложения могут объявлять схемы URL-адресов, которые они намереваются открыть, путем указания схем в файле Info.plist приложения. Maps SDK для iOS открывает мобильное приложение Google Maps, когда пользователь щелкает логотип Google на карте, поэтому ваше приложение может объявить соответствующие схемы URL-адресов.

Чтобы объявить схемы URL, используемые Maps SDK для iOS, добавьте в свой Info.plist следующие строки:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>googlechromes</string>
    <string>comgooglemaps</string>
</array>

На следующем снимке экрана показана конфигурация в пользовательском интерфейсе Xcode:

Конфигурация LSApplicationQueriesSchemes в Xcode

Без вышеуказанного объявления могут возникнуть следующие ошибки, когда пользователь касается логотипа Google на карте:

-canOpenURL: failed for URL: "comgooglemaps://" - error: "This app is not allowed to query for scheme comgooglemaps"
-canOpenURL: failed for URL: "googlechromes://" - error: "This app is not allowed to query for scheme googlechromes"

Чтобы устранить эти ошибки, добавьте объявление в свой Info.plist , как описано выше.

Что дальше

Теперь, когда у вас есть ключ API и проект Xcode, вы можете создавать и запускать приложения. Maps SDK для iOS содержит множество руководств и примеров приложений, которые помогут вам начать работу. Подробнее см.: