设置 Xcode 项目

启用结算功能并创建 API 密钥后,您就可以设置用于开发应用的 Xcode 项目了。

每一个版本都有版本说明

第 1 步:安装所需的软件

若要使用 Maps SDK for iOS 构建项目,您必须下载并安装以下内容:

  • Xcode 15.0 版或更高版本

第 2 步:创建 Xcode 项目并安装 Maps SDK for iOS

Swift Package Manager

您可以通过 Swift Package Manager 安装 Maps SDK for iOS。如需添加该 SDK,请确保您已移除所有现有的 Maps SDK for iOS 依赖项。

如需将 SDK 添加到新的或现有项目,请按以下步骤操作:

  1. 打开 Xcode projectworkspace,然后依次点击 File(文件)> Add Package Dependencies(添加软件包依赖项)
  2. 输入 https://github.com/googlemaps/ios-maps-sdk 作为网址,按 Enter 键提取软件包,然后点击“添加软件包”。
  3. 如需安装特定的 version,请将依赖项规则字段设置为基于版本的选项之一。对于新项目,我们建议您指定最新版本并使用“确切版本”选项。完成后,点击“添加文件包”。

如需更新现有项目的 package,请按以下步骤操作:

  1. 如果您要从低于 9.0.0 的版本升级,则必须在升级后移除以下依赖项:GoogleMapsBaseGoogleMapsCoreGoogleMapsM4B。请勿移除 GoogleMaps 的依赖项。如需了解详情,请参阅 版本 9.0.0 版本说明

    在 Xcode 项目配置设置中,找到框架、库和嵌入内容。使用减号(-) 移除以下框架:

    • GoogleMapsBase(仅适用于从低于 9.0.0 的版本升级)
    • GoogleMapsCore(仅适用于从低于 9.0.0 的版本升级)
    • GoogleMapsM4B(仅适用于从低于 9.0.0 的版本升级)
  2. 在 Xcode 中,依次前往“File”(文件)>“Packages”(软件包)>“Update To Latest Package Versions”(更新到最新的软件包版本)。
  3. 如需验证安装情况,请前往 Project NavigatorPackage Dependencies 部分,验证软件包及其版本。

如需移除使用 CocoaPods 添加的现有 Maps SDK for iOS 依赖项,请按以下步骤操作:

  1. 关闭 Xcode 工作区。打开终端并执行以下命令:
    sudo gem install cocoapods-deintegrate cocoapods-clean 
    pod deintegrate 
    pod cache clean --all
  2. 如果您将 PodfilePodfile.resolved 和 Xcode workspace 用于除 CocoaPods 以外的用途,请将其移除。

如需移除手动安装的现有 Maps SDK for iOS,请按以下步骤操作:
  1. 在 Xcode 项目配置设置中,找到框架、库和嵌入内容。使用减号(-) 移除以下框架:
    • GoogleMaps
    • GoogleMapsBase(仅适用于版本低于 9.2.0 的安装)
    • GoogleMapsCore(仅适用于版本低于 9.2.0 的安装)
    • GoogleMapsM4B(仅适用于版本低于 9.0.0 的安装)
  2. 从 Xcode 项目的顶级目录中移除 GoogleMaps 软件包。

手动安装

本指南介绍了如何向您的项目手动添加包含 Maps SDK for iOS 的 XCFramework,以及如何在 Xcode 中配置您的构建设置。XCFramework 是一种二进制软件包,可在多个平台(包括使用 Apple 硅芯片的机器)上使用。

  1. 下载以下 SDK 二进制文件和资源文件:
  2. 解压缩文件以访问 XCFrameworks 和资源。
  3. 如果您尚未创建 Xcode 项目,请立即创建一个并将其保存到您的本地计算机上。如果您刚开始接触 iOS 开发:
    1. 创建新项目。
    2. 选择 iOS > App 模板。
    3. 在“项目选项”屏幕上:
      1. 输入项目名称
      2. 记录 Bundle identifier 字段的值。 您可以使用该值在下方限制 API 密钥。
      3. 将项目接口设置为故事板
      4. Language 设置为 SwiftObjective-C
  4. 打开常规标签页。将以下 XCFramework 拖动到项目的 Frameworks、Libraries 和 Embedded Content 下。请务必选择不嵌入
    • GoogleMaps.xcframework
  5. 将您下载的 GoogleMapsResources 中的 GoogleMaps.bundle 复制到 Xcode 项目的顶级目录中。请务必在系统提示时选择 Copy items into destination group's folder(将项目复制到目标组的文件夹)。
  6. 从 Project Navigator 中选择您的项目,然后选择应用的目标。
  7. 打开应用目标的 Build Phases 标签页。 在 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. 选择项目(而不是具体目标),然后打开“Build Settings”(构建设置)标签页。Linking - General -> Other Linker Flags 部分中,将 -ObjC 添加到“Debug”和“Release”。如果看不到这些设置,请将“Build Settings”(构建设置)栏中的过滤条件从“Basic”(基本)更改为“All”(全部)。

  9. 如需安装 Places SDK for iOS XCFramework,请参阅 Places SDK for iOS 使用入门

