מדריך למתחילים בנושא גיאו-מרחבי ב-iOS

במדריך למתחילים הזה בנושא ARCore Geospatial API נסביר איך להריץ אפליקציית לדוגמה ב-Xcode שממחישה את Geospatial API.

למפתחים שרוצים לפתח אפליקציה משלהם באמצעות Geospatial API, מומלץ לעיין במדריך למפתחים של Geospatial ל-iOS.

למידע נוסף על Geospatial API, אפשר לעיין במאמר מבוא ל-ARCore Geospatial API.

אם זו הפעם הראשונה שאתם מפתחים באמצעות ARCore, כדאי לעיין במאמר תחילת העבודה.

דרישות מוקדמות

  • Xcode מגרסה 13.0 ואילך
  • Cocoapods מגרסה 1.4.0 ואילך, אם משתמשים ב-Cocoapods
  • מכשיר Apple תואם ARKit עם iOS מגרסה 12.0 ואילך (נדרש יעד פריסה עם iOS מגרסה 12.0 ואילך)

הגדרת האפליקציה לדוגמה

הפרויקט GeospatialExample שכלול ב-ARCore SDK ל-iOS מתאר קוד שמפעיל את Geospatial API.

  1. כדי לקבל את קוד האפליקציה לדוגמה, משכפלים או מורידים את ARCore SDK ל-iOS מ-GitHub.

  2. פותחים חלון Terminal או Finder ועוברים לתיקייה שבה קלונתם או הורדתם את ה-SDK.

  3. עוברים לתיקייה arcore-ios-sdk-master/Examples.

  4. פותחים את התיקייה Examples, בוחרים את התיקייה GeospatialExample ולוחצים על Open.

הגדרת פרויקט ב-Google Cloud

לפני שמשתמשים במערכת למיקום חזותי (VPS) באפליקציה, צריך להפעיל את ARCore API בפרויקט חדש או קיים ב-Google Cloud. Geospatial API פועל גם עם הרשאה ללא מפתח וגם עם הרשאה באמצעות מפתח API, אבל במדריך למתחילים הזה נשתמש בשיטה של מפתח API.

הגדרת הרשאה

כדי לבצע קריאות ל-Geospatial API ב-VPS, לאפליקציה לדוגמה נדרשת הרשאה, והיא עשויה להשתמש במפתח API ללא הגבלות. אם אתם משתמשים במפתח API מוגבל, עליכם גם לספק מזהה חבילה שמשוייך למפתח ה-API.

  1. ב-XCode, באפליקציית הדוגמה GeospatialExample, פותחים את הקובץ ViewController.m ומחפשים את your-api-key.

  2. מוסיפים את מפתח ה-API ל-GARSession: מדביקים את מפתח ה-API שהעתקתם משלב קודם מעל הטקסט your-api-key (שומרים על המרכאות), כפי שמוצג:

    self.garSession = [GARSession sessionWithAPIKey:@"your-api-key"
                                   bundleIdentifier:nil
                                              error:&error];
    

הגדרת ARCore SDK

האפליקציה GeospatialExample מגיעה עם קובץ Podfile שהוגדרה מראש עם הגרסאות הנדרשות של ARCore SDK ו-iOS. כדי להתקין את יחסי התלות האלה, פותחים חלון Terminal ומריצים את pod install מהתיקייה שבה נמצא פרויקט Xcode.

הפעולה הזו יוצרת קובץ .xcworkspace שמשמש מאוחר יותר ליצירת האפליקציה ולהרצתה.

פיתוח גרסת build והרצה של האפליקציה לדוגמה

  1. ב-Xcode, בוחרים את קובץ סביבת העבודה GeospatialExample ולוחצים על Signing & Capabilities.

  2. מסמנים את התיבה ניהול אוטומטי של החתימה.

  3. בשדה Team מזינים שם של צוות.

    אפשר להשתמש במזהה החבילה שמוגדר כברירת מחדל כדי להריץ את האפליקציה מ-Xcode, אבל צריך לשנות אותו אם משתמשים ב-GeospatialExample כ-stub לאפליקציה שלכם בסביבת הייצור.

  4. מחברים את המכשיר כדי להריץ את האפליקציה לדוגמה.

  5. יוצרים ומריצים את האפליקציה GeospatialExample מהקובץ .xcworkspace כדי להפעיל אותה במכשיר.

    כדי להימנע משגיאות build, חשוב לוודא שאתם מבצעים build מהקובץ .xcworkspace ולא מהקובץ .xcodeproj.

אמורה להופיע תצוגת מצלמה, יחד עם פרטי ניפוי באגים שמתארים את הטרנספורמציה הגיאוספטית הנוכחית של המכשיר. כשסורקים את הסביבה, חשוב לשים לב שערכים של רמת האמון בדיוק המיקום עשויים להשתנות במהלך התנועה, אם אתם נמצאים באזור שבו יש תמיכה במיקום VPS.

כש-ARCore בטוחה במיקום ובכיוון של המכשיר, אפשר להציב עוגן במיקום הנוכחי באמצעות טרנספורמציה גיאו-מרחית.

אם פרטי ה-VPS לא זמינים, יכול להיות שרמת הדיוק של המיקום תהיה נמוכה מדי. האפליקציה צריכה להיות מחוברת לאינטרנט, והמיקום צריך להיות ידוע ל-VPS. כדי לקבל את התוצאות הטובות ביותר, מומלץ להפעיל את האפליקציה לדוגמה בחוץ (לא בתוך הבית) בשעות היום.

בנוסף, אם אתם נמצאים באזור בלי תמיכה ב-VPS או אם אותות ה-GPS לא מספיקים, יכול להיות שתצטרכו לשנות את ערכי הסף של רמת האמון באפליקציה כדי להציב עוגן.

כדי לשנות את ערכי הסף:

  1. ב-Xcode, פותחים את הקובץ ViewController.m ועוברים לקטע הבא:

    // Thresholds for 'good enough' accuracy. These can be tuned for the
    // application. We use both 'low'
    // and 'high' values here to avoid flickering state changes.
    static const CLLocationAccuracy kHorizontalAccuracyLowThreshold = 10;
    static const CLLocationAccuracy kHorizontalAccuracyHighThreshold = 20;
    static const CLLocationDirectionAccuracy kHeadingAccuracyLowThreshold = 15;
    static const CLLocationDirectionAccuracy kHeadingAccuracyHighThreshold = 25;
    
  2. משנים את הערכים האלה לפי הצורך. ככל שהערך גבוה יותר, כך רמת הדיוק נמוכה יותר.

    הפחתת רמת הדיוק מאפשרת לאפליקציה מרחב פעולה גדול יותר בבחירת נקודת העגינה. מידע נוסף זמין במאמר התאמה לדיוק הטרנספורמציה.

השלבים הבאים

מומלץ לעיין במדריך למפתחים בנושא נתונים גיאו-מרחביים ל-iOS ולהתחיל לפתח באמצעות Geospatial API.