Ikuti panduan ini untuk mengintegrasikan Navigation SDK for iOS ke dalam aplikasi iOS.
Prasyarat
- Sebelum mulai menggunakan Navigation SDK for iOS, Anda harus memiliki project dengan akun penagihan dan mengaktifkan Maps SDK for iOS. Sebaiknya buat beberapa pemilik project dan administrator penagihan agar selalu ada seseorang yang memiliki peran ini pada tim Anda. Untuk mempelajari lebih lanjut, lihat artikel Menyiapkan project Google Cloud.
- Untuk membuat project menggunakan Navigation SDK untuk iOS, Anda memerlukan Xcode versi 15.0 atau yang lebih baru.
- Versi iOS target minimum untuk SDK navigasi adalah 15.0.
Langkah 1: Instal SDK
Swift Package Manager
Navigation SDK dapat diinstal melalui Swift Package Manager. Untuk menambahkan SDK, pastikan Anda telah menghapus dependensi Navigation SDK yang ada.
Untuk menambahkan SDK ke project baru atau yang sudah ada, ikuti langkah-langkah berikut:
-
Buka
project
atauworkspace
Xcode, lalu buka File > Add Package Dependencies. - Masukkan https://github.com/googlemaps/ios-navigation-sdk sebagai URL, tekan Enter untuk menarik paket, dan klik "Add Package".
-
Untuk menginstal
version
tertentu, tetapkan kolom Dependency Rule ke salah satu opsi berbasis versi. Untuk project baru, sebaiknya tentukan versi terbaru dan gunakan opsi "Versi Persis". Setelah selesai, klik "Add Package". -
Dari jendela Choose Package Products, pastikan
GoogleNavigation
akan ditambahkan ke targetmain
yang ditentukan. Setelah selesai, klik "Add Package". -
Untuk memverifikasi penginstalan, buka panel
General
target Anda. Di Frameworks, Libraries, and Embedded Content, Anda akan melihat paket yang diinstal. Anda juga dapat melihat bagian "Package Dependencies" "Project Navigator" untuk memverifikasi paket dan versinya.
Untuk mengupdate package
untuk project yang sudah ada, ikuti langkah-langkah berikut:
Jika melakukan upgrade dari versi yang lebih lama dari 9.0.0, Anda harus menghapus dependensi berikut:
GoogleMapsBase
,GoogleMapsCore
, danGoogleMapsM4B
setelah proses upgrade. Jangan hapus dependensi untukGoogleMaps
. Untuk informasi selengkapnya, lihat Catatan Rilis Versi 9.0.0.Dari setelan konfigurasi project Xcode Anda, temukan Frameworks, Libraries, and Embedded Content. Gunakan tanda minus(-) untuk menghapus framework berikut:
GoogleMapsBase
(Hanya untuk upgrade dari versi sebelum 9.0.0)GoogleMapsCore
(Hanya untuk upgrade dari versi sebelum 9.0.0)GoogleMapsM4B
(Hanya untuk upgrade dari versi sebelum 9.0.0)
- Dari Xcode, buka "File > Packages > Update To Latest Package Versions".
- Untuk memverifikasi penginstalan, buka bagian Package Dependencies Project Navigator untuk memverifikasi paket dan versinya.
Untuk menghapus dependensi Navigation SDK yang ada menggunakan
CocoaPods
, ikuti langkah-langkah berikut:
- Tutup ruang kerja Xcode Anda. Buka terminal dan jalankan perintah berikut:
sudo gem install cocoapods-deintegrate cocoapods-clean pod deintegrate pod cache clean --all
-
Hapus
Podfile
,Podfile.resolved
, dan Xcodeworkspace
jika Anda tidak menggunakannya untuk hal apa pun selain CocoaPods.
-
Dari setelan konfigurasi project Xcode Anda, temukan Frameworks, Libraries, and Embedded Content. Gunakan tanda minus(-) untuk menghapus framework berikut:
GoogleMaps.xcframework
GoogleMapsBase.xcframework
GoogleMapsCore.xcframework
GoogleNavigation.xcframework
-
Dari direktori level teratas project Xcode Anda, hapus paket
GoogleMaps
.
CocoaPods
Navigation SDK untuk iOS tersedia sebagai pod CocoaPods. CocoaPods merupakan pengelola dependensi open source untuk proyek Swift dan Objective-C Cocoa.
Jika Anda belum memiliki alat CocoaPods, instal di macOS dengan menjalankan perintah berikut dari terminal. Untuk mengetahui detailnya, lihat Panduan Memulai CocoaPods.
sudo gem install cocoapods
Buat Podfile
untuk Navigation SDK untuk iOS dan gunakan
untuk menginstal API serta dependensinya:
- Jika Anda belum memiliki project Xcode, buat sekarang dan simpan ke mesin lokal Anda. Jika Anda baru mengenal pengembangan iOS:
- Membuat project baru.
- Pilih template iOS > App.
- Di layar opsi project:
- Masukkan Project Name.
- Catat nilai kolom ID paket. Anda dapat menggunakan nilai tersebut untuk membatasi kunci API di bawah.
- Tetapkan Interface project ke Storyboard.
- Setel Language ke Swift atau Objective-C.
- Buat file bernama
Podfile
dalam direktori project Anda. File ini mendefinisikan dependensi project Anda. - Edit
Podfile
dan tambahkan dependensi Anda beserta versions. Berikut contoh yang menyertakan dependensi yang Anda perlukan untuk Navigation SDK for iOS: # Referensi penginstalan Cocoapods #source 'https://github.com/CocoaPods/Specs.git' platform :ios, '15.0' target 'YOUR_APPLICATION_TARGET_NAME_HERE' do pod 'GoogleNavigation', '9.0.0' end
Pastikan menjalankanpod outdated
secara rutin untuk mendeteksi versi yang lebih baru. Jika perlu, upgrade ke versi terbaru. - Simpan
Podfile
. Buka terminal, lalu buka direktori yang berisi
Podfile
:cd <path-to-project>
Jalankan perintah
pod install
. Tindakan ini akan menginstal API yang ditentukan dalamPodfile
, beserta dependensi apa pun.pod install
Tutup Xcode, lalu buka (klik dua kali) file
.xcworkspace
project Anda untuk meluncurkan Xcode. Mulai saat ini dan seterusnya, Anda harus menggunakan file.xcworkspace
untuk membuka project.
Untuk mengupdate API project yang sudah ada, ikuti langkah-langkah berikut:
- Buka terminal, lalu buka direktori project yang berisi
Podfile
. - Jalankan perintah
pod update
. Tindakan ini akan mengupdate semua API yang ditentukan dalamPodfile
ke versi terbaru.
Penginstalan manual
Panduan ini menunjukkan cara menambahkan XCFramework yang berisi Navigation SDK for iOS secara manual, dan Maps SDK for iOS ke project Anda, serta mengonfigurasi setelan build di Xcode. XCFramework adalah paket biner yang dapat Anda gunakan di berbagai platform, termasuk mesin yang menggunakan {i>chipset<i} M1
Ikuti langkah-langkah berikut untuk menginstal XCFrameworks untuk Navigation SDK for iOS, dan Maps SDK for iOS:
- Download file resource dan biner SDK berikut:
- Luncurkan Xcode dan buka project yang ada, atau buat project baru. Jika Anda baru menggunakan iOS, buat project baru dan pilih iOS App template.
- Menghapus semua referensi Maps, Navigasi, dan Tempat yang ada dari project.
- Tarik XCFramework berikut ke project Anda di bagian
Frameworks, Libraries, and Embedded Content untuk menginstal
Maps dan Navigation SDK (saat diminta, pilih Copy items if needed):
GoogleMaps.xcframework
GoogleMapsBase.xcframework
GoogleMapsCore.xcframework
GoogleNavigation.xcframework
- Tarik
GoogleMaps.bundle
dari GoogleMapsResources yang Anda download ke direktori level teratas project Xcode Anda. Saat diminta, pastikan Copy items if needed dipilih. - Tarik
GoogleNavigation.bundle
dari GoogleNavigationResources yang Anda download ke direktori level teratas project Xcode Anda. Saat diminta, pastikan Copy items into destination group's folder dipilih. - Pilih project Anda dari Navigator Project, dan pilih target aplikasi Anda.
- Buka tab Build Phases, dan di dalam
Link Binary with Libraries, tambahkan framework dan library berikut:
Accelerate.framework
AudioToolbox.framework
AVFoundation.framework
Contacts.framework
CoreData.framework
CoreGraphics.framework
CoreImage.framework
CoreLocation.framework
CoreTelephony.framework
CoreText.framework
GLKit.framework
ImageIO.framework
libc++.tbd
libxml2.tbd
libz.tbd
Metal.framework
OpenGLES.framework
QuartzCore.framework
Security.framework
SystemConfiguration.framework
UIKit.framework
UserNotifications.framework
WebKit.framework
- Pada target aplikasi Anda, pilih tab Kemampuan,
aktifkan Mode Latar Belakang, dan aktifkan mode berikut:
- Audio, AirPlay, dan Picture-in-Picture
- Pembaruan lokasi
- Pilih project Anda, bukan target tertentu, lalu buka tab Build
Settings. Di bagian Other Linker Flags,
tambahkan
‑ObjC
untuk debug dan release. Jika setelan ini tidak terlihat, ubah filter di panel Build Settings dari Basic menjadi All. - Buka
Info.plist
dan tambahkan key-value pair berikut:- Kunci:
NSLocationWhenInUseUsageDescription
(Privasi - Deskripsi Lokasi Saat Penggunaan Penggunaan)
Nilai: "Aplikasi ini memerlukan izin untuk menggunakan lokasi Anda untuk navigasi belokan demi belokan." - Kunci:
NSLocationAlwaysAndWhenInUseUsageDescription
(Privasi - Deskripsi Lokasi Selalu dan Saat Digunakan Penggunaan)
Nilai: "Aplikasi ini memerlukan izin untuk menggunakan lokasi Anda untuk navigasi belokan demi belokan."
- Kunci:
Langkah 2: Periksa file Manifes Privasi Apple
Apple mewajibkan detail privasi aplikasi untuk aplikasi di App Store. Kunjungi halaman Detail Privasi Apple App Store untuk pembaruan dan informasi selengkapnya.
File Manifes Privasi Apple disertakan dalam paket resource untuk SDK. Untuk memverifikasi bahwa File Manifes Privasi telah disertakan, dan untuk memeriksa kontennya, buat arsip aplikasi dan buat laporan privasi dari arsip.
Langkah 3: Tambahkan kunci API ke project Anda
Contoh berikut menunjukkan cara menambahkan kunci API ke project Anda di Xcode:
Swift
Tambahkan kunci API ke AppDelegate.swift
sebagai berikut:
- Tambahkan pernyataan impor berikut:
import GoogleMaps import GoogleNavigation
- Tambahkan kode berikut ke metode
application(_:didFinishLaunchingWithOptions:)
Anda:GMSServices.provideAPIKey("YOUR_API_KEY")
Objective-C
Tambahkan kunci API ke AppDelegate.m
sebagai berikut:
- Tambahkan pernyataan impor berikut:
@import GoogleMaps; @import GoogleNavigation;
- Tambahkan kode berikut ke metode
application:didFinishLaunchingWithOptions:
Anda:[GMSServices provideAPIKey:@"YOUR_API_KEY"];
Langkah 4: Tambahkan peta
Kode ini menunjukkan cara menambahkan peta sederhana ke ViewController
yang ada,
termasuk beberapa setelan awal untuk navigasi.
Sebelum navigasi dapat diaktifkan, pengguna harus menyetujui persyaratan dan
ketentuan. Untuk meminta pengguna, panggil
GMSNavigationServices.showTermsAndConditionsDialogIfNeeded()
, lalu periksa untuk
melihat apakah persyaratan telah disetujui. Jika pengguna menolak persyaratan, mapView.isNavigationEnabled = true
tidak akan berpengaruh, dan mapView.navigator
akan bernilai nol.
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
Jalankan aplikasi Anda. Anda akan melihat peta yang berpusat di Kirkland, Washington. Jika peta tidak terlihat, pastikan Anda telah memberikan kunci API yang benar.
Jika Anda adalah pelanggan Mobility Services
Jika Anda adalah pelanggan Mobility Services, pelajari penagihan dalam dokumentasi Mobility. Untuk mengetahui informasi selengkapnya tentang pencatatan transaksi, lihat artikel Menyiapkan penagihan. Untuk mempelajari cara menambahkan ID transaksi ke penerapan Navigation SDK, lihat Mengaitkan penggunaan layanan dengan transaksi Mobility.