Menyiapkan project Xcode

Setelah mengaktifkan penagihan dan membuat kunci API, Anda siap menyiapkan project Xcode yang digunakan untuk mengembangkan aplikasi Anda.

Catatan rilis tersedia untuk setiap rilis.

Langkah 1: Instal software yang diperlukan

Untuk membuat project menggunakan Places SDK for iOS, Anda memerlukan:

  • Xcode versi 14.0 atau yang lebih baru

Langkah 2: Buat project Xcode dan instal Places SDK for iOS

Swift Package Manager

Places SDK for iOS dapat diinstal melalui Swift Package Manager. Untuk menambahkan SDK, pastikan Anda telah menghapus dependensi Places SDK for iOS yang ada.

Untuk menambahkan SDK ke project baru atau yang sudah ada, ikuti langkah-langkah berikut:

  1. Buka Xcode project atau workspace, lalu buka File > Add Package Dependencies.
  2. Masukkan https://github.com/googlemaps/ios-places-sdk sebagai URL, tekan Enter untuk menarik paket, lalu klik "Tambahkan Paket".
  3. Untuk menginstal version tertentu, tetapkan kolom Aturan Dependensi ke salah satu opsi berbasis versi. Untuk project baru, sebaiknya tentukan versi terbaru dan gunakan opsi "Versi Persis". Setelah selesai, klik "Add Package".
  4. Dari jendela Choose Package Products, pastikan GooglePlaces akan ditambahkan ke target main yang ditetapkan. Setelah selesai, klik "Add Package".
  5. Untuk memverifikasi penginstalan, buka panel General target Anda. Di bagian Framework, Library, dan Konten Tersemat, Anda akan melihat paket yang diinstal. Anda juga dapat melihat bagian "Dependensi Paket" pada "Project Navigator" untuk memverifikasi paket dan versinya.

Untuk mengupdate package bagi project yang sudah ada, ikuti langkah-langkah berikut:

  1. Dari Xcode, buka "File > Packages > Update To Recent Package Versions".
  2. Untuk memverifikasi penginstalan, buka bagian Package Dependencies pada Project Navigator untuk memverifikasi paket dan versinya.

Untuk menghapus dependensi Places SDK for iOS yang ada menggunakan CocoaPods, ikuti langkah-langkah berikut:

  1. Tutup ruang kerja Xcode Anda. Buka terminal dan jalankan perintah berikut:
    sudo gem install cocoapods-deintegrate cocoapods-clean 
    pod deintegrate 
    pod cache clean --all
  2. Hapus Podfile, Podfile.resolved, dan Xcode workspace jika Anda tidak menggunakannya untuk hal lain selain CocoaPods.

Untuk menghapus Places SDK for iOS yang diinstal secara manual, ikuti langkah-langkah berikut:

  1. Dari setelan konfigurasi project Xcode, temukan Frameworks, Library, dan Embedded Content. Gunakan tanda minus(-) untuk menghapus framework berikut:
    • GooglePlaces.xcframework
  2. Dari direktori level teratas project Xcode Anda, hapus paket GooglePlaces.

Cocoapods

Places SDK for iOS tersedia sebagai pod CocoaPod, GooglePlaces, yang berisi semua fungsi tempat.

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 Places SDK for iOS dan gunakan untuk menginstal SDK serta dependensinya:

  1. Jika Anda belum memiliki project Xcode, buatlah sekarang dan simpan ke komputer lokal Anda. Jika Anda masih awam dalam pengembangan iOS, buat project baru lalu pilih iOS App template.
  2. Buat file bernama Podfile dalam direktori project Anda. File ini mendefinisikan dependensi project Anda.
  3. Edit Podfile dan tambahkan dependensi Anda beserta versions. Berikut adalah contoh yang menentukan nama target aplikasi Anda dan nama pod GooglePlaces:
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '15.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GooglePlaces', '8.3.0'
    end
    
    Pastikan untuk menjalankan pod outdated secara rutin guna mendeteksi saat ada versi yang lebih baru guna memastikan bahwa Anda selalu mendapatkan versi terbaru.
  4. Simpan Podfile.
  5. Buka terminal dan pilih direktori yang berisi Podfile:

    cd <path-to-project>
  6. Jalankan perintah pod install. Ini akan menginstal API yang ditentukan di Podfile, beserta dependensi yang mungkin dimiliki.

    pod install
  7. 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 untuk project yang sudah ada, ikuti langkah-langkah berikut:

  1. Buka terminal dan buka direktori project yang berisi Podfile.
  2. Jalankan perintah pod update. Tindakan ini akan mengupdate semua API yang ditentukan di Podfile ke versi terbaru.

Penginstalan manual

Panduan ini menunjukkan cara menambahkan XCFramework yang berisi Places SDK for iOS secara manual ke project Anda dan mengonfigurasi setelan build di Xcode. XCFramework adalah paket biner yang dapat Anda gunakan di beberapa platform, termasuk mesin yang menggunakan Apple silicon.

  1. Download file biner dan resource SDK berikut:
  2. Ekstrak file zip untuk mengakses XCFramework dan resource.
  3. Luncurkan Xcode dan buka project yang ada, atau buat project baru. Jika Anda masih awam dalam pengembangan iOS, buat project baru lalu pilih iOS App template.
  4. Buang semua bundel Maps rilis sebelumnya dari proyek Anda.
  5. Buka tab General. Tarik XCFramework berikut ke dalam project Anda di bagian Frameworks, Libraries, dan Embedded Content. Pastikan untuk memilih Do Not Embed:
    • GooglePlaces.xcframework
  6. Tarik GooglePlaces.bundle dari GooglePlacesResources yang Anda download
  7. Salin GooglePlaces.bundle dari GooglePlacesResources yang Anda download ke direktori level teratas project Xcode. Pastikan untuk memilih Copy items into destination group's folder saat diminta.
  8. Pilih project Anda dari Project Navigator, dan pilih target aplikasi Anda.
  9. Buka tab Build Phases. Dalam Link Binary with Libraries, tambahkan framework dan library berikut:
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  10. Pilih project Anda, bukan target tertentu, dan buka tab Build Settings. Di bagian Linking - General -> Other Linker Flags, tambahkan -ObjC ke "Debug" dan "Release". Jika setelan ini tidak terlihat, ubah filter di panel Build Settings dari Basic ke All.

Langkah 3: Tambahkan kunci API ke aplikasi Anda

Pada contoh berikut, ganti YOUR_API_KEY dengan kunci API Anda.

Swift

Tambahkan kunci API ke AppDelegate.swift sebagai berikut:

  • Tambahkan pernyataan impor berikut:
    import GooglePlaces
  • Tambahkan hal berikut ke metode application(_:didFinishLaunchingWithOptions:) Anda, dengan mengganti YOUR_API_KEY dengan kunci API Anda:
    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

Objective-C

Tambahkan kunci API ke AppDelegate.m sebagai berikut:

  • Tambahkan pernyataan impor berikut:
    @import GooglePlaces;
  • Tambahkan hal berikut ke metode application:didFinishLaunchingWithOptions: Anda, dengan mengganti YOUR_API_KEY dengan kunci API Anda:
    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];

Langkah 4: Mulai tulis kode

Contoh kode berikut menunjukkan cara untuk mendapatkan tempat saat ini.

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
      

Langkah berikutnya

Setelah project dikonfigurasi, Anda dapat mempelajari aplikasi contoh. Anda harus menginstal Cocoapods v1.6.1.