Thiết lập dự án

Làm 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 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ó 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 một 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à 14.0.

Cài đặt SDK

Trình quản lý gói Swift

Bạn có thể cài đặt SDK Navigation thông qua Trình quản lý gói Swift. Để thêm SDK, 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 một dự án mới hoặc hiện có, hãy làm theo các bước sau:

  1. Mở Xcode project hoặc workspace, sau đó chuyển đến File > Add Package Dependencies (Tệp > Thêm phần phụ thuộc gói).
  2. Nhập https://github.com/googlemaps/ios-navigation-sdk làm URL, nhấn Enter để kéo gói và nhấp vào "Thêm gói".
  3. Để 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 tuỳ chọn dựa trên phiên bản. Đối với 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 "Thêm gói".
  4. 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êu main mà bạn chỉ định. Sau khi hoàn tất, hãy nhấp vào "Thêm gói".
  5. Để xác minh việc cài đặt, hãy chuyển đến ngăn General của mục tiêu. Trong Frameworks, Libraries và Embedded Content (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:

  1. Trong 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).
  2. Để xác minh quá trình cài đặt, hãy chuyển đến 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 đó.

Để xoá các phần phụ thuộc SDK Điều hướng hiện có đã thêm bằng CocoaPods, hãy làm theo các bước sau:

  1. Đó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
  2. Hãy xoá Podfile, Podfile.resolved và Xcode workspace nếu bạn không sử dụng chúng cho bất kỳ sản phẩm nào khác ngoài CocoaPods.

Để xoá SDK Điều hướng hiện có dành cho iOS được cài đặt theo cách thủ công, hãy làm theo các bước sau:
  1. Trong phần cài đặt cấu hình của dự án Xcode, hãy tìm Khung, Thư viện và Nội dung được nhúng. Sử dụng dấu trừ(-) để xoá khung sau:
    • GoogleMaps.xcframework
    • GoogleMapsBase.xcframework
    • GoogleMapsCore.xcframework
    • GoogleNavigation.xcframework
  2. Trong 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à trình quản lý phần phụ thuộc nguồn mở cho các dự án Swift và Objective-C Cacao.

Nếu bạn chưa cài đặt 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 từ 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 một Podfile cho SDK Điều hướng dành cho iOS và sử dụng SDK đó để cài đặt API và các phần phụ thuộc của API đó:

  1. 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 dự án đó vào máy cục bộ của bạn. Nếu bạn mới làm quen với việc phát triển ứng dụng cho iOS:
    1. Tạo một dự án mới.
    2. Chọn mẫu iOS > Ứng dụng.
    3. Trên màn hình tuỳ chọn của dự án:
      1. Nhập Project Name (Tên dự án).
      2. Ghi lại giá trị của trường Giá trị nhận dạng gói. Bạn có thể dùng giá trị đó để hạn chế khoá API ở bên dưới.
      3. Đặt Interface (Giao diện) của dự án thành Storyboard (Bảng phân cảnh).
      4. Đặt Language (Ngôn ngữ) thành Swift hoặc Objective-C.
  2. 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.
  3. Chỉnh sửa Podfile và thêm các phần phụ thuộc cùng với versions của các phần phụ thuộc đó. Dưới đây là một ví dụ về phần phụ thuộc mà bạn cần cho SDK Điều hướng cho iOS: # Tham chiếu cài đặt CocoaPods số
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '14.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GoogleNavigation', '5.3.1'
    end
            
    Hãy nhớ chạy pod outdated thường xuyên để 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.
  4. Lưu Podfile.
  5. Mở cửa sổ dòng lệnh rồi chuyển đến thư mục chứa Podfile:

    cd <path-to-project>
  6. Chạy lệnh pod install. Thao tác này sẽ cài đặt các API được chỉ định trong Podfile cùng với mọi phần phụ thuộc.

    pod install
  7. Đóng Xcode, sau đó mở (nhấp đúp) vào tệp .xcworkspace của dự án để chạy Xcode. Từ thời điểm này trở đi, bạn phải dùng tệp .xcworkspace để mở dự án.

Để cập nhật API cho dự án hiện có, hãy làm theo các bước sau:

  1. Mở cửa sổ dòng lệnh rồi chuyển đến thư mục dự án có chứa Podfile.
  2. Chạy lệnh pod update. Thao tác này sẽ cập nhật tất cả các API được chỉ định trong Podfile 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 theo cách thủ công có chứa SDK Điều hướng cho iOS và SDK Maps dành cho iOS vào dự án của bạn, đồng thời đị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

