Skip to content

Releases: LinkForty/mobile-sdk-android

v1.3.0

Choose a tag to compare

@onamfc onamfc released this 11 Jun 16:02

Added

  • SDK identitysdkName/sdkVersion on install + event payloads and an X-LinkForty-SDK header on all requests (sourced from BuildConfig).
  • Last-click attribution — every in-app event is stamped with the deep link that most recently opened the app plus a per-app-open sessionId; the newest open supersedes, the active link persists across restarts, and organic activity stays session-only.
  • Screen-view trackingLinkForty.shared.trackScreenView(name) plus LinkFortyNavObserver for automatic Jetpack Navigation tracking (androidx.navigation is a compileOnly dependency).

All additive and backward compatible.

v1.2.0

Choose a tag to compare

@onamfc onamfc released this 04 May 23:23

Added

App token (LinkForty Cloud organic-install attribution)

`appToken` is a new optional field on `LinkFortyConfig` that lets LinkForty Cloud attribute organic installs (Play Store discovery, social mentions, etc.) to your workspace. Without it, only fingerprint-attributed installs (deeplink click → app open) get scoped to your workspace.

```kotlin
val config = LinkFortyConfig(
baseUrl = "https://go.yourdomain.com",
apiKey = "your-api-key",
appToken = "at_a1b2c3d4...", // recommended for Cloud
debug = true
)
LinkForty.initialize(context, config)
```

  • Format: `at_<32 hex>`
  • Public: Safe to ship inside your app bundle — it only identifies which workspace owns the install; it cannot authenticate API actions or expose private data.
  • Self-hosted Core: Field is accepted and ignored.
  • Find it: Cloud Dashboard → Workspace Settings → App Token

External user ID

`setExternalUserId(...)` and `getExternalUserId()` are new methods on `LinkForty` for SDK-level user attribution. The set value is automatically attached to all `createLink()` calls (unless overridden per-call), enabling per-user deduplication and share attribution on the dashboard.

```kotlin
LinkForty.setExternalUserId("user-123")

// Now all createLink calls include externalUserId: "user-123"
val link = LinkForty.createLink(CreateLinkOptions(
deepLinkParameters = mapOf("productId" to "abc")
))

// Per-call override still works:
val oneOffLink = LinkForty.createLink(CreateLinkOptions(
deepLinkParameters = mapOf("productId" to "abc"),
externalUserId = "different-user"
))

LinkForty.setExternalUserId(null) // clear
```

  • Stored in memory only — not persisted to disk.
  • Cleared by `clearData()` and `reset()`.

Compatibility

  • Backwards-compatible: Existing apps continue to work without changes — both new fields are optional/have default values.
  • Min SDK: 21 (unchanged)
  • Kotlin: unchanged
  • Java target: unchanged

Install

Gradle

```kotlin
dependencies {
implementation("com.linkforty:sdk:1.2.0")
}
```

Changelog

See CHANGELOG.md for the full history.

v1.1.0

Choose a tag to compare

@onamfc onamfc released this 03 Mar 23:19

Added

  • externalUserId parameter to CreateLinkOptions for per-user deduplication and share attribution
  • deduplicated field to CreateLinkResult indicating when an existing link was returned
  • llms.txt — LLM-optimized integration reference for AI coding assistants

v1.0.0 - Initial Release

Choose a tag to compare

@onamfc onamfc released this 16 Feb 23:25
  • Deferred deep linking with probabilistic fingerprinting
  • Android App Links support
  • Custom URL scheme support
  • Event tracking with offline queueing (max 100 events)
  • Revenue tracking with BigDecimal precision
  • Programmatic link creation (SDK and dashboard endpoints)
  • Server-side URL resolution with fingerprint query parameters
  • Attribution data access (install ID, install data, first launch status)
  • Data management (clear data, reset SDK)
  • Configuration validation (HTTPS enforcement, attribution window bounds)
  • Privacy-first design (no GAID by default)
  • Kotlin coroutines for all async operations
  • OkHttp for HTTP networking
  • Moshi with codegen for JSON serialization
  • JUnit 5 + MockK test suite
  • GitHub Actions CI (unit tests, lint, build)
  • Maven Central publishing configuration
  • ProGuard/R8 consumer rules
  • HTTPS enforcement for API endpoints (except localhost/127.0.0.1/10.0.2.2)
  • Bearer token authentication
  • No persistent device identifiers collected by default