Menyiapkan project

Ikuti panduan ini untuk mengintegrasikan Navigation SDK untuk iOS ke dalam aplikasi iOS.

Prasyarat

  • Sebelum mulai menggunakan Navigation SDK for iOS, Anda harus memiliki project dengan akun penagihan dan mengaktifkan Maps SDK for iOS. Sebaiknya buat beberapa pemilik project dan administrator penagihan agar selalu ada seseorang yang memiliki peran ini pada tim Anda. Untuk mempelajari lebih lanjut, lihat artikel Menyiapkan project Google Cloud.
  • Untuk membuat project menggunakan Navigation SDK for iOS, Anda memerlukan Xcode versi 15.0 atau yang lebih baru.
  • Versi iOS target minimum untuk SDK navigasi adalah 14.0.

Menginstal SDK

Swift Package Manager

Navigation SDK dapat diinstal melalui Swift Package Manager. Untuk menambahkan SDK, pastikan Anda telah menghapus semua dependensi Navigation SDK 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-navigation-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 GoogleNavigation 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 Navigation SDK lama yang ditambahkan 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 Navigation SDK untuk 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:
    • GoogleMaps.xcframework
    • GoogleMapsBase.xcframework
    • GoogleMapsCore.xcframework
    • GoogleNavigation.xcframework
  2. Dari direktori level teratas project Xcode Anda, hapus paket GoogleMaps.

CocoaPods

Navigation SDK untuk iOS tersedia sebagai pod CocoaPods. 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 Navigation SDK untuk iOS dan gunakan untuk menginstal API serta dependensinya:

  1. Jika Anda belum memiliki project Xcode, buatlah sekarang dan simpan ke mesin lokal Anda. Jika Anda baru mengenal pengembangan iOS:
    1. Membuat project baru.
    2. Pilih template iOS > App.
    3. Di layar opsi project:
      1. Masukkan Project Name.
      2. Catat nilai kolom Bundle identifier. Anda dapat menggunakan nilai tersebut untuk membatasi kunci API di bawah.
      3. Setel Interface project ke Storyboard.
      4. Setel Language ke Swift atau Objective-C.
  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 menyertakan dependensi yang Anda perlukan untuk Navigation SDK untuk iOS: # Referensi penginstalan Cocoapods #
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '14.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GoogleNavigation', '5.3.1'
    end
            
    Pastikan untuk menjalankan pod outdated secara rutin guna mendeteksi versi yang lebih baru. Jika perlu, upgrade ke versi terbaru.
  4. Simpan Podfile.
  5. Buka terminal dan buka direktori yang berisi Podfile:

    cd <path-to-project>
  6. Jalankan perintah pod install. Tindakan ini akan menginstal API yang ditentukan dalam Podfile, beserta dependensi apa pun.

    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 dalam Podfile ke versi terbaru.

Penginstalan manual

Panduan ini menunjukkan cara menambahkan XCFrameworks yang berisi Navigation SDK for iOS dan Maps SDK for iOS secara manual ke project Anda dan mengonfigurasi setelan build di Xcode. XCFramework adalah paket biner yang dapat Anda gunakan di banyak platform, termasuk mesin yang menggunakan chipset M1

