กำหนดการตั้งค่าของแอปเพื่อให้ใช้ 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 ที่รองรับ หากต้องการทำสิ่งต่อไปนี้
เพิ่ม
platform
และpod
ต่อไปนี้ลงในPodfile
ของโปรเจ็กต์platform :ios, '11.0' pod 'ARCore/Geospatial', '~> 1.46.0'
นอกจากนี้ คุณยังระบุ
platform :ios, '10.0'
ได้หากต้องการรองรับ iOS 10 แต่โปรดทราบว่า Geospatial API จะทํางานในรันไทม์บน iOS >= 11 เท่านั้นเปิดหน้าต่างเทอร์มินัลและเรียกใช้
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;
}
ขอสิทธิ์เข้าถึงตําแหน่งจากผู้ใช้ขณะรันไทม์
แอปของคุณต้องขอสิทธิ์เข้าถึงตำแหน่งต่อไปนี้ขณะรันไทม์ก่อนที่จะกำหนดค่าเซสชัน
kCLAuthorizationStatusAuthorizedWhenInUse
CLAccuracyAuthorizationFullAccuracy
(มีผลเมื่อ iOS >= 14)
ตรวจสอบความพร้อมให้บริการของข้อมูลเชิงพื้นที่ ณ ตำแหน่งปัจจุบันของอุปกรณ์
เนื่องจาก Geospatial API ใช้ VPS และ GPS ร่วมกันในการกำหนดการเปลี่ยนรูปแบบเชิงพื้นที่ คุณจึงใช้ API ได้ตราบใดที่อุปกรณ์ระบุตำแหน่งได้ ในพื้นที่ที่มีความแม่นยำของ GPS ต่ำ เช่น พื้นที่ในอาคารและสภาพแวดล้อมในเมืองที่หนาแน่น API จะอาศัยความครอบคลุมของ VPS เพื่อสร้างการเปลี่ยนรูปแบบที่มีความแม่นยำสูง ภายใต้เงื่อนไขทั่วไป VPS ควรมีความแม่นยำในการระบุตำแหน่งประมาณ 5 เมตร และความแม่นยำในการหมุน 5 องศา ใช้ GARSession.checkVPSAvailabilityAtCoordinate:completionHandler:
เพื่อดูว่าตำแหน่งหนึ่งๆ มีบริการ VPS หรือไม่
นอกจากนี้ คุณยังใช้ Geospatial API ในพื้นที่ที่ไม่มี VPS ครอบคลุมได้ด้วย ในสภาพแวดล้อมกลางแจ้งที่มีสิ่งกีดขวางจากด้านบนเล็กน้อยหรือไม่มีเลย GPS อาจเพียงพอที่จะสร้างการแปลงที่มีความแม่นยำสูง
ขั้นตอนถัดไป
- รับการแปลงเชิงพื้นที่ของกล้องอุปกรณ์เพื่อระบุตำแหน่งที่แน่นอนของอุปกรณ์ของผู้ใช้ในโลกแห่งความเป็นจริง
- ตรวจสอบความพร้อมให้บริการของ VPS ณ ตำแหน่งของอุปกรณ์