Docs/Getting Started/Prerequisites

Prerequisites

Three things every consumer app needs before calling Octet.start(...):

  1. A license key.
  2. Privacy declarations in your app bundle (iOS Info.plist) or runtime permission grants (Android).
  3. A minimum platform version.

1. License key

The SDK is gated by a per-developer license key. Request a free key at sdk.octetproof.com/signup.

The key is a PASETO v4.public token shaped like octet_live_v4.public.… (or octet_test_… against staging). Octet signs the key, and the SDK verifies the signature locally before any network call.

A license key is free for up to 1,000 signed proofs per month and renews automatically, with no time limit. There is no per-license device cap; install on as many devices as you need.


2. Platform privacy declarations

iOS: Info.plist keys

Add these to your app's Info.plist. Without them, the iOS runtime crashes on first launch with a privacy-sensitive-data error that names the missing key.

Required

<key>NSLocationWhenInUseUsageDescription</key>
<string>This app uses your location to verify and prove your location
to services that request it.</string>

<key>NSMotionUsageDescription</key>
<string>This app uses motion data to detect when you're stationary or
moving, which improves the confidence of location proofs.</string>

NSMotionUsageDescription is required. The SDK touches CMMotionActivityManager immediately during Octet.start(...), and Apple requires the usage description before any code accesses that API. Read-only access also counts.

The strings are user-facing. The copy above is a safe default. Rewrite in your product's voice if you prefer.

Required only if you enable background location

If your app needs proofs while backgrounded, also add:

<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>This app uses background location to continue generating
location proofs while you're not actively using it.</string>

<key>UIBackgroundModes</key>
<array>
    <string>location</string>
</array>

Without these the SDK silently falls back to foreground-only operation when the app is backgrounded. The SDK itself does not crash. Proofs stop generating until the app returns to foreground.

Android: runtime permissions

The SDK's AndroidManifest.xml declares the permissions the on-demand foreground proof flow uses: location, motion, foreground service, internet, and wake-lock. Manifest-merge propagates these into your app, so you do not copy them into your own manifest.

The SDK's manifest declares only the permissions the foreground proof flow uses, so ACCESS_BACKGROUND_LOCATION is not bundled. To generate proofs while the app is backgrounded, declare ACCESS_BACKGROUND_LOCATION in your own manifest.

You still request the runtime permissions from the user:

Permission When to request Notes
ACCESS_FINE_LOCATION Before Octet.start(...). SDK refuses to start without it.
ACTIVITY_RECOGNITION Before Octet.start(...). Android 10+ (API 29+). Motion-classification features degrade gracefully if denied. Request it for full proof confidence.
ACCESS_BACKGROUND_LOCATION After ACCESS_FINE_LOCATION is granted, only if you need background proofs. Declare it in your own manifest first. The SDK does not merge it. Android 10+ prompts for it separately.

3. Minimum platform versions

Platform Minimum Toolchain
iOS 16.0 Xcode 15+, Swift 5.9+
Android API 30 (Android 11) Android Studio Hedgehog (2023.1.1)+, JDK 17, Kotlin 2.1+

Next: the iOS Quick Start or Android Quick Start.