Skip to content

The iOS App#

The CaptureGraph app is the execution engine: it parses procedure JSON, walks the user through each step, and writes captured data to the device. There is no App Store build — you compile it from source with Xcode.

Requirements#

  • A Mac with a recent version of Xcode
  • An iPhone or iPad running iOS 18+ (an Apple ID is enough for on-device development signing)

Build and Run#

  1. Open the project in Xcode:

    open capturegraph-ios-client/CaptureGraphEngine/CaptureGraphEngine.xcodeproj
    
  2. Select the CaptureGraphEngine target, go to Signing & Capabilities, and set the Team to your own. The project ships with bundle identifier com.samb.CaptureGraphEngine — if signing complains about the identifier being taken, change it to something unique to you.

  3. Connect your device, select it as the run destination, and press Run. On the first install, approve the developer certificate on the device under Settings → General → VPN & Device Management.

Entitlements

The project's entitlements include WeatherKit (used by the CaptureWeather node) and an App Group. If automatic signing reports entitlement errors, enable those capabilities for your App ID in the Apple Developer portal — or remove them if you don't need weather capture.

Running in the Simulator#

The app builds and runs in the iOS Simulator, which is fine for exploring procedures, user-input steps, and instructions. The camera capture APIs require real hardware, though — in the Simulator, camera nodes display a static placeholder image instead of a live feed. Plan on a physical device for any real capture.

Where Data Lives on the Device#

The app's Documents folder is exposed to the Files app and to Finder file sharing, so you can move files in and out without any extra tooling:

Documents/
├── CaptureData/                # one folder per capture target
│   └── <TargetName>/
│       └── ...sessions and files laid out by the schema...
├── CaptureProcedures/          # procedure JSONs available in the app
├── BrokenCaptureProcedures/    # quarantined invalid procedure files
└── ...internal app folders     # InProgressSessions, UploadQueue, RemoteFileCache — leave these alone

CaptureData/<TargetName>/ is the whole folder you will copy back to your computer for analysis. Its layout is dictated by the procedure's schema, so it is self-describing — there is no manifest file to keep in sync.

Connecting to a Server (Later)#

The app's Settings tab has a Server Address field, and the Remote tab lists targets hosted by a CaptureGraph server. You won't need either for this getting-started path.

Next#

With the app on your phone, take Your First Capture — no Python required.