beekon_flutter 0.1.1
beekon_flutter: ^0.1.1 copied to clipboard
Flutter plugin for the Beekon location SDK (Android + iOS).
Changelog #
All notable changes to beekon_flutter are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.1.1 - 2026-06-23 #
Changed #
- Native SDK pins bumped to 0.1.1 — Android Maven coordinate and iOS
SwiftPM binary now track BeekonKit /
beekon0.1.1 (device control plane, build-time license gate, and related native fixes since 0.1.0).
Added #
- Build-gate product id —
setWrapperInfonow declares the Flutter wrapper product id for build-time license enforcement (build-gate-v1).
0.1.0 - 2026-06-15 #
Changed #
- Moved to the
beekonlabsGitHub org. The Android native dependency coordinate is nowio.github.beekonlabs:beekon(wasio.github.wayqteam:beekon), and the iOS binary/source repos are undergithub.com/beekonlabs. This is internal to the plugin — the pub.dev package name (beekon_flutter) is unchanged and no consumer code changes are required.
Added #
getPermissionStatus()— read-only permission query. Returns the current location grant as aPermissionStatus(level:notDetermined/denied/restricted/foreground/background; nullableaccuracy:full/reduced) for pre-start checks, without ever prompting. Adds thePermissionLevel/PermissionAccuracyenums andisAuthorized/canTrackInBackgroundgetters. Beekon still never requests permission — the app owns that; during tracking, loss surfaces onstate. On Android, "not yet asked" and "denied" both reportnotDetermined;restrictedis iOS-only. Requires native SDKs ≥ the release that adds the API.
0.0.9 - 2026-06-14 #
Added #
- Beekon Cloud mode (cloud-mode-v1):
BeekonConfig.cloud({projectKey, endpoint?, notification?, logLevel})— abkproj_project key with server-owned config, geofences and license; default endpointhttps://api.getbeekon.com. Adds theBeekonModeenum,StopReason.cloudModeUnavailable, andInvalidConfiguration. Requires native SDKs ≥ 0.0.9. - Diagnostic logging (log-format-v1):
Beekon.getLog/exportLog/clearLog/setLogLevel/log, thelogsStream<LogEntry>,forwardLogsToConsole, and theLogEntry/LogLeveltypes. Requires native SDKs ≥ 0.0.9. SyncConfig.syncThreshold(beekon#20): pending-fix count that triggers an early upload of regular fixes ahead of theintervalSecondsschedule (not subject to the Android ~15 min WorkManager floor).0(the default) leaves regular fixes to the schedule. Independent of this setting, a geofence event and a session stop with pending fixes always flush immediately while sync is configured. Requires the native SDKs ≥ 0.0.9.
Changed #
- BREAKING:
BeekonConfigis now a sealed two-arm type built viaBeekonConfig.cloud(...)/BeekonConfig.selfManaged(...); the unnamedconst BeekonConfig({...})constructor was removed. Tracking params,sync, andlicenseKeynow live only on theselfManagedarm.
0.0.8 #
Built against the native 0.0.8 API; requires native ≥ 0.0.8 at runtime. No wrapper API changes.
Changed #
- Native pins bumped to
0.0.8(Mavenio.github.beekonlabs:beekon, SwiftPMbeekon-ios-binary). 0.0.8 embeds the production ES256 license verification keyset, so genuinelicense-format-v1tokens resolve toLicensed/Evaluationon-device, and hardens wire/license conformance. The license surface remains a pure pass-through — no validation in the wrapper.
0.0.7 #
Built against the native 0.0.7 API; requires native ≥ 0.0.7 at runtime.
Added #
- License surface (
license-format-v1) — a pure pass-through to the native verifier; the wrapper performs no validation of its own.BeekonConfig.licenseKey— supply a license token (alicense-format-v1JWS). The highest-priority channel, overriding the Android manifest / iOSInfo.plistvalue;null/blank means unset. Safe to commit to source control (app-id- and product-bound).Beekon.licenseStatus()(one-shot) andBeekon.licenseStatusUpdates(replay-1 stream) expose the current platform's status: sealedLicenseStatus(NotDetermined/Licensed(tier, entitlements)/Evaluation/Expired/UpdateEntitlementLapsed/Invalid(reason)) plusLicenseInvalidReason. Purely observational — no status ever blocks, degrades, or delays the SDK; Android and iOS may legally diverge for the same app.- The plugin identifies itself to the verifier as the
flutterproduct during native registration.
- Native pins bumped to
0.0.7(Mavenio.github.beekonlabs:beekon, SwiftPMbeekon-ios-binary).
0.0.6 #
Built against the native 0.0.6 API; requires native ≥ 0.0.6 at runtime.
Added #
- Native token refresh —
SyncConfig.auth(AuthConfig) lets the SDK attach and natively refresh the upload access token, proactively before expiry and reactively on401/403, in the background and on a cold launch. Rotated credentials surface on the newBeekon.authChangesstream (AuthTokens). AddsAuthStrategy,AuthBodyFormat, andAuthResponseMapping.nullkeeps the legacy static-headersbehaviour. - On-demand fix —
getCurrentLocation({timeout, accuracy})returns a single fresh location (ornullon timeout), independent of tracking; throws the newLocationUnavailable(LocationUnavailableReason) on a precondition failure. - Restored
NotificationConfig.smallIcon— an optional Android foreground-service status-bar icon (drawable/mipmap resource name;nullkeeps the host launcher icon). Android-only; iOS ignores it. Reverses the 0.0.5 "smallIcon removed" note.
0.0.5 #
Full rebuild against the native 0.0.5 API — a breaking, no-backward-compat
release (Beekon is pre-1.0). The Dart surface is now a faithful 1:1 mirror of
the native Beekon (Android) / Beekon.shared (iOS).
Added #
- Server sync:
SyncConfigonBeekonConfig, plussync(),setExtras(),pendingUploadCount(), and thesyncStatusstream (SyncIdle/SyncPending/SyncFailed). - Geofencing:
addGeofences()/removeGeofences()/listGeofences()and thegeofenceEventsstream (BeekonGeofence,GeofenceEvent,Transition). - Richer config:
accuracyMode,whenStationary,stationaryRadiusMeters,detectActivity(AccuracyMode,StationaryMode). - Richer
Location:id,quality,trigger,motion,activity,isMock(LocationQuality,LocationTrigger,MotionState,ActivityType). deleteLocations({before}),resumeIfNeeded(), andStopReason.locationUnavailable.
Changed #
intervalSeconds→minTimeBetweenLocationsSeconds;distanceMeters→minDistanceBetweenLocationsMeters.history(from, to)→getLocations(from: , to: ).AndroidNotification{title,text,smallIcon}→NotificationConfig{title,text}(Android-only;smallIconremoved).- iOS registers the background-refresh task and installs cold-launch resume
hooks during plugin registration; Android no longer calls
initialize()(the SDK auto-initializes via AndroidX Startup). - Native pins bumped to
0.0.5(Mavenio.github.beekonlabs:beekon, SwiftPMbeekon-ios-binary).
Removed #
PermissionDenied/LocationServicesDisabledexceptions — permission and service problems now surface only onstateasStopped(reason). The only thrown errors areStorageExceptionandInvalidGeofence.
0.0.3 #
First synchronized release across all four registries (Maven Central,
beekonlabs/beekon-ios-binary xcframework, pub.dev, npm). The native floors
bumped: iOS BeekonKit.xcframework now ships with importable .swiftinterface
files and keeps GRDB out of the public ABI; the Android AAR's Kotlin metadata
is at 2.1 so Kotlin 2.1.x/2.2.x consumers can read it without
-Xskip-metadata-version-check. Location accuracy/speed/bearing/altitude
are now nullable to faithfully represent providers that don't deliver them.
The 0.0.2 slot was used as a release dry-run — only the Android AAR landed
on Maven Central (the registry is immutable). pub.dev sees this as a
non-incremental jump from 0.0.1 to 0.0.3; that is intentional.
0.0.1 #
Initial release.
Added #
- Flutter plugin bridging the native Beekon location SDKs (Android
.aar, iOSBeekonKitxcframework) into Dart. - Public API mirroring the native surface:
Beekon.instance.initialize / configure / start / stop / shutdown,stateandpositionsstreams,history(from, to). - Sealed
BeekonState(Idle/Starting/Tracking/Paused/Stopped) andBeekonExceptiontypes for exhaustive Dart 3 pattern matching. Position(lat/lng/accuracy/speed/bearing/altitude/timestamp) andBeekonConfig(preset,Durationinterval override,AndroidNotificationfor the foreground service).- Pigeon-generated type-safe channels (
BeekonHostApi+ event channels for state and positions). - Example app demonstrating live tracking, state transitions, and history queries.
- iOS distribution via SwiftPM (binary target on
beekonlabs/beekon-ios-binary); requires Flutter 3.44+ or Flutter 3.32–3.43 withflutter config --enable-swift-package-manager. - Android distribution via Maven Central (
io.github.beekonlabs:beekon).