CocoaPods

Maps SDK for iOS 以 CocoaPods pod 的形式提供。CocoaPods 是一种用于 Swift 和 Objective-C Cocoa 项目的开源依赖项管理器。

如果您尚未安装 CocoaPods 工具,请在 macOS 上从终端运行以下命令进行安装。如需了解详情,请参阅 CocoaPods 入门指南

sudo gem install cocoapods

为 Maps SDK for iOS 创建一个 Podfile,并使用它来安装 API 及其依赖项:

  1. 如果您尚未创建 Xcode 项目,请立即创建一个并将其保存到您的本地计算机上。如果您刚开始接触 iOS 开发:
    1. 创建新项目。
    2. 选择 iOS > App 模板。
    3. 在“项目选项”屏幕上:
      1. 输入项目名称
      2. 记录 Bundle identifier 字段的值。 您可以使用该值在下方限制 API 密钥。
      3. 将项目接口设置为故事板
      4. Language 设置为 SwiftObjective-C
  2. 在您的项目目录中创建一个名为 Podfile 的文件。此文件可定义您项目的依赖项。
  3. 修改 Podfile,并添加您的依赖项及其版本。 下面的示例包含 Maps SDK for iOS 所需的依赖项:
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '15.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GoogleMaps', '9.2.0'
    end
    请务必定期运行 pod outdated,以检测是否有较新版本,确保您始终使用最新版本。如有必要,请升级到最新版本
  4. 保存 Podfile
  5. 打开一个终端,然后转到包含 Podfile 的目录:

    cd <path-to-project>
  6. 运行 pod install 命令。此操作会安装 Podfile 中指定的 API 及其可能具有的任何依赖项。

    pod install
  7. 关闭 Xcode,然后打开(双击)您项目的 .xcworkspace 文件以启动 Xcode。从此刻开始,您必须使用 .xcworkspace 文件打开项目。

如需更新现有项目的 API,请按以下步骤操作:

  1. 打开一个终端,然后前往包含 Podfile 的项目目录。
  2. 运行 pod update 命令。这会将 Podfile 中指定的所有 API 更新为最新版本。

第 3 步:将您的 API 密钥添加到项目中

获取 API 密钥中,您为应用生成了 API 密钥。现在,将该密钥添加到您的 Xcode 项目中。

在下例中,请将 YOUR_API_KEY 替换为您的 API 密钥。

Swift

按照以下方法向 AppDelegate.swift 添加 API 密钥:

  1. 添加以下 import 语句:
    import GoogleMaps
  2. 使用您的 API 密钥将以下内容添加到您的 application(_:didFinishLaunchingWithOptions:) 方法:
    GMSServices.provideAPIKey("YOUR_API_KEY")
  3. 如果您也使用 Places API,请按照下面的内容再次添加密钥:
    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

Objective-C

按照以下方法向 AppDelegate.m 添加 API 密钥:

  1. 添加以下 import 语句:
    @import GoogleMaps;
  2. 使用您的 API 密钥将以下内容添加到您的 application:didFinishLaunchingWithOptions: 方法:
    [GMSServices provideAPIKey:@"YOUR_API_KEY"];
  3. 如果您也使用 Places API,请按照下面的内容再次添加密钥:
    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];

第 4 步(可选):检查 Apple 隐私权清单文件

Apple 要求在 App Store 上架的应用提供应用隐私权详细信息。如需了解最新动态和更多信息,请访问 Apple App Store 隐私权详细信息页面

Apple 隐私权清单文件包含在 SDK 的资源 bundle 中。如需验证是否已添加隐私权清单文件并检查其内容,请创建应用的归档文件,然后从归档文件生成隐私权报告

第 5 步(可选):声明 API 使用的网址架构

从 iOS 9 和 Xcode 7 开始,应用可以通过在应用的 Info.plist 文件中指定架构来声明其打算打开的网址架构。当用户点击地图上的 Google 徽标时,Maps SDK for iOS 会打开 Google 地图移动应用,因此您的应用可以声明相关的网址架构。

如需声明 Maps SDK for iOS 使用的网址架构,请将以下几行代码添加到您的 Info.plist 中:

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

下面的屏幕截图显示了 Xcode 用户界面中的配置:

Xcode 中的 `LSApplicationQueriesSchemes` 配置

如果没有上述声明,当用户点按地图上的 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 项目,接下来便可以创建和运行应用了。Navigation SDK for iOS 提供了许多教程和示例应用,可帮助您快速入门。如需了解详情,请参阅以下文档: