Setelah mengaktifkan penagihan dan membuat kunci API, Anda siap menyiapkan Project Xcode yang Anda gunakan untuk mengembangkan aplikasi.
Catatan rilis tersedia untuk setiap data.
Langkah 1: Instal software yang diperlukan
Untuk membuat project menggunakan Places SDK for iOS, Anda memerlukan:
- Xcode versi 15.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 memiliki menghapus dependensi Places SDK for iOS yang sudah ada.
Untuk menambahkan SDK ke project baru atau yang sudah ada, ikuti langkah-langkah berikut:
-
Buka
project
atauworkspace
Xcode, lalu buka File > Menambahkan Dependensi Paket. - Masukkan https://github.com/googlemaps/ios-places-sdk sebagai URL, tekan Enter untuk menarik paket, dan klik "{i>Add Package<i}".
-
Untuk menginstal
version
tertentu, setel kolom Dependency Rule ke salah satu opsi berbasis versi. Untuk proyek baru, sebaiknya tentukan versi terbaru dan menggunakan "Versi Persis" sebelumnya. Setelah selesai, klik "Add Package". -
Dari jendela Choose Package Products, pastikan
GooglePlaces
akan ditambahkan ke targetmain
yang Anda tetapkan. Setelah selesai, klik "Add Package". -
Untuk memverifikasi penginstalan, buka panel
General
target Anda. Di Frameworks, Libraries, and Embedded Content, Anda akan melihat paket yang diinstal. Anda juga dapat melihat "{i>Package Dependencies<i}" bagian "Navigator Proyek" untuk memverifikasi paket dan versinya.
Untuk mengupdate package
untuk project yang sudah ada, ikuti langkah-langkah berikut:
Jika mengupgrade dari versi yang lebih lama dari 9.0.0, Anda harus menghapus dependensi berikut:
GoogleMapsBase
,GoogleMapsCore
, danGoogleMapsM4B
setelah mengupgrade. Jangan hapus dependensi untukGoogleMaps
. Untuk informasi selengkapnya, lihat Catatan Rilis Versi 9.0.0.Dari setelan konfigurasi proyek Xcode Anda, temukan Frameworks, Libraries, dan Konten yang Disematkan. Gunakan tanda minus(-) untuk menghapus framework berikut:
GoogleMapsBase
(Hanya untuk upgrade dari versi sebelum 9.0.0)GoogleMapsCore
(Hanya untuk upgrade dari versi sebelum 9.0.0)GoogleMapsM4B
(Hanya untuk upgrade dari versi sebelum 9.0.0)
- Dari Xcode, buka "File > Paket > Update Ke Versi Paket Terbaru".
- Untuk memverifikasi penginstalan, buka bagian Package Dependencies Project Navigator untuk memverifikasi paket dan versinya.
Untuk menghapus dependensi Places SDK for iOS yang ditambahkan menggunakan
CocoaPods
, ikuti langkah berikut:
- Tutup ruang kerja Xcode Anda. Buka terminal dan jalankan perintah berikut:
sudo gem install cocoapods-deintegrate cocoapods-clean pod deintegrate pod cache clean --all
-
Hapus
Podfile
,Podfile.resolved
, dan Xcodeworkspace
jika Anda tidak menggunakannya untuk hal apa pun selain CocoaPods.
-
Dari setelan konfigurasi proyek Xcode Anda, temukan Frameworks, Libraries,
dan Konten yang Disematkan. Gunakan tanda minus(-) untuk menghapus framework berikut:
GooglePlaces.xcframework
-
Dari direktori level teratas project Xcode Anda, hapus
GooglePlaces
paket.
CocoaPods
Places SDK for iOS tersedia sebagai CocoaPod pod, GooglePlaces, yang berisi semua kemampuan tempat.
CocoaPods merupakan pengelola dependensi open source untuk proyek Swift dan Objective-C Cocoa. Jika Anda belum memiliki {i>tool<i} 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
menginstal SDK dan dependensinya:
- Jika Anda belum memiliki project Xcode, buatlah sekarang dan simpan ke komputer lokal Anda. Jika Anda masih baru dalam pengembangan iOS, buat project baru dan pilih iOS App template.
- Buat file bernama
Podfile
dalam direktori project Anda. File ini mendefinisikan dependensi project Anda. - Edit
Podfile
dan tambahkan dependensi Anda beserta versinya. Berikut adalah yang menentukan nama target aplikasi Anda, dan nama podGooglePlaces
: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 menjalankanpod outdated
secara rutin guna mendeteksi jika ada versi yang lebih baru versi lama untuk memastikan Anda selalu mendapatkan info terbaru. - Simpan
Podfile
. Buka terminal dan pilih direktori yang berisi
Podfile
:cd <path-to-project>
Jalankan perintah
pod install
. Ini akan menginstal API yang ditentukan diPodfile
, beserta dependensi yang mungkin dimiliki.pod install
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 project yang sudah ada, ikuti langkah-langkah berikut:
- Buka terminal, lalu buka direktori project yang berisi
Podfile
. - Jalankan perintah
pod update
. Tindakan ini akan mengupdate semua API yang ditentukan dalamPodfile
ke versi terbaru.
Penginstalan manual
Panduan ini menunjukkan cara menambahkan XCFramework yang berisi Places SDK for iOS secara manual ke project dan mengkonfigurasi setelan build di Xcode. XCFramework adalah paket biner yang dapat Anda gunakan di berbagai platform, termasuk komputer menggunakan Apple silicon.
- Download file resource dan biner SDK berikut:
- Ekstrak file tersebut untuk mengakses XCFramework dan resource.
- Luncurkan Xcode dan buka project yang ada, atau buat project baru. Jika Anda baru dalam hal pengembangan iOS, buat proyek baru dan pilih iOS App template.
- Buang semua bundel Maps rilis sebelumnya dari proyek Anda.
-
Buka tab General. Tarik XCFramework berikut ke project Anda
di bagian Frameworks, Libraries, and Embedded Content. Pastikan
untuk memilih Do Not Embed:
GooglePlaces.xcframework
Tarik -
Salin
GooglePlaces.bundle
dari GooglePlacesResources yang Anda unduh ke direktori level atas proyek Xcode Anda. Pastikan untuk memilih Salin item ke folder grup tujuan saat diminta. - Pilih proyek Anda dari Navigator Proyek, dan pilih target aplikasi Anda.
-
Buka tab Build Phases. Dalam Link Binary with
Library, tambahkan framework dan library berikut:
CoreGraphics.framework
CoreLocation.framework
libc++.tbd
libz.tbd
QuartzCore.framework
UIKit.framework
-
Pilih proyek Anda, bukan target tertentu, dan buka Tab Build Settings. Pada kotak Linking - General -> Penaut Lainnya Tanda, tambahkan
-ObjC
ke "Debug" dan "{i>Release<i}". Jika setelan tidak terlihat, ubah filter di panel Build Settings dari Dasar ke Semua.
GooglePlaces.bundle
dari GooglePlacesResources yang Anda download
GooglePlacesSwift
Anda dapat menginstal GooglePlacesSwift (Pratinjau) SDK menggunakan Swift Package Manager, CocoaPods, dan secara manual. Tujuan langkah-langkah instalasi di semua proses mencerminkan langkah-langkah yang diuraikan untuk Places SDK for iOS, dengan perbedaan berikut:
- Xcode 15.3 diperlukan.
- Jika menggunakan Swift Package Manager, Anda harus mengganti instance
GooglePlaces
denganGooglePlacesSwift
. Hal ini termasuk pernyataan impor.- Ganti instance https://github.com/googlemaps/ios-places-sdk dengan https://github.com/googlemaps/ios-places-swift-sdk.
- Update nomor versi ke 0.1.0.
- Jika menginstal secara manual, download file resource dan biner SDK berikut:
Sebagai contoh, jika menggunakan CocoaPods, Podfile
yang diedit akan terlihat seperti ini:
source 'https://github.com/CocoaPods/Specs.git' platform :ios, '15.3' target 'YOUR_APPLICATION_TARGET_NAME_HERE' do pod 'GooglePlacesSwift', '0.1.0' end
Langkah 3: Periksa file Manifes Privasi Apple
Apple mewajibkan detail privasi aplikasi untuk aplikasi di App Store. Kunjungi halaman Detail Privasi Apple App Store untuk pembaruan dan informasi selengkapnya.
File Manifes Privasi Apple disertakan dalam paket resource untuk SDK. Untuk memverifikasi bahwa File Manifes Privasi telah disertakan, dan untuk memeriksa kontennya, buat arsip aplikasi dan buat laporan privasi dari arsip.
Langkah 4: 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 kode berikut ke
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 kode berikut ke
application:didFinishLaunchingWithOptions:
Anda , dengan mengganti YOUR_API_KEY dengan kunci API Anda:[GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
GooglePlacesSwift
Tambahkan kunci API ke AppDelegate.swift
sebagai berikut:
- Tambahkan pernyataan impor berikut:
import GooglePlacesSwift
- Tambahkan kode berikut ke
application(_:didFinishLaunchingWithOptions:)
Anda , dengan mengganti YOUR_API_KEY dengan kunci API Anda:PlacesClient.shared.provideAPIKey("YOUR_API_KEY")
Langkah 5: Mulai menulis kode
Contoh kode berikut menunjukkan cara 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
GooglePlacesSwift
struct ContentView: View { @State var place: Place? var body: some View { Button("Get Place") { // A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" let fetchPlaceRequest = FetchPlaceRequest( placeID: placeID, placeProperties: [.displayName, .formattedAddress] ) Task { switch await placesClient.fetchPlace(with: fetchPlaceRequest) { case .success(let place): self.place = place case .failure(let placesError): // Handle error } Text(swiftPlace?.displayName ?? "No place yet") .padding() Text(swiftPlace?.formattedAddress ?? "No place yet") .padding() } }
Langkah berikutnya
Setelah project dikonfigurasi, Anda dapat menjelajahi aplikasi contoh.