เปิดใช้ Geospatial API สำหรับแอป iOS ของคุณ

กำหนดการตั้งค่าของแอปเพื่อให้ใช้ Geospatial API ได้

ข้อกำหนดเบื้องต้น

โปรดทำความเข้าใจแนวคิดพื้นฐานของ AR และวิธีกำหนดค่าเซสชัน ARCore ก่อนดำเนินการต่อ

หากต้องการเรียกใช้แอปตัวอย่างที่สาธิตฟังก์ชันการทำงานที่อธิบายไว้ที่นี่ โปรดดูการเริ่มต้นใช้งาน Geospatial ของ ARCore สําหรับ iOS

ดูข้อมูลเพิ่มเติมเกี่ยวกับ Geospatial API ได้ที่ข้อมูลเบื้องต้นเกี่ยวกับ Geospatial API

หากคุณเพิ่งเริ่มพัฒนาด้วย ARCore โปรดดูข้อมูลเกี่ยวกับข้อกำหนดของซอฟต์แวร์และฮาร์ดแวร์ ข้อกําหนดเบื้องต้น และข้อมูลอื่นๆ ที่เฉพาะเจาะจงสําหรับแพลตฟอร์มที่คุณใช้ในส่วนเริ่มต้นใช้งาน

เปิดใช้ ARCore API

ก่อนใช้ระบบการระบุตำแหน่งด้วยภาพ (VPS) ในแอป คุณต้องเปิดใช้ ARCore API ในโปรเจ็กต์ Google Cloud ใหม่หรือที่มีอยู่ก่อน บริการนี้รับหน้าที่โฮสต์ จัดเก็บ และแก้ปัญหา Anchor เชิงพื้นที่

เราขอแนะนำให้ใช้การให้สิทธิ์แบบไม่ใช้คีย์ แต่ก็รองรับการให้สิทธิ์คีย์ API ด้วย

เพิ่มไลบรารีที่จําเป็นลงในแอป

หลังจากให้สิทธิ์แอปเรียก ARCore API แล้ว คุณต้องเพิ่มไลบรารีเพื่อเปิดใช้ฟีเจอร์เชิงพื้นที่ในแอป

อัปเดต Podfile สําหรับแอปของคุณให้รวม ARCore SDK และเวอร์ชัน iOS ที่รองรับ หากต้องการทำสิ่งต่อไปนี้

  1. เพิ่ม platform และ pod ต่อไปนี้ลงใน Podfile ของโปรเจ็กต์

    platform :ios, '11.0'
    pod 'ARCore/Geospatial', '~> 1.46.0'
    

    นอกจากนี้ คุณยังระบุ platform :ios, '10.0' ได้หากต้องการรองรับ iOS 10 แต่โปรดทราบว่า Geospatial API จะทํางานในรันไทม์บน iOS >= 11 เท่านั้น

  2. เปิดหน้าต่างเทอร์มินัลและเรียกใช้ pod install จากโฟลเดอร์ที่มีโปรเจ็กต์ Xcode

    ซึ่งจะสร้างไฟล์ .xcworkspace ที่คุณใช้สร้างและเรียกใช้แอป

โปรดตรวจสอบว่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์เป็นไปตามข้อกำหนดของ ARCore SDK ตามที่อธิบายไว้ในการเริ่มต้นอย่างรวดเร็ว

เปิดใช้ความสามารถเชิงพื้นที่ในการกําหนดค่าเซสชัน

ตรวจสอบความเข้ากันได้ของอุปกรณ์

อุปกรณ์ที่รองรับ ARCore บางรุ่นอาจไม่รองรับ Geospatial API ด้วย ตามที่อธิบายไว้ในคู่มือเริ่มต้นใช้งาน

ใช้ GARSession.isGeospatialModeSupported: เพื่อตรวจสอบอุปกรณ์ ดังตัวอย่างต่อไปนี้

if (![self.garSession isGeospatialModeSupported:GARGeospatialModeEnabled]) {
  [self setErrorStatus:@"GARGeospatialModeEnabled is not supported on this device."];
  return;
}

GARSessionConfiguration *configuration = [[GARSessionConfiguration alloc] init];
configuration.geospatialMode = GARGeospatialModeEnabled;
[self.garSession setConfiguration:configuration error:&error];
if (error) {
  [self setErrorStatus:[NSString stringWithFormat:@"Failed to configure GARSession: %d",
                                                  (int)error.code]];
  return;
}

ขอสิทธิ์เข้าถึงตําแหน่งจากผู้ใช้ขณะรันไทม์

แอปของคุณต้องขอสิทธิ์เข้าถึงตำแหน่งต่อไปนี้ขณะรันไทม์ก่อนที่จะกำหนดค่าเซสชัน

ตรวจสอบความพร้อมให้บริการของข้อมูลเชิงพื้นที่ ณ ตำแหน่งปัจจุบันของอุปกรณ์

เนื่องจาก Geospatial API ใช้ VPS และ GPS ร่วมกันในการกำหนดการเปลี่ยนรูปแบบเชิงพื้นที่ คุณจึงใช้ API ได้ตราบใดที่อุปกรณ์ระบุตำแหน่งได้ ในพื้นที่ที่มีความแม่นยำของ GPS ต่ำ เช่น พื้นที่ในอาคารและสภาพแวดล้อมในเมืองที่หนาแน่น API จะอาศัยความครอบคลุมของ VPS เพื่อสร้างการเปลี่ยนรูปแบบที่มีความแม่นยำสูง ภายใต้เงื่อนไขทั่วไป VPS ควรมีความแม่นยำในการระบุตำแหน่งประมาณ 5 เมตร และความแม่นยำในการหมุน 5 องศา ใช้ GARSession.checkVPSAvailabilityAtCoordinate:completionHandler: เพื่อดูว่าตำแหน่งหนึ่งๆ มีบริการ VPS หรือไม่

นอกจากนี้ คุณยังใช้ Geospatial API ในพื้นที่ที่ไม่มี VPS ครอบคลุมได้ด้วย ในสภาพแวดล้อมกลางแจ้งที่มีสิ่งกีดขวางจากด้านบนเล็กน้อยหรือไม่มีเลย GPS อาจเพียงพอที่จะสร้างการแปลงที่มีความแม่นยำสูง

ขั้นตอนถัดไป