Thiết lập dự án Xcode

Sau khi bật tính năng thanh toán và tạo khoá API, bạn có thể thiết lập dự án Xcode mà bạn sử dụng để phát triển ứng dụng của mình.

Mỗi bản phát hành đều có Ghi chú phát hành.

Bước 1: Cài đặt phần mềm cần thiết

Để tạo dự án bằng cách sử dụng SDK Maps dành cho iOS, bạn phải tải xuống và cài đặt:

  • Xcode phiên bản 15.0 trở lên

Bước 2: Tạo dự án Xcode và cài đặt SDK bản đồ cho iOS

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

Bạn có thể cài đặt SDK bản đồ dành cho iOS 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 SDK Maps hiện có cho các phần phụ thuộc iOS.

Để 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:

  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-maps-sdk làm URL, nhấn Enter để kéo trong gói và nhấp vào "Add Package" (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 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).
  4. Trong cửa sổ Choose Package Products (Chọn sản phẩm gói), hãy xác minh GoogleMaps (đối với phiên bản cũ hơn 9.0.0, hãy xác minh GoogleMaps, GoogleMapsBaseGoogleMapsCore) 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 "Add Package" (Thêm gói).
  5. Để 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:

  1. 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, GoogleMapsCoreGoogleMapsM4B sau khi nâng cấp. Đừng xoá phần phụ thuộc của GoogleMaps. Để 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)
  2. 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).
  3. Để 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á SDK Maps hiện có cho các phần phụ thuộc iOS được thêm vào 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. Xoá Podfile, Podfile.resolved và Xcode workspace 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.

Để xoá SDK Maps 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 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
    • GoogleMapsBase (Chỉ dành cho các cài đặt cũ hơn phiên bản 9.0.0)
    • GoogleMapsCore (Chỉ dành cho các cài đặt cũ hơn phiên bản 9.0.0)
    • GoogleMapsM4B (Chỉ dành cho các cài đặt cũ hơn phiên bản 9.0.0)
  2. Trên thư mục cấp cao nhất của dự án Xcode, hãy xoá gói GoogleMaps.

CocoaPods

SDK bản đồ 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 một Podfile cho SDK Maps dành cho iOS và sử dụng SDK này để cài đặt API cũng như 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 vào máy cục bộ của bạn. Nếu bạn mới phát triển trên 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 dự án:
      1. Nhập 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ể sử dụng giá trị đó để hạn chế khoá API ở bên dưới.
      3. Đặt Interface (Giao diện) dự án thành Storyboard (Bảng phân cảnh).
      4. Đặt Language (Ngôn ngữ) thành Swift hoặc Target-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 chúng. Dưới đây là ví dụ về phần phụ thuộc mà bạn cần cho SDK bản đồ dành cho iOS:
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '15.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GoogleMaps', '8.4.0'
    end
    
    Hãy nhớ thường xuyên chạy pod outdated để phát hiện khi có một phiên bản mới hơn nhằm đảm bảo bạn luôn sử dụng phiên bản mới nhất. 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 có thể có.

    pod install
  7. Đó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:

  1. Mở cửa sổ dòng lệnh rồi chuyển đến thư mục dự án chứa Podfile.
  2. Chạy lệnh pod update. Thao tác này sẽ cập nhật tất cả API được chỉ định trong Podfile lên phiên bản mới nhất.

Cài đặt thủ công

Hướng dẫn này cho biết cách thêm XCFrameworks chứa SDK bản đồ 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à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 Apple silicon.
  1. Tải các tệp nhị phân SDK và tệp tài nguyên sau đây xuống:
  2. Giải nén các tệp để truy cập vào XCFrameworks và các tài nguyên.
  3. 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:
    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 dự án:
      1. Nhập 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ể sử dụng giá trị đó để hạn chế khoá API ở bên dưới.
      3. Đặt Interface (Giao diện) dự án thành Storyboard (Bảng phân cảnh).
      4. Đặt Language (Ngôn ngữ) thành Swift hoặc Target-C.
  4. Mở thẻ Chung. 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). Hãy nhớ chọn Do Not embed (Không nhúng) cho từng XCFramework:
    • GoogleMaps.xcframework
    • GoogleMapsBase.xcframework
    • GoogleMapsCore.xcframework
  5. Sao chép GoogleMaps.bundle từ GoogleMapsResources mà bạn đã tải xuống thư mục cấp cao nhất của dự án Xcode. Hãy nhớ chọn Sao chép các mục vào thư mục của nhóm đích khi được nhắc.
  6. Chọn dự án của bạn trên Project Navigator và chọn mục tiêu cho ứng dụng.
  7. Mở thẻ Build giais (Tạo giai đoạn) cho mục tiêu của ứng dụng. 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
    • Contacts.framework
    • CoreData.framework
    • CoreGraphics.framework
    • CoreImage.framework
    • CoreLocation.framework
    • CoreTelephony.framework
    • CoreText.framework
    • GLKit.framework
    • ImageIO.framework
    • libc++.tbd
    • libz.tbd
    • Metal.framework
    • OpenGLES.framework (Chỉ khi bạn đang sử dụng OpenGL)
    • QuartzCore.framework
    • SystemConfiguration.framework
    • UIKit.framework
  8. 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 Liên kết – Chung -> Cờ trình liên kết khác, hãy thêm -ObjC vào phần "Gỡ lỗi" và "Bản phá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ả).

  9. Để cài đặt SDK Địa điểm dành cho XCFramework iOS, hãy xem phần Bắt đầu với SDK Địa điểm dành cho iOS.

