現在、Navigation SDK は一部のお客様にのみご利用いただけます。詳しくは、営業担当者までお問い合わせください。

プロジェクトを設定する

このガイドの手順に沿って、Navigation SDK for iOS を iOS アプリに統合してください。

Prerequisites

  • Navigation SDK for iOS の使用を開始する前に、請求先アカウントと Maps SDK for iOS を使用するプロジェクトが必要です。複数のプロジェクト オーナーと課金管理者を作成することをおすすめします。これにより、これらのロールを持つメンバーがいつでもチームで利用できます。詳細については、Google Cloud プロジェクトの設定をご覧ください。
  • Navigation SDK for iOS を使用してプロジェクトを作成するには、バージョン 13.0 以降の Xcode が必要です。
  • Navigation SDK の最小ターゲット iOS バージョンは 13.0 です。

SDK のインストール

CocoaPods を使用

Navigation SDK for iOS は、CocoaPods Pod として利用できます。CocoaPods は、Swift と Objective-C の Cocoa プロジェクトで依存関係を管理するためのオープンソース ツールです。

CocoaPods ツールがない場合は、ターミナルから以下のコマンドを実行して、macOS 上に CocoaPods ツールをインストールします。詳しくは、CocoaPods スタートガイドをご覧ください。

sudo gem install cocoapods

Navigation SDK for iOS の Podfile を作成し、それを使用して API とその依存関係をインストールします。

  1. Xcode プロジェクトがない場合は、ここで作成してローカルマシンに保存します。iOS 開発が初めての場合:
    1. 新しいプロジェクトを作成します。
    2. [iOS] > [App] テンプレートを選択します。
    3. プロジェクトのオプション画面で、以下の操作を行います。
      1. プロジェクト名を入力します。
      2. [Bundle ID] フィールドの値を記録します。この値を使用して、以下の API キーを制限できます。
      3. プロジェクトの [インターフェース] を [ストーリーボード] に設定します。
      4. [Language] を [Swift] または [Objective-C] に設定します。
  2. プロジェクトのディレクトリに、Podfile という名前のファイルを作成します。このファイルでプロジェクトの依存関係を定義します。
  3. Podfile を編集して、依存関係とそれらのバージョンを追加します。Navigation SDK for iOS に必要な依存関係を含む例を次に示します。
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '13.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GoogleNavigation', '4.4.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 が最新バージョンに更新されます。

手動でインストールする

Navigation SDK for iOS と Maps SDK for iOS のフレームワークをインストールする手順は次のとおりです。

  1. Google から受け取ったソースファイルを解凍します。
  2. Xcode を起動し、既存のプロジェクトを開くか、新しいプロジェクトを作成します。iOS を初めて使用する場合は、新しいプロジェクトを作成し、iOS アプリ テンプレートを選択します。
  3. 既存のマップとプレイスの参照をすべてプロジェクトから削除します。
  4. プロジェクトで GoogleMaps.framework を右クリックし、[Show In Finder] を選択します。
  5. GoogleMaps.bundle をリソース フォルダから Xcode プロジェクトの最上位ディレクトリにドラッグします。プロンプトが表示されたら、[転送先グループのフォルダにアイテムをコピー] が選択されていないことを確認します。
  6. 前の 2 つの手順を繰り返して GoogleNavigation.bundle を追加します。
  7. プロジェクト ナビゲータからプロジェクトを選択し、アプリケーションのターゲットを選択します。
  8. [Build Phases] タブを開き、[Link Binary with Libraries で次のフレームワークとライブラリを追加します。
    • Accelerate.framework
    • AudioToolbox.framework
    • AVFoundation.framework
    • CoreData.framework
    • CoreGraphics.framework
    • CoreLocation.framework
    • CoreTelephony.framework
    • CoreText.framework
    • GLKit.framework
    • ImageIO.framework
    • libc++.tbd
    • libxml2.tbd
    • libz.tbd
    • OpenGLES.framework
    • QuartzCore.framework
    • SystemConfiguration.framework
    • UIKit.framework
    • WebKit.framework
  9. アプリのターゲットで [Capabilities] タブを選択し、[Background Modes] をオンにして、次のモードを有効にします。
    • オーディオ、AirPlay、ピクチャー イン ピクチャー
    • 位置情報の更新
  10. 特定のターゲットではなく、プロジェクトを選択し、[Build Settings] タブを開きます。[その他のリンカーフラグ] セクションで、debugrelease の両方に ‑ObjC を追加します。これらの設定が表示されていない場合は、[Build Settings] バーのフィルタを [Basic] から [All] に変更します。
  11. Info.plist を開き、次の Key-Value ペアを追加します。
    • キー: NSLocationWhenInUseUsageDescriptionプライバシー - 位置情報を使用している場合の使用状況の説明)
      値: 「このアプリは、ターンバイターン方式でナビを使用するために位置情報の利用許可が必要です。」
    • キー: NSLocationAlwaysAndWhenInUseUsageDescriptionプライバシー - 位置情報の利用許可と使用中の使用状況の説明
      値: 「このアプリは、ターンバイターン方式のナビで位置情報を使用するための権限が必要です。」

