Releases: LinkForty/mobile-sdk-android
v1.2.0
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
v1.0.0 - Initial Release
- 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