Ikuti langkah-langkah berikut untuk menginstal XCFrameworks untuk Navigation SDK for iOS, dan Maps SDK for iOS:

  1. Download biner dan file resource SDK berikut:
  2. Luncurkan Xcode dan buka project yang ada, atau buat project baru. Jika Anda baru menggunakan iOS, buat project baru dan pilih iOS App template.
  3. Hapus semua referensi Maps, Navigasi, dan Tempat yang ada dari project.
  4. Tarik XCFrameworks berikut ke project Anda di bagian Frameworks, Libraries, and Embedded Content untuk menginstal Maps dan Navigation SDK (jika diminta, pilih Copy items if needed):
    • GoogleMaps.xcframework
    • GoogleMapsBase.xcframework
    • GoogleMapsCore.xcframework
    • GoogleNavigation.xcframework
  5. Tarik GoogleMaps.bundle dari GoogleMapsResources yang Anda download ke direktori level teratas project Xcode Anda. Saat diminta, pastikan Copy items if needed dipilih.
  6. Tarik GoogleNavigation.bundle dari GoogleNavigationResources yang Anda download ke direktori level teratas project Xcode Anda. Jika diminta, pastikan Copy items into destination group's folder dipilih.
  7. Pilih project Anda dari Project Navigator, dan pilih target aplikasi Anda.
  8. Buka tab Build Phases, dan dalam Link Binary with Libraries, tambahkan framework dan library berikut:
    • 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. Pada target aplikasi Anda, pilih tab Capabilities, aktifkan Background Modes, dan aktifkan mode berikut:
    • Audio, AirPlay, dan Picture-in-Picture
    • Pembaruan lokasi
  10. Pilih project Anda, bukan target tertentu, dan buka tab Build Settings. Di bagian Other Linker Flags, tambahkan ‑ObjC untuk debug dan release. Jika setelan ini tidak terlihat, ubah filter di panel Build Settings dari Basic ke All.
  11. Buka Info.plist dan tambahkan key-value pair berikut:
    • Kunci: NSLocationWhenInUseUsageDescription (Deskripsi Privasi - Lokasi Saat Digunakan Saat Digunakan)
      Nilai: "Aplikasi ini memerlukan izin untuk menggunakan lokasi Anda untuk navigasi belokan demi belokan".
    • Kunci: NSLocationAlwaysAndWhenInUseUsageDescription (Deskripsi Penggunaan Lokasi Selalu dan Saat Digunakan)
      Nilai: "Aplikasi ini memerlukan izin untuk menggunakan lokasi Anda untuk navigasi belokan demi belokan".

Menambahkan File Manifes Privasi Apple

  1. Download paket Manifes Privasi untuk Navigation SDK untuk iOS: GoogleNavigationPrivacy.
  2. Ekstrak file untuk mengakses GoogleNavigationPrivacy.bundle.
  3. Tambahkan GoogleNavigationPrivacy.bundle ke navigator Project Xcode menggunakan salah satu metode ini. Pastikan kotak "Tambahkan ke target" dicentang untuk target aplikasi Anda. Setelah ditambahkan, file PrivacyInfo akan muncul di navigator Project dan Anda dapat memeriksa nilainya.
  4. Screenshot Info Privasi Xcode
  5. Verifikasi bahwa manifes privasi telah ditambahkan dengan membuat arsip aplikasi dan membuat laporan privasi dari arsip tersebut.

Menambahkan kunci API ke project

Contoh berikut menunjukkan cara menambahkan kunci API ke project Anda di Xcode:

Swift

Tambahkan kunci API ke AppDelegate.swift sebagai berikut:

  1. Tambahkan pernyataan impor berikut:
    import GoogleMaps
    import GoogleNavigation
  2. Tambahkan kode berikut ke metode application(_:didFinishLaunchingWithOptions:) Anda:
    GMSServices.provideAPIKey("YOUR_API_KEY")

Objective-C

Tambahkan kunci API ke AppDelegate.m sebagai berikut:

  1. Tambahkan pernyataan impor berikut:
    @import GoogleMaps;
    @import GoogleNavigation;
  2. Tambahkan kode berikut ke metode application:didFinishLaunchingWithOptions: Anda:
    [GMSServices provideAPIKey:@"YOUR_API_KEY"];

Menambahkan peta

Kode ini menunjukkan cara menambahkan peta sederhana ke ViewController yang ada, termasuk beberapa setelan awal untuk navigasi.

Sebelum navigasi dapat diaktifkan, pengguna harus menyetujui persyaratan dan ketentuan. Untuk meminta pengguna, panggil GMSNavigationServices.showTermsAndConditionsDialogIfNeeded(), lalu periksa untuk melihat apakah persyaratan telah disetujui. Jika pengguna menolak persyaratan, mapView.isNavigationEnabled = true tidak akan memiliki pengaruh, dan mapView.navigator bernilai nol.

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

Jalankan aplikasi Anda. Anda akan melihat peta yang berpusat di Kirkland, Washington. Jika peta tidak terlihat, konfirmasikan bahwa Anda telah memberikan kunci API yang benar.

Jika Anda adalah pelanggan Layanan Mobilitas

Jika Anda adalah pelanggan Layanan Mobilitas, pelajari penagihan dalam dokumentasi Mobilitas. Untuk informasi selengkapnya tentang pencatatan transaksi, lihat Menyiapkan penagihan. Untuk mempelajari cara menambahkan ID transaksi ke penerapan Navigation SDK, lihat Mengaitkan penggunaan layanan dengan transaksi Mobilitas.