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

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

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

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

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

  • Xcode версии 15.0 или новее

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

Менеджер пакетов Swift

Maps SDK для iOS можно установить через Swift Package Manager . Чтобы добавить SDK, убедитесь, что вы удалили все существующие зависимости Maps SDK для iOS.

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

  1. Откройте project или workspace Xcode, затем выберите «Файл» > «Добавить зависимости пакета» .
  2. Введите https://github.com/googlemaps/ios-maps-sdk в качестве URL-адреса, нажмите Enter , чтобы получить пакет, и нажмите «Добавить пакет».
  3. Чтобы установить конкретную version , установите в поле «Правило зависимости» один из вариантов на основе версии. Для новых проектов рекомендуем указывать последнюю версию и использовать опцию «Точная версия». После завершения нажмите «Добавить пакет».
  4. В окне «Выбор продуктов пакета» убедитесь, что GoogleMaps (для версий ниже 9.0.0 убедитесь, что GoogleMaps , GoogleMapsBase и GoogleMapsCore ) будут добавлены к назначенной вами main цели. После завершения нажмите «Добавить пакет».
  5. Чтобы проверить установку, перейдите на панель General » целевой системы. В разделе «Платформы», «Библиотеки» и «Встроенный контент» вы должны увидеть установленные пакеты. Вы также можете просмотреть раздел «Зависимости пакетов» в «Навигаторе проекта», чтобы проверить пакет и его версию.

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

  1. Если вы выполняете обновление с версии более ранней, чем 9.0.0, после обновления необходимо удалить следующие зависимости: GoogleMapsBase , GoogleMapsCore и GoogleMapsM4B . Не удаляйте зависимость для GoogleMaps . Дополнительную информацию см. в примечаниях к выпуску версии 9.0.0 .

    В настройках конфигурации проекта Xcode найдите Frameworks, Libraries и Embedded Content . Используйте знак минус (-), чтобы удалить следующую структуру:

    • GoogleMapsBase (только для обновлений с версий ранее 9.0.0)
    • GoogleMapsCore (только для обновлений с версий ранее 9.0.0)
    • GoogleMapsM4B (только для обновлений с версий ранее 9.0.0)
  2. В Xcode перейдите в «Файл» > «Пакеты» > «Обновить до последних версий пакетов».
  3. Чтобы проверить установку, перейдите в раздел «Зависимости пакетов» в «Навигаторе проекта» , чтобы проверить пакет и его версию.

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

  1. Закройте рабочую область Xcode. Откройте терминал и выполните следующую команду:
    sudo gem install cocoapods-deintegrate cocoapods-clean 
    pod deintegrate 
    pod cache clean --all
  2. Удалите Podfile , Podfile.resolved и workspace Xcode, если вы не используете их ни для чего, кроме CocoaPods.

Чтобы удалить существующий Maps SDK для iOS, установленный вручную, выполните следующие действия:
  1. В настройках конфигурации проекта Xcode найдите Frameworks, Libraries и Embedded Content . Используйте знак минус (-), чтобы удалить следующую структуру:
    • GoogleMaps
    • GoogleMapsBase (только для установок до версии 9.0.0)
    • GoogleMapsCore (только для установок до версии 9.0.0)
    • GoogleMapsM4B (только для установок до версии 9.0.0)
  2. Из каталога верхнего уровня вашего проекта Xcode удалите пакет GoogleMaps .

Какао-стручки

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

Если у вас еще нет инструмента 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, '15.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GoogleMaps', '8.4.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 до последней версии.

Ручная установка

В этом руководстве показано, как вручную добавить XCFrameworks, содержащий Maps SDK для iOS, в ваш проект и настроить параметры сборки в Xcode. XCFramework — это двоичный пакет, который можно использовать на нескольких платформах, включая машины, использующие Apple Silicon .
  1. Загрузите следующие двоичные файлы SDK и файлы ресурсов:
  2. Извлеките файлы, чтобы получить доступ к XCFrameworks и ресурсам.
  3. Если у вас еще нет проекта Xcode, создайте его сейчас и сохраните на своем локальном компьютере. Если вы новичок в разработке для iOS:
    1. Создайте новый проект.
    2. Выберите iOS > Шаблон приложения .
    3. На экране опций проекта:
      1. Введите название проекта .
      2. Запишите значение поля идентификатора пакета . Вы можете использовать это значение, чтобы ограничить свой ключ API ниже.
      3. Установите для интерфейса проекта значение Storyboard .
      4. Установите язык Swift или Objective-C .
  4. Откройте вкладку «Общие» . Перетащите следующие файлы XCFrameworks в свой проект в разделе «Платформы, библиотеки и встроенный контент» . Обязательно выберите «Не встраивать» для каждого XCFramework:
    • GoogleMaps.xcframework
    • GoogleMapsBase.xcframework
    • GoogleMapsCore.xcframework
  5. Скопируйте файл GoogleMaps.bundle из загруженного вами GoogleMapsResources в каталог верхнего уровня вашего проекта Xcode. При появлении запроса обязательно выберите «Копировать элементы в папку целевой группы» .
  6. Выберите свой проект в Навигаторе проектов и выберите цель своего приложения.
  7. Откройте вкладку «Фазы сборки» для цели вашего приложения. В Link Binary with Libraries добавьте следующие платформы и библиотеки:
    • Accelerate.framework
    • Contacts.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 (только если вы используете OpenGL)
    • QuartzCore.framework
    • SystemConfiguration.framework
    • UIKit.framework
  8. Выберите свой проект, а не конкретную цель, и откройте вкладку «Настройки сборки» . В разделе «Связывание — Общие -> Другие флаги компоновщика» добавьте -ObjC в поля «Отладка» и «Выпуск». Если эти параметры не отображаются, измените фильтр на панели «Параметры сборки» с «Базовый» на «Все» .

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

Шаг 3. Проверьте файл манифеста конфиденциальности Apple.

Apple требует предоставить информацию о конфиденциальности для приложений в App Store. Посетите страницу сведений о конфиденциальности Apple App Store для получения обновлений и дополнительной информации.

Файл манифеста конфиденциальности Apple включен в пакет ресурсов для SDK. Чтобы убедиться, что файл манифеста конфиденциальности включен, и проверить его содержимое, создайте архив своего приложения и создайте отчет о конфиденциальности из архива.

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

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

Быстрый

/*
 *   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 options = GMSMapViewOptions()
        options.camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 6.0)
        options.frame = self.view.bounds

        let mapView = GMSMapView(options: options)
        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.
  GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
  options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:6];
  options.frame = self.view.bounds;
  GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

  [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

Шаг 5 (необязательно). Объявите схемы URL-адресов, используемые API.

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

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

LSApplicationQueriesSchemes Гуглхромы comgooglemaps

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

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

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

-canOpenURL: не удалось для URL: "comgooglemaps://" - ошибка: "Этому приложению не разрешено запрашивать схему comgooglemaps" -canOpenURL: не удалось для URL: "googlechromes://" - ошибка: "Это приложение не разрешено запросить схему googlechromes"

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

Что дальше

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