Bước 3: 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 4: Thêm khoá API vào dự án

Trong phần Lấy khoá API, bạn đã tạo một khoá API cho ứng dụng của mình. Bây giờ, hãy thêm khoá đó vào dự án Xcode của bạn.

Trong các ví dụ sau, hãy thay thế YOUR_API_KEY bằng khoá API.

để biết thêm thông tin.

Swift

Thêm khoá API vào AppDelegate.swift của bạn như sau:

  1. Thêm câu lệnh nhập sau:
    import GoogleMaps
  2. Thêm đoạn mã sau vào phương thức application(_:didFinishLaunchingWithOptions:) bằng cách sử dụng khoá API:
    GMSServices.provideAPIKey("YOUR_API_KEY")
  3. Nếu bạn cũng đang sử dụng API Địa điểm, hãy thêm lại khoá của bạn như minh hoạ tại đây:
    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

Objective-C

Thêm khoá API vào AppDelegate.m của bạn như sau:

  1. Thêm câu lệnh nhập sau:
    @import GoogleMaps;
  2. Thêm đoạn mã sau vào phương thức application:didFinishLaunchingWithOptions: bằng cách sử dụng khoá API:
    [GMSServices provideAPIKey:@"YOUR_API_KEY"];
  3. Nếu bạn cũng đang sử dụng API Địa điểm, hãy thêm lại khoá của bạn như minh hoạ tại đây:
    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];

Bước 5: Thêm bản đồ

Swift

/*
 *   Copyright 2020 Google Inc. All rights reserved.
 *
 *
 *   Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
 *   file except in compliance with the License. You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software distributed under
 *   the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
 *   ANY KIND, either express or implied. See the License for the specific language governing
 *   permissions and limitations under the License.
 */

import UIKit
import GoogleMaps

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        // Create a GMSCameraPosition that tells the map to display the
        // coordinate -33.86,151.20 at zoom level 6.

        let options = GMSMapViewOptions()
        options.camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 6.0)
        options.frame = self.view.bounds

        let mapView = GMSMapView(options: options)
        self.view.addSubview(mapView)

        // Creates a marker in the center of the map.
        let marker = GMSMarker()
        marker.position = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.20)
        marker.title = "Sydney"
        marker.snippet = "Australia"
        marker.map = mapView
  }
}

Objective-C

/*
*   Copyright 2020 Google Inc. All rights reserved.
*
*
*   Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
*   file except in compliance with the License. You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
*   Unless required by applicable law or agreed to in writing, software distributed under
*   the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
*   ANY KIND, either express or implied. See the License for the specific language governing
*   permissions and limitations under the License.
*/

#import "ViewController.h"
#import <GoogleMaps/GoogleMaps.h>

@interface ViewController()

@end

@implementation ViewController

-   (void)viewDidLoad {
  [super viewDidLoad];
  // Do any additional setup after loading the view.
  // Create a GMSCameraPosition that tells the map to display the
  // coordinate -33.86,151.20 at zoom level 6.
  GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
  options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:6];
  options.frame = self.view.bounds;
  GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

  [self.view addSubview:mapView];

  // Creates a marker in the center of the map.
  GMSMarker *marker = [[GMSMarker alloc] init];
  marker.position = CLLocationCoordinate2DMake(-33.86, 151.20);
  marker.title = @"Sydney";
  marker.snippet = @"Australia";
  marker.map = mapView;
}

@end

Bước 5 (Không bắt buộc): Khai báo giao thức URL mà API sử dụng

Kể từ iOS 9 và Xcode 7, ứng dụng có thể khai báo các giao thức URL mà chúng dự định mở bằng cách chỉ định các giao thức đó trong tệp Info.plist của ứng dụng. SDK Maps cho iOS sẽ mở ứng dụng Google Maps dành cho thiết bị di động khi người dùng nhấp vào biểu trưng của Google trên bản đồ và do đó, ứng dụng của bạn có thể khai báo các lược đồ URL có liên quan.

Để khai báo các giao thức URL mà SDK Maps dành cho iOS sử dụng, hãy thêm các dòng sau vào Info.plist của bạn:

LSApplicationQueriesSchemes googlechromes comgooglemaps

Ảnh chụp màn hình sau đây cho thấy cấu hình trong giao diện người dùng của Xcode:

Cấu hình LSApplicationReportsSchemes trong Xcode

Nếu không có nội dung khai báo ở trên, người dùng có thể xảy ra các lỗi sau đây khi nhấn vào biểu trưng của Google trên bản đồ:

  • -canOpenURL: không thành công đối với URL: "comgooglemaps://" – lỗi: "Ứng dụng này không được phép truy vấn lược đồ comgooglemaps"
  • -canOpenURL: không thành công đối với URL: "googlechromes://" – lỗi: "Ứng dụng này không được phép truy vấn lược đồ googlechromes"

Để loại bỏ những lỗi này, hãy thêm nội dung khai báo vào Info.plist.

Bước tiếp theo

Bây giờ, bạn đã có khoá API và dự án Xcode, nên bạn có thể tạo và chạy ứng dụng. SDK điều hướng dành cho iOS cung cấp nhiều hướng dẫn và ứng dụng mẫu có thể giúp bạn bắt đầu. Để biết thêm thông tin, hãy xem: