ตั้งค่าโปรเจ็กต์

ทำตามคำแนะนำนี้เพื่อผสานรวม Navigation SDK สำหรับ iOS กับแอป iOS

สิ่งที่ต้องดำเนินการก่อน

  • ก่อนที่จะเริ่มใช้ Navigation SDK สำหรับ iOS คุณต้องมีโปรเจ็กต์ที่มีบัญชีสำหรับการเรียกเก็บเงินและเปิดใช้ Maps SDK สำหรับ iOS เราขอแนะนำให้สร้างเจ้าของโปรเจ็กต์และผู้ดูแลระบบการเรียกเก็บเงินหลายคน เพื่อให้มีผู้ที่มีบทบาทเหล่านี้ที่พร้อมให้กับทีมของคุณเสมอ ดูข้อมูลเพิ่มเติมได้ที่ตั้งค่าโปรเจ็กต์ Google Cloud
  • หากต้องการสร้างโปรเจ็กต์โดยใช้ Navigation SDK สำหรับ iOS คุณต้องมี Xcode เวอร์ชัน 15.0 ขึ้นไป
  • เวอร์ชัน iOS เป้าหมายขั้นต่ำสำหรับ Navigation SDK คือ 15.0

ขั้นตอนที่ 1: ติดตั้ง SDK

เครื่องมือจัดการแพ็กเกจ Swift

คุณสามารถติดตั้ง Navigation SDK ผ่าน Swift Package Manager หากต้องการเพิ่ม SDK โปรดตรวจสอบว่าคุณได้นำทรัพยากร Dependency ของ Navigation SDK ที่มีอยู่ออก

หากต้องการเพิ่ม SDK ลงในโปรเจ็กต์ใหม่หรือโปรเจ็กต์ที่มีอยู่ ให้ทำตามขั้นตอนต่อไปนี้

  1. เปิด Xcode project หรือ workspace แล้วไปที่ไฟล์ > เพิ่มการอ้างอิงแพ็กเกจ
  2. ป้อน https://github.com/googlemaps/ios-navigation-sdk เป็น URL กด Enter เพื่อดึงข้อมูลแพ็กเกจ แล้วคลิก "เพิ่มแพ็กเกจ"
  3. หากต้องการติดตั้ง version ที่เจาะจง ให้ตั้งค่าช่องกฎการขึ้นต่อกันเป็นตัวเลือกตามเวอร์ชันรายการใดรายการหนึ่ง สำหรับโปรเจ็กต์ใหม่ เราขอแนะนำให้ระบุเวอร์ชันล่าสุดและใช้ตัวเลือก "เวอร์ชันแบบตรงทั้งหมด" เมื่อเสร็จแล้ว ให้คลิก "เพิ่มแพ็กเกจ"
  4. จากหน้าต่างเลือกผลิตภัณฑ์แพ็กเกจ ให้ยืนยันว่าจะเพิ่ม GoogleNavigation ไปยังเป้าหมาย main ที่คุณกำหนด เมื่อเสร็จแล้ว ให้คลิก "เพิ่มแพ็กเกจ"
  5. หากต้องการยืนยันการติดตั้ง ให้ไปที่แผง General ของเป้าหมาย คุณควรเห็นแพ็กเกจที่ติดตั้งไว้ในเฟรมเวิร์ก ไลบรารี และเนื้อหาที่ฝัง นอกจากนี้ คุณยังสามารถดูส่วน "การอ้างอิงของแพ็กเกจ" ของ "Project Navigator" เพื่อตรวจสอบแพ็กเกจและเวอร์ชันของแพ็กเกจได้

หากต้องการอัปเดต package สำหรับโปรเจ็กต์ที่มีอยู่ ให้ทำตามขั้นตอนต่อไปนี้

  1. หากคุณอัปเกรดจากเวอร์ชันก่อน 9.0.0 คุณต้องนำทรัพยากร Dependency ต่อไปนี้ออก: GoogleMapsBase, GoogleMapsCore และ GoogleMapsM4B หลังจากอัปเกรด อย่านำการอ้างอิงสำหรับ GoogleMaps ออก ดูข้อมูลเพิ่มเติมได้ในบันทึกประจำรุ่นของเวอร์ชัน 9.0.0

    จากการตั้งค่าการกำหนดค่าโปรเจ็กต์ Xcode ให้ค้นหา Frameworks, Libraries และเนื้อหาแบบฝัง ใช้เครื่องหมายลบ(-)เพื่อนำเฟรมเวิร์กต่อไปนี้ออก

    • GoogleMapsBase (สำหรับการอัปเกรดจากเวอร์ชันก่อน 9.0.0 เท่านั้น)
    • GoogleMapsCore (สำหรับการอัปเกรดจากเวอร์ชันก่อน 9.0.0 เท่านั้น)
    • GoogleMapsM4B (สำหรับการอัปเกรดจากเวอร์ชันก่อน 9.0.0 เท่านั้น)
  2. จาก Xcode ให้ไปที่ "ไฟล์ > แพ็กเกจ > อัปเดตเป็นเวอร์ชันล่าสุดของแพ็กเกจ"
  3. หากต้องการยืนยันการติดตั้ง ให้ไปที่ส่วนการอ้างอิงแพ็กเกจของ Project Navigator เพื่อตรวจสอบแพ็กเกจและเวอร์ชันของแพ็กเกจ

หากต้องการนำทรัพยากร Dependency ของ Navigation SDK ที่มีอยู่ออกโดยใช้ CocoaPods ให้ทำตามขั้นตอนต่อไปนี้

  1. ปิดพื้นที่ทำงาน Xcode เปิดเทอร์มินัลและเรียกใช้คำสั่งต่อไปนี้
    sudo gem install cocoapods-deintegrate cocoapods-clean 
    pod deintegrate 
    pod cache clean --all
  2. นำ Podfile, Podfile.resolved และ Xcode workspace ออกหากคุณไม่ได้ใช้ CocoaPods อย่างอื่น

หากต้องการนำ Navigation SDK สำหรับ iOS ที่มีอยู่ซึ่งติดตั้งด้วยตนเองออก ให้ทำตามขั้นตอนต่อไปนี้
  1. จากการตั้งค่าการกำหนดค่าโปรเจ็กต์ Xcode ให้ค้นหา Frameworks, Libraries และเนื้อหาแบบฝัง ใช้เครื่องหมายลบ(-)เพื่อนำเฟรมเวิร์กต่อไปนี้ออก
    • GoogleMaps.xcframework
    • GoogleMapsBase.xcframework
    • GoogleMapsCore.xcframework
    • GoogleNavigation.xcframework
  2. นำแพ็กเกจ GoogleMaps ออกจากไดเรกทอรีระดับบนสุดของโปรเจ็กต์ Xcode

CocoaPods

Navigation SDK สำหรับ iOS มีให้บริการเป็นพ็อด CocoaPods CocoaPods เป็นผู้จัดการทรัพยากร Dependency แบบโอเพนซอร์สสำหรับโปรเจ็กต์ Swift และ Objective-C Cocoa

หากยังไม่มีเครื่องมือ CocoaPods ให้ติดตั้งใน macOS โดยเรียกใช้คำสั่งต่อไปนี้จากเทอร์มินัล ดูรายละเอียดได้ที่คู่มือเริ่มต้นใช้งาน CocoaPods

sudo gem install cocoapods

สร้าง Podfile สำหรับ Navigation SDK สำหรับ iOS และใช้เพื่อติดตั้ง API และทรัพยากร Dependency ดังต่อไปนี้

  1. หากยังไม่มีโปรเจ็กต์ Xcode โปรดสร้างโปรเจ็กต์ในตอนนี้แล้วบันทึกลงในเครื่องภายใน หากคุณเพิ่งเริ่มใช้การพัฒนา iOS ให้ทำดังนี้
    1. สร้างโปรเจ็กต์ใหม่
    2. เลือกเทมเพลต iOS > แอป
    3. ในหน้าจอตัวเลือกโปรเจ็กต์ ให้ทำดังนี้
      1. ป้อนชื่อโปรเจ็กต์
      2. บันทึกค่าในช่องตัวระบุแพ็กเกจ คุณใช้ค่าดังกล่าวเพื่อจำกัดคีย์ API ได้ที่ด้านล่าง
      3. ตั้งค่าโปรเจ็กต์ Interface เป็น Storyboard
      4. ตั้งค่าภาษาเป็น Swift หรือ Objective-C
  2. สร้างไฟล์ชื่อ Podfile ในไดเรกทอรีโปรเจ็กต์ ไฟล์นี้ระบุทรัพยากร Dependency ของโปรเจ็กต์
  3. แก้ไข Podfile และเพิ่มทรัพยากร Dependency พร้อมกับversions ต่อไปนี้คือตัวอย่างที่มีทรัพยากร Dependency ที่จำเป็นสำหรับ Navigation SDK สำหรับ iOS # การอ้างอิงการติดตั้ง Cocoapods #
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '15.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GoogleNavigation', '9.0.0'
    end
            
    อย่าลืมเรียกใช้ pod outdated เป็นประจำเพื่อตรวจหาเวอร์ชันใหม่ หากจำเป็น ให้อัปเกรดเป็นเวอร์ชันล่าสุด
  4. บันทึก Podfile
  5. เปิดเทอร์มินัลและไปที่ไดเรกทอรีที่มี Podfile:

    cd <path-to-project>
  6. เรียกใช้คำสั่ง pod install การดำเนินการนี้จะติดตั้ง API ที่ระบุไว้ใน Podfile พร้อมกับทรัพยากร Dependency ทั้งหมด

    pod install
  7. ปิด Xcode แล้วเปิด (ดับเบิลคลิก) ไฟล์ .xcworkspace ของโปรเจ็กต์เพื่อเปิด Xcode ตั้งแต่นี้เป็นต้นไป คุณต้องใช้ไฟล์ .xcworkspace เพื่อเปิดโปรเจ็กต์

หากต้องการอัปเดต API สำหรับโปรเจ็กต์ที่มีอยู่ ให้ทำตามขั้นตอนต่อไปนี้

  1. เปิดเทอร์มินัลและไปที่ไดเรกทอรีโปรเจ็กต์ที่มี Podfile
  2. เรียกใช้คำสั่ง pod update การดำเนินการนี้จะอัปเดต API ทั้งหมดที่ระบุใน Podfile ให้เป็นเวอร์ชันล่าสุด

การติดตั้งด้วยตนเอง

คำแนะนำนี้จะแสดงวิธีการเพิ่ม XCFrameworks ด้วยตนเองซึ่งมี Navigation SDK สำหรับ iOS และ Maps SDK สำหรับ iOS ลงในโปรเจ็กต์ รวมถึงกำหนดการตั้งค่าบิลด์ใน Xcode XCFramework เป็นแพ็กเกจไบนารีที่คุณใช้ได้ในหลายแพลตฟอร์ม รวมถึงเครื่องที่ใช้ชิปเซ็ต M1

ทำตามขั้นตอนต่อไปนี้เพื่อติดตั้ง XCFrameworks สำหรับ Navigation SDK สำหรับ iOS และ Maps SDK สำหรับ iOS

  1. ดาวน์โหลดไบนารีของ SDK และไฟล์ทรัพยากรต่อไปนี้
  2. เปิด Xcode และเปิดโปรเจ็กต์ที่มีอยู่ หรือสร้างโปรเจ็กต์ใหม่ หากคุณเพิ่งเริ่มใช้ iOS ให้สร้างโปรเจ็กต์ใหม่และเลือกเทมเพลตแอป iOS
  3. นำการอ้างอิงแผนที่ การนำทาง และ Places ที่มีอยู่ทั้งหมดออกจากโครงการ
  4. ลาก XCFrameworks ต่อไปนี้ลงในโปรเจ็กต์ของคุณในส่วน Frameworks, Libraries และเนื้อหาแบบฝังเพื่อติดตั้งทั้ง Maps และ Navigation SDK (เมื่อได้รับข้อความแจ้ง ให้เลือกคัดลอกรายการหากจำเป็น)
    • GoogleMaps.xcframework
    • GoogleMapsBase.xcframework
    • GoogleMapsCore.xcframework
    • GoogleNavigation.xcframework
  5. ลาก GoogleMaps.bundle จาก GoogleMapsResources ที่คุณดาวน์โหลดลงในไดเรกทอรีระดับบนสุดของโปรเจ็กต์ Xcode เมื่อมีข้อความแจ้ง อย่าลืมเลือกคัดลอกรายการหากจำเป็น
  6. ลาก GoogleNavigation.bundle จาก GoogleNavigationResources ที่ดาวน์โหลดไว้ไปยังไดเรกทอรีระดับบนสุดของโปรเจ็กต์ Xcode เมื่อได้รับข้อความแจ้ง ให้ตรวจสอบว่าเลือกคัดลอกรายการไปยังโฟลเดอร์ของกลุ่มปลายทางแล้ว
  7. เลือกโปรเจ็กต์จาก Project Navigator แล้วเลือกเป้าหมายของแอปพลิเคชัน
  8. เปิดแท็บสร้างระยะ และในลิงก์ไบนารีกับไลบรารี ให้เพิ่มเฟรมเวิร์กและไลบรารีต่อไปนี้
    • 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. ในเป้าหมายของแอปพลิเคชัน ให้เลือกแท็บความสามารถ เปิดโหมดพื้นหลัง และเปิดใช้โหมดต่อไปนี้
    • เสียง, AirPlay และการแสดงภาพซ้อนภาพ
    • การอัปเดตตำแหน่ง
  10. เลือกโปรเจ็กต์แทนเป้าหมายที่เฉพาะเจาะจง แล้วเปิดแท็บการตั้งค่าบิลด์ ในส่วนแฟล็กอื่นๆ ของ Linker ให้เพิ่ม ‑ObjC สำหรับทั้งแก้ไขข้อบกพร่องและรุ่น หากไม่เห็นการตั้งค่าเหล่านี้ ให้เปลี่ยนตัวกรองในแถบการตั้งค่าบิลด์จากพื้นฐานเป็นทั้งหมด
  11. เปิด Info.plist แล้วเพิ่มคู่คีย์-ค่าต่อไปนี้
    • คีย์: NSLocationWhenInUseUsageDescription (ความเป็นส่วนตัว - คำอธิบายตำแหน่งเมื่อใช้งานอยู่)
      ค่า: "แอปนี้ต้องการสิทธิ์ในการใช้ตำแหน่งของคุณสำหรับการนำทางแบบเลี้ยวต่อเลี้ยว"
    • คีย์: NSLocationAlwaysAndWhenInUseUsageDescription (ความเป็นส่วนตัว - คำอธิบายการใช้งานตำแหน่งเสมอและเมื่อใช้งานอยู่)
      ค่า: "แอปนี้ต้องการสิทธิ์ในการใช้ตำแหน่งของคุณสำหรับการนำทางแบบเลี้ยวต่อเลี้ยว"

