Docs/What's new in 3.0

What's new in 3.0

SDK 3.0.0 for iOS and Android is a major release. This page covers what changes for your integration. Read Upgrading from 2.x for the steps. The full release notes are in the octet-sdk-ios and octet-sdk-android changelogs, and the 2.0 docs stay at /docs/v2.0/.

What you may need to change

  • Usage reporting is always on. The SDK sends one usage record per device per day. It carries no location, no proof data and no user identity, and it never delays a proof. Setting creditServiceUrl no longer turns it off. See Metrics and usage reporting.
  • A pinned claimedRegion must be an assigned ISO 3166 code. Any other value produces no proof.
  • Android: an attached debugger refuses a proof (TAMPERING), as it already did on iOS. Debugging with a sandbox session (sandboxBypassToken set) still works.
  • Android: BootstrapReason has a new case, NewDevicesBlocked. A when (reason) without an else branch no longer compiles. Add the case or an else branch.
  • Android: recompile against 3.0. AdvancedConfig and LicenseStatus have new constructor parameters. Source using named arguments compiles unchanged.
  • The first proof after Octet.start can take up to 30 seconds while the SDK finishes starting, instead of returning noFix. If your app times out its first call, allow for this.
  • If you verify proofs yourself with octet-verify, use 1.5.0 or later.
  • If you turned on certificate pinning with 2.0, upgrade to 3.0, which carries updated pins.

New

  • Gateway routing. TransportPolicy (OctetConfig.advanced.transport) can send all of the SDK's network calls through a gateway you run, or through Octet's hosted gateway, so your app talks to one domain. Direct mode, the default, is unchanged. See Gateway routing.
  • Assurance tier on every proof. LocationProof.spoofingVerdict (spoofing_verdict in the proof JSON) says how strongly the location was corroborated. Use it to decide what a YES is worth. See OctetVerdict.
  • Require a tier when you verify. VerifyOptions.requireVerdict fails a proof below the tier you ask for, matching octet-verify --require-verdict. See Octet.verify.
  • Opt-in PLAUSIBLE containment. With OctetConfig.advanced.acceptPlausibleContainment on, contains(...) and disc queries can answer from a PLAUSIBLE proof. It is off by default. See Predicates.
  • A typed error when your account takes no new devices. BootstrapReason.newDevicesBlocked carries an upgradeUrl. Open it exactly as received. Devices that already activated keep working. See License Types.

React Native

A React Native wrapper is in progress and not yet published. See React Native.