Skip to content

Releases: transistorsoft/native-background-geolocation

4.0.32

06 Apr 02:16

Choose a tag to compare

TSLocationManager 4.0.32

4.0.31

02 Apr 16:13

Choose a tag to compare

TSLocationManager 4.0.31

4.0.30

27 Mar 00:51

Choose a tag to compare

TSLocationManager 4.0.30

4.0.29

26 Mar 16:46

Choose a tag to compare

TSLocationManager 4.0.29

4.0.28

26 Mar 16:41

Choose a tag to compare

TSLocationManager 4.0.28

4.0.27

26 Mar 16:22

Choose a tag to compare

TSLocationManager 4.0.27

4.0.26

26 Mar 16:17

Choose a tag to compare

TSLocationManager 4.0.26

4.0.25

26 Mar 16:11

Choose a tag to compare

TSLocationManager 4.0.25

4.0.24

26 Mar 03:48

Choose a tag to compare

  • Don't show location authorization nag-dialog while !config.enabled

4.0.23

26 Mar 03:16

Choose a tag to compare

  • Hardcode static URLs and license in podspec template
    Remove unnecessary ENV-based templating for homepage, documentation,
    social media URLs, and license fields — these never change between
    releases.
  • Fix requestPermission() 30s timeout when user declines Always upgrade
    The upgrade-decline detection in applicationDidBecomeActive was gated
    behind a config.enabled check, so calling requestPermission() before
    ready() (config not enabled) caused the pending request to never resolve.
    Move in-flight authorization request lifecycle (Ask Next Time reset and
    upgrade-decline detection) above the config.enabled/automaticPromptEnabled
    guards so pending requests always complete regardless of tracking state.
  • Add transistorAuthorizationToken param to ready()
    BGGeo.ready() now accepts an optional TransistorToken that auto-configures
    http.url and authorization (strategy, tokens, refreshUrl, refreshPayload,
    expires). The token rewrite always applies regardless of reset flag, since
    tokens may refresh between launches.
    DemoApp updated to use the new param, removing manual auth setup from
    the config closure.
    Doc test generator updated to handle bare ready() → ready { _ in }
    conversion for the new required-closure signature.
  • Logger.log() accepts LogLevel enum instead of raw String
    The public log() method now takes a LogLevel enum value, preventing
    typos in level strings. Convenience methods (debug, info, warn, error,
    notice) still delegate directly to the ObjC layer via string tags.
    Added LogLevel.tag computed property to map enum cases to the ObjC
    string constants expected by TSLocationManager.log:message:.
  • Logger.log() accepts LogLevel enum instead of raw String
    The public log() method now takes a LogLevel enum value, preventing
    typos in level strings. Convenience methods (debug, info, warn, error,
    notice) still delegate directly to the ObjC layer via string tags.
    Added LogLevel.tag computed property to map enum cases to the ObjC
    string constants expected by TSLocationManager.log:message:.
  • Add convenience logging methods to Logger (debug, info, warn, error, notice)
    Thin wrappers over log(_:message:) matching the TS and Kotlin SDKs,
    so Swift developers can write bgGeo.logger.debug("msg") instead of
    bgGeo.logger.log("debug", message: "msg").
  • Gitignore auto-generated DocsExamplesCompileTest.swift
    This file is regenerated by scripts/generate_docs_compile_test_swift.py
    from docs-db YAML files and should not be tracked.
  • Add ready(reset:configure:), type-safe enums, and event improvements
    SwiftInterface API improvements:
    • BGGeo.ready(reset:configure:): config closure is now required (no bare
      ready()). reset=true (default) applies config every launch; reset=false
      applies only on first install, using persisted config on subsequent boots.
    • HttpConfig.method: String → HttpMethod enum (.post, .put, .patch)
    • GeolocationConfig.locationAuthorizationRequest: String →
      LocationAuthorizationRequest enum (.always, .whenInUse, .any)
    • PersistenceConfig.locationsOrderDirection: String →
      LocationsOrderDirection enum (.ascending, .descending)
    • ScheduleEvent: add typed enabled/trackingMode properties
    • AuthorizationEvent: add isSuccess computed property
    • HeartbeatEvent: add typed locationEvent property
      DemoApp updated to use ready(reset: false) { } pattern, replacing
      manual isFirstBoot guard.
      Doc compile test generator updated with Android-only detection and
      expanded to 110 test methods.
  • Add pure-Swift Geofence API, removeListeners(), and docs compile verification
    • Geofence struct: add public initializers for circle and polygon geofences
      so developers never need to touch TSGeofence.h directly. GeofenceManager.add()
      and addAll() now accept Geofence instead of TSGeofence.
    • BGGeo.removeListeners(): new method to bulk-remove all event listeners,
      delegates to TSEventManager.removeListeners.
    • generate_docs_compile_test_swift.py: extracts swift: blocks from docs-db
      YAML files and generates DocsExamplesCompileTest.swift for compile verification.
    • DemoApp updated to use pure-Swift Geofence API.
  • Add SwiftInterface: pure Swift API for SwiftUI developers
    Introduces a thin Swift proxy layer (BGGeo) wrapping the ObjC TSLocationManager
    singleton with idiomatic Swift patterns: async/await, closure-based event listeners
    with auto-cleanup EventSubscription tokens, typed config sub-modules, and Swift
    structs for all event types.
    • 27 new Swift files in SwiftInterface/ (Config/, Events/, plus module proxies)
    • Token-based event listener lifecycle (TSEventManager returns UUID tokens)
    • ObjC onX methods now return NSString* token (backwards-compatible)
    • Sub-objects: config, logger, store, geofences, authorization, sensors, app
    • TransistorAuthorizationService for demo server auth
    • DemoApp2 fully migrated to new Swift API
    • Removed old SwiftOverlay/TSLocationEvent+Swift.swift
    • Updated CLAUDE.md with SwiftInterface sync instructions
  • Rename '## Unreleased' to versioned heading at publish time
    Updates both the private and public CHANGELOG.md, replacing
    '## Unreleased' with '## X.Y.Z — YYYY-MM-DD' before copying
    to the public repo.
  • Add pod install to setup script
  • Add setup script and Install section to README
  • Add post-commit hook to auto-update CHANGELOG.md
    Appends commit messages under an "## Unreleased" section (created if
    missing). Skips merge commits, strips Co-Authored-By lines, indents
    multi-line bodies. Amends the commit to include the changelog update.
    Set core.hooksPath with: git config core.hooksPath scripts/hooks
  • Add JSON POST body support to authorization token refresh. Port Android SDK behavior: when refreshHeaders contains "Content-Type: application/json", serialize refreshPayload as a JSON body instead of form-encoded. Unrecognized content types fall back to form-encoded for backward compatibility.