Licensing
A Beekon license is a signed token (a license-format-v1 JWS) the SDK verifies on the device, with no network call. It is purely observational: no license status ever blocks, degrades, or delays the SDK. Without a key, Beekon runs in evaluation mode and works exactly the same.
You only need this section if you’ve been issued a production license and want to surface its status.
Supply a key
Section titled “Supply a key”The license key is the highest-priority channel and overrides any value set in the platform manifest (com.getbeekon.sdk.license meta-data on Android, BeekonLicenseKey in Info.plist on iOS). A token is bound to your app id and platform, so it’s safe to commit.
Beekon.configure(BeekonConfig.Local(licenseKey = "eyJ…")) // a license-format-v1 tokentry await Beekon.shared.configure(BeekonConfig.local(licenseKey: "eyJ…"))await Beekon.instance.configure( BeekonConfig.local(licenseKey: 'eyJ…'), // a license-format-v1 token);await Beekon.configure({ mode: 'local', licenseKey: 'eyJ…' }); // a license-format-v1 tokenRead the status
Section titled “Read the status”licenseStatus is a snapshot; licenseStatusUpdates (Beekon.licenseStatus StateFlow on Android) streams transitions. The status is one of: notDetermined, evaluation, licensed(tier, entitlements), expired, updateEntitlementLapsed, or invalid(reason).
when (val s = Beekon.licenseStatus.value) { is LicenseStatus.Licensed -> Log.d("beekon", "licensed: ${s.tier}") is LicenseStatus.Evaluation -> Log.d("beekon", "evaluation mode") is LicenseStatus.Invalid -> Log.d("beekon", "invalid: ${s.reason}") else -> {}}switch Beekon.shared.licenseStatus {case let .licensed(tier, _): print("licensed: \(tier)")case .evaluation: print("evaluation mode")case let .invalid(reason): print("invalid: \(reason)")default: break}// One-shot; or subscribe to Beekon.instance.licenseStatusUpdates for transitions.switch (await Beekon.instance.licenseStatus()) { case Licensed(:final tier): print('licensed: $tier'); case Evaluation(): print('evaluation mode'); case Invalid(:final reason): print('invalid: $reason'); default: break;}// One-shot; or subscribe with Beekon.onLicenseStatus((s) => …) for transitions.const s = await Beekon.licenseStatus();switch (s.status) { case 'licensed': console.log('licensed:', s.tier); break; case 'evaluation': console.log('evaluation mode'); break; case 'invalid': console.log('invalid:', s.reason); break; default: break;}A token carries claims the SDK reads but never enforces: products (covered platforms), app_ids (the bundle it’s bound to), tier (opaque — you define the meaning), entitlements, and an optional exp. For pricing and how to obtain a production license, see getbeekon.com.