ขั้นตอนที่ 2: ตรวจสอบไฟล์ Manifest ด้านความเป็นส่วนตัวของ Apple

Apple ต้องการรายละเอียดความเป็นส่วนตัวของแอปสำหรับแอปใน App Store ไปที่หน้ารายละเอียดความเป็นส่วนตัวของ Apple App Store เพื่อดูข้อมูลอัปเดตและข้อมูลเพิ่มเติม

ไฟล์ Manifest ด้านความเป็นส่วนตัวของ Apple จะรวมอยู่ในแพ็กเกจทรัพยากรของ SDK หากต้องการตรวจสอบว่าไฟล์ Manifest สำหรับความเป็นส่วนตัวรวมอยู่ในไฟล์แล้ว และต้องการตรวจสอบเนื้อหา ให้สร้างที่เก็บถาวรของแอปแล้วสร้างรายงานความเป็นส่วนตัวจากที่เก็บถาวร

ขั้นตอนที่ 3: เพิ่มคีย์ API ในโปรเจ็กต์

ตัวอย่างต่อไปนี้แสดงวิธีเพิ่มคีย์ API ลงในโปรเจ็กต์ใน Xcode

Swift

เพิ่มคีย์ API ลงใน AppDelegate.swift ดังนี้

  1. เพิ่มคำสั่งการนำเข้าต่อไปนี้
    import GoogleMaps
    import GoogleNavigation
  2. เพิ่มข้อมูลต่อไปนี้ลงในเมธอด application(_:didFinishLaunchingWithOptions:)
    GMSServices.provideAPIKey("YOUR_API_KEY")

Objective-C

เพิ่มคีย์ API ลงใน AppDelegate.m ดังนี้

  1. เพิ่มคำสั่งการนำเข้าต่อไปนี้
    @import GoogleMaps;
    @import GoogleNavigation;
  2. เพิ่มข้อมูลต่อไปนี้ลงในเมธอด application:didFinishLaunchingWithOptions:
    [GMSServices provideAPIKey:@"YOUR_API_KEY"];

ขั้นตอนที่ 4: เพิ่มแผนที่

โค้ดนี้จะแสดงวิธีเพิ่มแผนที่แบบง่ายลงใน ViewController ที่มีอยู่ รวมถึงการตั้งค่าเริ่มต้นบางอย่างสำหรับการนำทาง

ก่อนที่จะเปิดใช้การนำทางได้ ผู้ใช้ต้องยอมรับข้อกำหนดและเงื่อนไข หากต้องการแจ้งผู้ใช้ โปรดโทร GMSNavigationServices.showTermsAndConditionsDialogIfNeeded() แล้วตรวจสอบว่าข้อกำหนดได้รับการยอมรับแล้วหรือไม่ หากผู้ใช้ปฏิเสธข้อกำหนด mapView.isNavigationEnabled = true จะไม่มีผล และ mapView.navigator จะไม่มีผล

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

เรียกใช้แอปพลิเคชัน คุณควรจะเห็นแผนที่ที่มีศูนย์กลางอยู่ที่เคิร์กแลนด์ รัฐวอชิงตัน หากแผนที่ไม่ปรากฏ ให้ตรวจสอบว่าคุณได้ระบุคีย์ API ที่ถูกต้อง

หากคุณเป็นลูกค้าที่ใช้บริการระบบเคลื่อนที่

หากคุณเป็นลูกค้าที่ใช้บริการระบบเคลื่อนที่ โปรดดูข้อมูลเกี่ยวกับการเรียกเก็บเงินในเอกสารประกอบของ Mobility Service ดูข้อมูลเพิ่มเติมเกี่ยวกับการบันทึกธุรกรรมได้ที่ตั้งค่าการเรียกเก็บเงิน หากต้องการดูวิธีเพิ่มรหัสธุรกรรมลงในการใช้งาน Navigation SDK โปรดดูเชื่อมโยงการใช้บริการกับธุรกรรม Mobility