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à mình dùng để phát triển ứng dụng.

ghi chú phát hành cho mỗi bản phát hành.

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

Để tạo một dự án bằng SDK Địa điểm dành cho iOS, bạn cần:

  • Xcode phiên bản 14.0 trở lên
  • CocoaPods
  • Bước 2: Tạo dự án Xcode và cài đặt SDK Địa điểm dành cho iOS

    Để cài đặt API trong một dự án mới, hãy làm theo các bước sau:

    Sử dụng CocoaPods

    SDK Địa điểm dành cho iOS có sẵn dưới dạng một nhóm CocoaPod, GooglePlaces, chứa tất cả chức năng về địa điểm.

    CocoaPods là trình quản lý phần phụ thuộc nguồn mở cho các dự án Swift và Objective-C Cocoa. 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 Địa điểm dành cho iOS và sử dụng SDK này để cài đặt SDK cũng như các phần phụ thuộc của SDK đó:

    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 mình. Nếu bạn mới phát triển ứng dụng iOS, hãy tạo một dự án mới và chọn Mẫu ứng dụng iOS.
    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à ví dụ chỉ định tên mục tiêu của ứng dụng và tên của nhóm GooglePlaces:
      source 'https://github.com/CocoaPods/Specs.git'
      
      platform :ios, '14.0'
      
      target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
        pod 'GooglePlaces', '8.3.0'
      end
      
      Hãy nhớ thường xuyên chạy pod outdated để phát hiện khi có phiên bản mới hơn nhằm đảm bảo bạn luôn cập nhật được thông tin 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ó trong các API đó.

      pod install
    7. Đóng Xcode rồi 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 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.

    Tự cài đặt

    Hướng dẫn này cho biết cách thêm thủ công XCFramework có chứa SDK địa điểm dành cho iOS 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 Apple silicon.

    1. Tải các tệp nhị phân và tài nguyên SDK sau đây xuống:
    2. Giải nén các tệp nén để truy cập vào XCFramework và các tài nguyên.
    3. 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 phát triển ứng dụng iOS, hãy tạo một dự án mới và chọn Mẫu ứng dụng iOS.
    4. Xoá mọi gói Maps trong các bản phát hành trước khỏi dự án của bạn.
    5. Kéo XCFramework sau đây vào dự án của bạn trong phần Frameworks, Libraries và Embedded Content (Khung, Thư viện và Nội dung được nhúng). Đừng quên chọn Không nhúng:
      • GooglePlaces.xcframework
    6. Kéo GooglePlaces.bundle từ GooglePlacesResources mà bạn đã tải xuống vào thư mục cấp cao nhất của dự án Xcode của bạn. 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 (Trình điều hướng dự án) rồi chọn mục tiêu của ứng dụng.
    8. Mở thẻ Build Giai đoạn và trong mục Link Binary with Libraries (Liên kết tệp nhị phân với thư viện), rồi thêm các khung và thư viện sau:
      • CoreGraphics.framework
      • CoreLocation.framework
      • libc++.tbd
      • libz.tbd
      • QuartzCore.framework
      • UIKit.framework
    9. 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).

    10. Trong mục Cờ trình liên kết khác, hãy thêm -ObjC. Nếu những 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ả).

    Bước 3: Thêm khoá API vào ứng dụng

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

    Swift

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

    • Thêm câu lệnh nhập sau:
      import GooglePlaces
    • Thêm đoạn mã sau vào phương thức application(_:didFinishLaunchingWithOptions:), thay thế YOUR_API_KEY bằng khoá API:
      GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

    Objective-C

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

    • Thêm câu lệnh nhập sau:
      @import GooglePlaces;
    • Thêm đoạn mã sau vào phương thức application:didFinishLaunchingWithOptions:, thay thế YOUR_API_KEY bằng khoá API:
      [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];

    Bước 4: Bắt đầu viết mã

    Các mã mẫu sau đây minh hoạ cách lấy địa điểm hiện tại.

    Swift

    import GooglePlaces
    import UIKit
    
    class GetStartedViewController : UIViewController {
    
      // Add a pair of UILabels in Interface Builder, and connect the outlets to these variables.
      @IBOutlet private var nameLabel: UILabel!
      @IBOutlet private var addressLabel: UILabel!
    
      private var placesClient: GMSPlacesClient!
    
      override func viewDidLoad() {
        super.viewDidLoad()
        placesClient = GMSPlacesClient.shared()
      }
    
      // Add a UIButton in Interface Builder, and connect the action to this function.
      @IBAction func getCurrentPlace(_ sender: UIButton) {
        let placeFields: GMSPlaceField = [.name, .formattedAddress]
        placesClient.findPlaceLikelihoodsFromCurrentLocation(withPlaceFields: placeFields) { [weak self] (placeLikelihoods, error) in
          guard let strongSelf = self else {
            return
          }
    
          guard error == nil else {
            print("Current place error: \(error?.localizedDescription ?? "")")
            return
          }
    
          guard let place = placeLikelihoods?.first?.place else {
            strongSelf.nameLabel.text = "No current place"
            strongSelf.addressLabel.text = ""
            return
          }
    
          strongSelf.nameLabel.text = place.name
          strongSelf.addressLabel.text = place.formattedAddress
        }
      }
    }
          

    Objective-C

    #import "GetStartedViewController.h"
    @import GooglePlaces;
    
    @interface GetStartedViewController ()
    // Add a pair of UILabels in Interface Builder and connect the outlets to these variables
    @property (weak, nonatomic) IBOutlet UILabel *nameLabel;
    @property (weak, nonatomic) IBOutlet UILabel *addressLabel;
    @end
    
    @implementation GetStartedViewController {
      GMSPlacesClient *_placesClient;
    }
    
    - (void)viewDidLoad {
      [super viewDidLoad];
      _placesClient = [GMSPlacesClient sharedClient];
    }
    
    // Add a pair of UILabels in Interface Builder and connect the outlets to these variables.
    - (IBAction)getCurrentPlace:(UIButton *)sender {
      GMSPlaceField placeFields = (GMSPlaceFieldName | GMSPlaceFieldFormattedAddress);
    
      __weak typeof(self) weakSelf = self;
      [_placesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:placeFields callback:^(NSArray<GMSPlaceLikelihood *> * _Nullable likelihoods, NSError * _Nullable error) {
        __typeof__(self) strongSelf = weakSelf;
        if (strongSelf == nil) {
          return;
        }
    
        if (error != nil) {
          NSLog(@"An error occurred %@", [error localizedDescription]);
          return;
        }
    
        GMSPlace *place = likelihoods.firstObject.place;
        if (place == nil) {
          strongSelf.nameLabel.text = @"No current place";
          strongSelf.addressLabel.text = @"";
          return;
        }
    
        strongSelf.nameLabel.text = place.name;
        strongSelf.addressLabel.text = place.formattedAddress;
      }];
    }
    
    @end
          

    Các bước tiếp theo

    Sau khi định cấu hình dự án, bạn có thể khám phá các ứng dụng mẫu. Bạn cần cài đặt CocoaPods phiên bản 1.6.1.