このガイドの手順に沿って、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 とその依存関係をインストールします。
- Xcode プロジェクトがない場合は、ここで作成してローカルマシンに保存します。iOS 開発が初めての場合:
- 新しいプロジェクトを作成します。
- [iOS] > [App] テンプレートを選択します。
- プロジェクトのオプション画面で、以下の操作を行います。
- プロジェクト名を入力します。
- [Bundle ID] フィールドの値を記録します。この値を使用して、以下の API キーを制限できます。
- プロジェクトの [インターフェース] を [ストーリーボード] に設定します。
- [Language] を [Swift] または [Objective-C] に設定します。
- プロジェクトのディレクトリに、
Podfile
という名前のファイルを作成します。このファイルでプロジェクトの依存関係を定義します。 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
を定期的に実行して、新しいバージョンを検出してください。必要に応じて、最新バージョンにアップグレードしてください。Podfile
を保存します。ターミナルを開いて、
Podfile
を含むディレクトリに移動します。cd <path-to-project>
pod install
コマンドを実行します。これにより、Podfile
で指定された API と依存関係がインストールされます。pod install
Xcode を終了し、プロジェクトの
.xcworkspace
ファイルを(ダブルクリックして)開いて、Xcode を起動します。これ以降、このプロジェクトを開くには.xcworkspace
ファイルを使用する必要があります。
既存のプロジェクトの API を更新する手順は次のとおりです。
- ターミナルを開いて、
Podfile
を含むプロジェクト ディレクトリに移動します。 pod update
コマンドを実行します。これにより、Podfile
で指定されたすべての API が最新バージョンに更新されます。
手動でインストールする
Navigation SDK for iOS と Maps SDK for iOS のフレームワークをインストールする手順は次のとおりです。
- Google から受け取ったソースファイルを解凍します。
- Xcode を起動し、既存のプロジェクトを開くか、新しいプロジェクトを作成します。iOS を初めて使用する場合は、新しいプロジェクトを作成し、iOS アプリ テンプレートを選択します。
- 既存のマップとプレイスの参照をすべてプロジェクトから削除します。
- プロジェクトで
GoogleMaps.framework
を右クリックし、[Show In Finder] を選択します。 GoogleMaps.bundle
をリソース フォルダから Xcode プロジェクトの最上位ディレクトリにドラッグします。プロンプトが表示されたら、[転送先グループのフォルダにアイテムをコピー] が選択されていないことを確認します。- 前の 2 つの手順を繰り返して
GoogleNavigation.bundle
を追加します。 - プロジェクト ナビゲータからプロジェクトを選択し、アプリケーションのターゲットを選択します。
- [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
- アプリのターゲットで [Capabilities] タブを選択し、[Background Modes] をオンにして、次のモードを有効にします。
- オーディオ、AirPlay、ピクチャー イン ピクチャー
- 位置情報の更新
- 特定のターゲットではなく、プロジェクトを選択し、[Build Settings] タブを開きます。[その他のリンカーフラグ] セクションで、debug と release の両方に
‑ObjC
を追加します。これらの設定が表示されていない場合は、[Build Settings] バーのフィルタを [Basic] から [All] に変更します。 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 のフレームワークをインストールする手順は次のとおりです。
- Google から受け取ったソースファイルを解凍します。
- Xcode を起動し、既存のプロジェクトを開くか、新しいプロジェクトを作成します。iOS を初めて使用する場合は、新しいプロジェクトを作成し、iOS アプリ テンプレートを選択します。
- 既存のマップとプレイスの参照をすべてプロジェクトから削除します。
- 以下の XCFramework を [フレームワーク、ライブラリ、埋め込みコンテンツ] の下のプロジェクトにドラッグし、Maps SDK と Navigation SDK の両方をインストールします(プロンプトが表示されたら、[必要に応じてアイテムをコピー] を選択します)。
GoogleMapsBase.xcframework
GoogleMaps.xcframework
GoogleMapsCore.xcframework
GoogleNavigation.xcframework
- プロジェクトで
GoogleMaps.xcframework
を右クリックし、[Show In Finder] を選択します。 GoogleMaps.bundle
をios-arm64/GoogleMaps.framework/Resources
フォルダから Xcode プロジェクトの最上位ディレクトリにドラッグします。プロンプトが表示されたら、[転送先グループのフォルダにアイテムをコピー] が選択されていないことを確認します。- 前の 2 つの手順を繰り返して
GoogleNavigation.bundle
を追加します。 - プロジェクト ナビゲータからプロジェクトを選択し、アプリケーションのターゲットを選択します。
- [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
- アプリのターゲットで [Capabilities] タブを選択し、[Background Modes] をオンにして、次のモードを有効にします。
- オーディオ、AirPlay、ピクチャー イン ピクチャー
- 位置情報の更新
- 特定のターゲットではなく、プロジェクトを選択し、[Build Settings] タブを開きます。[その他のリンカーフラグ] セクションで、debug と release の両方に
‑ObjC
を追加します。これらの設定が表示されていない場合は、[Build Settings] バーのフィルタを [Basic] から [All] に変更します。 Info.plist
を開き、次の Key-Value ペアを追加します。- キー:
NSLocationWhenInUseUsageDescription
(プライバシー - 位置情報を使用している場合の使用状況の説明)
値: 「このアプリは、ターンバイターン方式でナビを使用するために位置情報の利用許可が必要です。」 - キー:
NSLocationAlwaysAndWhenInUseUsageDescription
(プライバシー - 位置情報の利用許可と使用中の使用状況の説明)
値: 「このアプリは、ターンバイターン方式のナビで位置情報を使用するための権限が必要です。」
- キー:
プロジェクトに API キーを追加する
次の例は、Xcode でプロジェクトに API キーを追加する方法を示しています。
Swift
次のように、API キーを AppDelegate.swift
に追加します。
- 次の import ステートメントを追加します:
import GoogleMaps import GoogleNavigation
application(_:didFinishLaunchingWithOptions:)
メソッドにGMSServices.provideAPIKey("YOUR_API_KEY")
を追加します。
Objective-C
次のように、API キーを AppDelegate.m
に追加します。
- 次の import ステートメントを追加します:
@import GoogleMaps; @import GoogleNavigation;
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 キーを指定していることを確認してください。