XCFramework をインストールする

XCFramework は、M1 チップセットを使用するマシンなど、複数のプラットフォームで使用できる Maps SDK for iOS と Navigation SDK for iOS のインストールに使用できるバイナリ パッケージです。このガイドでは、Maps SDK for iOS を含む XCFramework をプロジェクトに手動で追加し、Xcode でビルド設定を構成する方法について説明します。

Maps SDK for iOS と Navigation SDK for iOS のフレームワークをインストールする手順は次のとおりです。

  1. Google から受け取ったソースファイルを解凍します。
  2. Xcode を起動し、既存のプロジェクトを開くか、新しいプロジェクトを作成します。iOS を初めて使用する場合は、新しいプロジェクトを作成し、iOS アプリ テンプレートを選択します。
  3. 既存のマップとプレイスの参照をすべてプロジェクトから削除します。
  4. 以下の XCFramework を [フレームワーク、ライブラリ、埋め込みコンテンツ] の下のプロジェクトにドラッグし、Maps SDK と Navigation SDK の両方をインストールします(プロンプトが表示されたら、[必要に応じてアイテムをコピー] を選択します)。
    • GoogleMapsBase.xcframework
    • GoogleMaps.xcframework
    • GoogleMapsCore.xcframework
    • GoogleNavigation.xcframework
  5. プロジェクトで GoogleMaps.xcframework を右クリックし、[Show In Finder] を選択します。
  6. GoogleMaps.bundleios-arm64/GoogleMaps.framework/Resources フォルダから Xcode プロジェクトの最上位ディレクトリにドラッグします。プロンプトが表示されたら、[転送先グループのフォルダにアイテムをコピー] が選択されていないことを確認します。
  7. 前の 2 つの手順を繰り返して GoogleNavigation.bundle を追加します。
  8. プロジェクト ナビゲータからプロジェクトを選択し、アプリケーションのターゲットを選択します。
  9. [Build Phases] タブを開き、[Link Binary with Libraries で次のフレームワークとライブラリを追加します。
    • Accelerate.framework
    • AudioToolbox.framework
    • AVFoundation.framework
    • CoreData.framework
    • CoreGraphics.framework
    • CoreLocation.framework
    • CoreTelephony.framework
    • CoreText.framework
    • GLKit.framework
    • ImageIO.framework
    • libc++.tbd
    • libxml2.tbd
    • libz.tbd
    • OpenGLES.framework
    • QuartzCore.framework
    • SystemConfiguration.framework
    • UIKit.framework
    • WebKit.framework
  10. アプリのターゲットで [Capabilities] タブを選択し、[Background Modes] をオンにして、次のモードを有効にします。
    • オーディオ、AirPlay、ピクチャー イン ピクチャー
    • 位置情報の更新
  11. 特定のターゲットではなく、プロジェクトを選択し、[Build Settings] タブを開きます。[その他のリンカーフラグ] セクションで、debugrelease の両方に ‑ObjC を追加します。これらの設定が表示されていない場合は、[Build Settings] バーのフィルタを [Basic] から [All] に変更します。
  12. Info.plist を開き、次の Key-Value ペアを追加します。
    • キー: NSLocationWhenInUseUsageDescriptionプライバシー - 位置情報を使用している場合の使用状況の説明)
      値: 「このアプリは、ターンバイターン方式でナビを使用するために位置情報の利用許可が必要です。」
    • キー: NSLocationAlwaysAndWhenInUseUsageDescriptionプライバシー - 位置情報の利用許可と使用中の使用状況の説明
      値: 「このアプリは、ターンバイターン方式のナビで位置情報を使用するための権限が必要です。」

プロジェクトに API キーを追加する

次の例は、Xcode でプロジェクトに API キーを追加する方法を示しています。

Swift

次のように、API キーを AppDelegate.swift に追加します。

  1. 次の import ステートメントを追加します:
    import GoogleMaps
    import GoogleNavigation
  2. application(_:didFinishLaunchingWithOptions:) メソッドに
    GMSServices.provideAPIKey("YOUR_API_KEY")
    を追加します。

Objective-C

次のように、API キーを AppDelegate.m に追加します。

  1. 次の import ステートメントを追加します:
    @import GoogleMaps;
    @import GoogleNavigation;
  2. application:didFinishLaunchingWithOptions: メソッドに
    [GMSServices provideAPIKey:@"YOUR_API_KEY"];
    を追加します。

地図を追加する

このコードは、ナビゲーション用の初期設定を含む、既存のViewControllerにシンプルな地図を追加する方法を示しています。

ナビゲーションを有効にするには、ユーザーが利用規約に同意する必要があります。ユーザーにプロンプトを表示するには、GMSNavigationServices.showTermsAndConditionsDialogIfNeeded() を呼び出し、利用規約に同意したかどうかを確認します。ユーザーが利用規約に同意しなかった場合、mapView.isNavigationEnabled = true は効果がなく、mapView.navigator は n になります。

Swift

import UIKit
import GoogleNavigation

class ViewController: UIViewController {

  var mapView: GMSMapView!
  var locationManager: CLLocationManager!

  override func loadView() {
    locationManager = CLLocationManager()
    locationManager.requestAlwaysAuthorization()

    let camera = GMSCameraPosition.camera(withLatitude: 47.67, longitude: -122.20, zoom: 14)
    mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)

    // Show the terms and conditions.
    let companyName = "Ride Sharing Co."
    GMSNavigationServices.showTermsAndConditionsDialogIfNeeded(
      withCompanyName: companyName) { termsAccepted in
      if termsAccepted {
        // Enable navigation if the user accepts the terms.
        self.mapView.isNavigationEnabled = true
      } else {
        // Handle the case when the user rejects the terms and conditions.
      }
    }

    view = mapView
  }

  // TODO: Add navigation code.

}

Objective-C

#import "ViewController.h"
@import GoogleNavigation;

@interface ViewController ()
@end

@implementation ViewController
GMSMapView *_mapView;
CLLocationManager *_locationManager;

- (void)loadView {

  _locationManager = [[CLLocationManager alloc] init];
  [_locationManager requestAlwaysAuthorization];

  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:47.67
                                                          longitude:-122.20
                                                               zoom:14];
  _mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];

  // Show the terms and conditions.
  NSString *companyName = @"Ride Sharing Co.";
  [GMSNavigationServices
    showTermsAndConditionsDialogIfNeededWithCompanyName:companyName
    callback:^(BOOL termsAccepted) {
     if (termsAccepted) {
       // Enable navigation if the user accepts the terms.
       _mapView.navigationEnabled = YES;
     } else {
       // Handle the case when the user rejects the terms and conditions.
     }
   }];

  self.view = _mapView;
}

// TODO: Add navigation code.

@end

アプリを実行すると、ワシントンのカークランドを中心とした地図が表示されます。地図が表示されない場合は、正しい API キーを指定していることを確認してください。