Skip to main content

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 trial 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 is valid for 90 days from issuance and has a 15-day grace period after that for already-activated devices. After day 105 the SDK refuses to start. There is no per-license device cap. Install on as many devices as you need during your evaluation.


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 non-negotiable. 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 already declares everything it needs (location, motion, foreground service, internet, wake-lock). Manifest-merge propagates these declarations into your app. You do not need to copy permission declarations into your own manifest.

You do still need to request the runtime permissions from the user:

PermissionWhen to requestNotes
ACCESS_FINE_LOCATIONBefore Octet.start(...).SDK refuses to start without it.
ACTIVITY_RECOGNITIONBefore Octet.start(...).Android 10+ (API 29+). Motion-classification features degrade gracefully if denied. Request it for full proof confidence.
ACCESS_BACKGROUND_LOCATIONAfter ACCESS_FINE_LOCATION is granted, only if you need background proofs.Android 10+ requires this as a separate prompt.

3. Minimum platform versions

PlatformMinimumToolchain
iOS16.0Xcode 15+, Swift 5.9+
AndroidAPI 30 (Android 11)Android Studio Hedgehog (2023.1.1)+, JDK 17, Kotlin 2.1+

Next: the iOS Quick Start or Android Quick Start.