Làm theo các bước sau để cài đặt XCFrameworks cho SDK Điều hướng cho iOS và SDK Bản đồ cho iOS:

  1. Tải các tệp nhị phân SDK và tệp tài nguyên sau đây xuống:
  2. Chạy Xcode rồi 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 và chọn Mẫu ứng dụng iOS.
  3. Xoá tất cả tệp tham chiếu hiện có trên Maps, Điều hướng và Địa điểm khỏi dự án.
  4. Kéo các XCFrameworks sau vào dự án của bạn trong Frameworks, Libraries and Embedded Content (Nội dung được nhúng, 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 Copy items if cần (Sao chép các mục nếu cần)):
    • GoogleMaps.xcframework
    • GoogleMapsBase.xcframework
    • GoogleMapsCore.xcframework
    • GoogleNavigation.xcframework
  5. 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.
  6. Kéo GoogleNavigation.bundle từ GoogleNavigationResources 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 vào thư mục của nhóm đích.
  7. Chọn dự án của bạn trên Project Navigator rồi chọn mục tiêu của ứng dụng.
  8. Mở thẻ Build Phases (Xây dựng giai đoạn), và trong phần Link Binary with Libraries (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
  9. Trong mục tiêu của ứng dụng, hãy chọn thẻ Capabilities, 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ề vị trí
  10. Chọn dự án của bạn thay vì một mục tiêu cụ thể rồi mở thẻ Build Settings (Cài đặt bản dựng). Trong mục Cờ trình liên kết khác, hãy thêm ‑ObjC cho cả gỡ lỗiphát hành. Nếu các chế độ cài đặt này không xuất hiện, 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ả).
  11. Mở Info.plist và thêm các cặp khoá-giá trị sau:
    • Khoá: NSLocationWhenInUseUsageDescription (Quyền riêng tư – Mô tả về việc sử dụng thông tin vị trí)
      Giá trị: "Ứng dụng này cần có quyền sử dụng thông tin vị trí của bạn để chỉ đường từng chặng."
    • Khoá: NSLocationAlwaysAndWhenInUseUsageDescription (Quyền riêng tư – Luôn sử dụng thông tin vị trí và Nội dung mô tả khi sử dụng khi sử dụng)
      Giá trị: "Ứng dụng này cần có quyền dùng thông tin vị trí của bạn để chỉ đường từng chặng."

Thêm tệp kê khai quyền riêng tư của Apple

  1. Tải gói Tệp kê khai quyền riêng tư xuống cho SDK điều hướng dành cho iOS: GoogleNavigationPrivacy.
  2. Giải nén tệp để truy cập vào GoogleNavigationPrivacy.bundle.
  3. Thêm GoogleNavigationPrivacy.bundle vào trình điều hướng của Dự án Xcode bằng một trong các phương thức này. Hãy nhớ chọn hộp "Thêm vào mục tiêu" cho mục tiêu của ứng dụng. Sau khi thêm, tệp PrivacyInfo sẽ xuất hiện trong trình điều hướng của dự án và bạn có thể kiểm tra các giá trị.
  4. Ảnh chụp màn hình thông tin quyền riêng tư của Xcode
  5. Xác minh rằng tệp kê khai quyền riêng tư đã được thêm vào bằng cách tạo bản lưu trữ của ứng dụng và tạo báo cáo về quyền riêng tư từ bản lưu trữ.

Thêm khoá API vào dự án

Các ví dụ sau cho biết 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 như sau:

  1. Thêm các câu lệnh nhập sau:
    import GoogleMaps
    import GoogleNavigation
  2. Thêm phần sau vào phương thức application(_:didFinishLaunchingWithOptions:):
    GMSServices.provideAPIKey("YOUR_API_KEY")

Objective-C

Thêm khoá API vào AppDelegate.m như sau:

  1. Thêm các câu lệnh nhập sau:
    @import GoogleMaps;
    @import GoogleNavigation;
  2. Thêm phần sau vào phương thức application:didFinishLaunchingWithOptions::
    [GMSServices provideAPIKey:@"YOUR_API_KEY"];

Thêm bản đồ

Mã này minh hoạ cách thêm một bản đồ đơn giản vào một ViewController hiện có, bao gồm một số chế độ cài đặt ban đầu cho việc điều hướng.

Trước khi bật tính năng chỉ đườ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 là 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. Bạn sẽ thấy một bản đồ ở chính giữa 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ề việc thanh toán trong tài liệu về Khả năng di chuyển. Để 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 thông tin thanh toán. Để tìm hiểu cách thêm mã giao dịch khi triển khai SDK điều hướng, hãy xem phần Liên kết hoạt động sử dụng dịch vụ của bạn với giao dịch di động.