Thực hiện theo hướng dẫn này để tích hợp SDK điều hướng dành cho iOS vào ứng dụng iOS.
Điều kiện tiên quyết
- Trước khi bắt đầu sử dụng SDK điều hướng dành cho iOS, bạn cần một dự án có tài khoản thanh toán và đã bật SDK Maps dành cho iOS. Bạn nên tạo nhiều chủ sở hữu dự án và quản trị viên thanh toán để nhóm của bạn luôn có một người có các vai trò này. Để tìm hiểu thêm, hãy xem bài viết Thiết lập dự án Google Cloud.
- Để tạo dự án bằng SDK điều hướng cho iOS, bạn cần có phiên bản 15.0 trở lên của Xcode.
- Phiên bản iOS mục tiêu tối thiểu cho SDK điều hướng là 15.0.
Bước 1: Cài đặt SDK
Trình quản lý gói Swift
Bạn có thể cài đặt SDK điều hướng thông qua Trình quản lý gói Swift. Để thêm SDK này, hãy đảm bảo bạn đã xoá mọi phần phụ thuộc SDK điều hướng hiện có.
Để thêm SDK vào dự án mới hoặc dự án hiện có, hãy làm theo các bước sau:
-
Mở Xcode
project
hoặcworkspace
, sau đó chuyển đến File > Add Package Dependencies (Tệp > Thêm phần phụ thuộc gói). - Nhập https://github.com/googlemaps/ios-navigation-sdk làm URL, nhấn phím Enter để lấy gói và nhấp vào "Add Package" (Thêm gói).
-
Để cài đặt một
version
cụ thể, hãy đặt trường Quy tắc phần phụ thuộc thành một trong các lựa chọn dựa trên phiên bản. Đối với các dự án mới, bạn nên chỉ định phiên bản mới nhất và sử dụng tuỳ chọn "Phiên bản chính xác". Sau khi hoàn tất, hãy nhấp vào "Add Package" (Thêm gói). -
Trong cửa sổ Choose Package Products (Chọn sản phẩm gói), hãy xác minh rằng
GoogleNavigation
sẽ được thêm vào mục tiêumain
được chỉ định. Sau khi hoàn tất, hãy nhấp vào "Add Package" (Thêm gói). -
Để xác minh chế độ cài đặt của bạn, hãy chuyển đến ngăn
General
của mục tiêu. Trong Khung, Thư viện và Nội dung được nhúng, bạn sẽ thấy các gói đã cài đặt. Bạn cũng có thể xem phần "Package Dependencies" (Phần phụ thuộc của gói) trong "Project Navigator" (Trình điều hướng dự án) để xác minh gói và phiên bản của gói.
Để cập nhật package
cho một dự án hiện có, hãy làm theo các bước sau:
Nếu đang nâng cấp từ phiên bản cũ hơn 9.0.0, bạn phải xoá các phần phụ thuộc sau:
GoogleMapsBase
,GoogleMapsCore
vàGoogleMapsM4B
sau khi nâng cấp. Đừng xoá phần phụ thuộc củaGoogleMaps
. Để biết thêm thông tin, hãy xem Ghi chú phát hành phiên bản 9.0.0.Trong phần cài đặt cấu hình dự án Xcode, hãy tìm Khung, Thư viện và Nội dung được nhúng. Sử dụng dấu trừ(-) để loại bỏ khung sau:
GoogleMapsBase
(Chỉ dành cho bản nâng cấp từ các phiên bản cũ hơn 9.0.0)GoogleMapsCore
(Chỉ dành cho bản nâng cấp từ các phiên bản cũ hơn 9.0.0)GoogleMapsM4B
(Chỉ dành cho bản nâng cấp từ các phiên bản cũ hơn 9.0.0)
- Trên Xcode, hãy chuyển đến "File > Packages > Update To New Package Versions" (Tệp > Gói > Cập nhật lên phiên bản gói mới nhất).
- Để xác minh việc cài đặt của bạn, hãy chuyển đến phần Package Dependencies (Phần phụ thuộc gói) trong Project Navigator (Trình điều hướng dự án) để xác minh gói và phiên bản của gói.
Để xoá các phần phụ thuộc SDK điều hướng hiện có được thêm vào bằng CocoaPods
, hãy làm theo các bước sau:
- Đóng không gian làm việc Xcode của bạn. Mở cửa sổ dòng lệnh rồi thực thi lệnh sau:
sudo gem install cocoapods-deintegrate cocoapods-clean pod deintegrate pod cache clean --all
-
Xoá
Podfile
,Podfile.resolved
và Xcodeworkspace
nếu bạn không sử dụng chúng cho bất cứ mục đích nào khác ngoài CocoaPods.
-
Trong phần cài đặt cấu hình dự án Xcode, hãy tìm Khung, Thư viện
và Nội dung được nhúng. Dùng dấu trừ(-) để xoá khung sau:
GoogleMaps.xcframework
GoogleMapsBase.xcframework
GoogleMapsCore.xcframework
GoogleNavigation.xcframework
-
Trên thư mục cấp cao nhất của dự án Xcode, hãy xoá gói
GoogleMaps
.
CocoaPods
SDK điều hướng dành cho iOS được cung cấp dưới dạng nhóm CocoaPods. CocoaPods là một trình quản lý phần phụ thuộc nguồn mở cho các dự án Swift và Target-C Cacao.
Nếu bạn chưa có công cụ CocoaPods, hãy cài đặt công cụ này trên macOS bằng cách chạy lệnh sau trên cửa sổ dòng lệnh. Để biết thông tin chi tiết, hãy xem Hướng dẫn bắt đầu sử dụng CocoaPods.
sudo gem install cocoapods
Tạo Podfile
cho SDK điều hướng dành cho iOS và dùng SDK này để cài đặt API cũng như các phần phụ thuộc của API đó:
- Nếu bạn chưa có dự án Xcode, hãy tạo một dự án ngay bây giờ và lưu vào
máy cục bộ của bạn. Nếu bạn mới phát triển trên iOS:
- Tạo một dự án mới.
- Chọn mẫu iOS > Ứng dụng.
- Trên màn hình tuỳ chọn dự án:
- Nhập Tên dự án.
- Ghi lại giá trị của trường Giá trị nhận dạng gói. Bạn có thể sử dụng giá trị đó để hạn chế khoá API ở bên dưới.
- Đặt Interface (Giao diện) dự án thành Storyboard (Bảng phân cảnh).
- Đặt Language (Ngôn ngữ) thành Swift hoặc Target-C.
- Tạo một tệp có tên
Podfile
trong thư mục dự án. Tệp này xác định các phần phụ thuộc của dự án. - Chỉnh sửa
Podfile
và thêm các phần phụ thuộc cùng với versions của chúng. Sau đây là ví dụ về phần phụ thuộc mà bạn cần cho SDK điều hướng dành cho iOS: # Tài liệu tham khảo khi cài đặt 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
Hãy nhớ thường xuyên chạypod outdated
để phát hiện các phiên bản mới hơn. Nếu cần, hãy nâng cấp lên phiên bản mới nhất. - Lưu
Podfile
. Mở cửa sổ dòng lệnh rồi chuyển đến thư mục chứa
Podfile
:cd <path-to-project>
Chạy lệnh
pod install
. Thao tác này sẽ cài đặt các API được chỉ định trongPodfile
, cùng với mọi phần phụ thuộc.pod install
Đóng Xcode, sau đó mở (nhấp đúp) vào tệp
.xcworkspace
của dự án để khởi chạy Xcode. Từ thời điểm này trở đi, bạn phải sử dụng tệp.xcworkspace
để mở dự án.
Để cập nhật API cho một dự án hiện có, hãy làm theo các bước sau:
- Mở cửa sổ dòng lệnh rồi chuyển đến thư mục dự án chứa
Podfile
. - Chạy lệnh
pod update
. Thao tác này sẽ cập nhật tất cả API được chỉ định trongPodfile
lên phiên bản mới nhất.
Cài đặt theo cách thủ công
Hướng dẫn này cho bạn biết cách thêm XCFrameworks chứa SDK điều hướng dành cho iOS và SDK Maps dành cho iOS theo cách thủ công vào dự án của bạn và định cấu hình các chế độ cài đặt bản dựng trong Xcode. XCFramework là một gói nhị phân mà bạn có thể sử dụng trên nhiều nền tảng, bao gồm cả các máy sử dụng chipset M1
Hãy thực hiện theo các bước sau để cài đặt XCFrameworks cho SDK điều hướng dành cho iOS và SDK bản đồ dành cho iOS:
- Tải các tệp nhị phân SDK và tệp tài nguyên sau đây xuống:
- Chạy Xcode và mở một dự án hiện có hoặc tạo một dự án mới. Nếu bạn mới sử dụng iOS, hãy tạo một dự án mới rồi chọn Mẫu ứng dụng iOS.
- Xoá tất cả các tệp tham chiếu đến Maps, Điều hướng và Địa điểm hiện có khỏi dự án.
- Kéo XCFrameworks sau vào dự án của bạn trong Frameworks, Libraries, and Embedded Content (Khung, Thư viện và Nội dung được nhúng) để cài đặt cả SDK Maps và Điều hướng (khi được nhắc, hãy chọn Sao chép các mục nếu cần):
GoogleMaps.xcframework
GoogleMapsBase.xcframework
GoogleMapsCore.xcframework
GoogleNavigation.xcframework
- Kéo
GoogleMaps.bundle
từ GoogleMapsResources mà bạn đã tải xuống vào thư mục cấp cao nhất của dự án Xcode. Khi được nhắc, hãy nhớ chọn Sao chép các mục nếu cần. - Kéo
GoogleNavigation.bundle
từ GoogleNavigationResources tải xuống vào thư mục cấp cao nhất của dự án Xcode. Khi được nhắc, hãy nhớ chọn Sao chép các mục vào thư mục của nhóm đích. - Chọn dự án của bạn trên Project Navigator và chọn mục tiêu cho ứng dụng.
- Mở thẻ Build Phase (Tạo giai đoạn), và trong phần Liên kết tệp nhị phân với thư viện, hãy thêm các khung và thư viện sau:
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
- Trong mục tiêu của ứng dụng, hãy chọn thẻ Capabilities (Khả năng), bật Background Modes (Chế độ nền) rồi bật các chế độ sau:
- Âm thanh, AirPlay và Hình trong hình
- Thông tin cập nhật vị trí
- Chọn dự án của bạn chứ không phải mục tiêu cụ thể rồi mở thẻ Build Settings (Cài đặt bản dựng). Trong phần Cờ trình liên kết khác, hãy thêm
‑ObjC
cho cả thao tác gỡ lỗi và phát hành. Nếu các chế độ cài đặt này không hiển thị, hãy thay đổi bộ lọc trong thanh Build Settings (Cài đặt bản dựng) từ Basic (Cơ bản) thành All (Tất cả). - Mở
Info.plist
và thêm các cặp khoá-giá trị sau:- Khoá:
NSLocationWhenInUseUsageDescription
(Quyền riêng tư – Vị trí khi sử dụng – Nội dung mô tả về việc sử dụng)
Giá trị: "Ứng dụng này cần có quyền sử dụng thông tin vị trí của bạn để đi theo chỉ dẫn từng chặng". - Khoá:
NSLocationAlwaysAndWhenInUseUsageDescription
(Quyền riêng tư – Luôn luôn sử dụng thông tin vị trí và Nội dung mô tả về việc sử dụng khi đang sử dụng)
Giá trị: "Ứng dụng này cần có quyền sử dụng thông tin vị trí của bạn để đi theo chỉ dẫn từng chặng".
- Khoá:
Bước 2: Kiểm tra tệp kê khai về quyền riêng tư của Apple
Apple yêu cầu thông tin chi tiết về quyền riêng tư của ứng dụng đối với các ứng dụng trên App Store. Hãy truy cập trang Thông tin chi tiết về quyền riêng tư trong App Store của Apple để biết thông tin cập nhật và biết thêm thông tin.
Tệp kê khai về quyền riêng tư của Apple có trong gói tài nguyên cho SDK. Để xác minh rằng Tệp kê khai về quyền riêng tư đã được đưa vào tệp kê khai về quyền riêng tư, cũng như để kiểm tra nội dung trong đó, hãy tạo một bản lưu trữ ứng dụng rồi tạo báo cáo về quyền riêng tư trong kho lưu trữ đó.
Bước 3: Thêm khoá API vào dự án của bạn
Các ví dụ sau đây minh hoạ cách thêm khoá API vào dự án của bạn trong Xcode:
Swift
Thêm khoá API vào AppDelegate.swift
của bạn như sau:
- Thêm các câu lệnh nhập sau:
import GoogleMaps import GoogleNavigation
- Thêm đoạn mã sau vào phương thức
application(_:didFinishLaunchingWithOptions:)
:GMSServices.provideAPIKey("YOUR_API_KEY")
Objective-C
Thêm khoá API vào AppDelegate.m
của bạn như sau:
- Thêm các câu lệnh nhập sau:
@import GoogleMaps; @import GoogleNavigation;
- Thêm đoạn mã sau vào phương thức
application:didFinishLaunchingWithOptions:
:[GMSServices provideAPIKey:@"YOUR_API_KEY"];
Bước 4: Thêm bản đồ
Mã này minh hoạ cách thêm một bản đồ đơn giản vào ViewController
hiện có, bao gồm một số chế độ cài đặt ban đầu cho hoạt động điều hướng.
Trước khi có thể bật tính năng điều hướng, người dùng phải đồng ý với các điều khoản và điều kiện. Để nhắc người dùng, hãy gọi GMSNavigationServices.showTermsAndConditionsDialogIfNeeded()
, sau đó kiểm tra xem các điều khoản đã được chấp nhận hay chưa. Nếu người dùng từ chối các điều khoản, mapView.isNavigationEnabled = true
sẽ không có hiệu lực và mapView.navigator
sẽ bằng không.
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
Chạy ứng dụng của bạn. Bạn sẽ thấy một bản đồ có tâm điểm tại Kirkland, Washington. Nếu bản đồ không hiển thị, hãy xác nhận rằng bạn đã cung cấp đúng khoá API.
Nếu bạn là khách hàng Dịch vụ di động
Nếu bạn là khách hàng sử dụng Dịch vụ di động, hãy tìm hiểu về cách thanh toán trong tài liệu về Dịch vụ di động. Để biết thêm thông tin về việc ghi lại giao dịch, hãy xem phần Thiết lập thanh toán. Để tìm hiểu cách thêm mã giao dịch vào quy trình triển khai SDK điều hướng, hãy xem phần Liên kết mức sử dụng dịch vụ của bạn với các giao dịch trên Di động.