flutter_linkme_sdk 0.2.13
flutter_linkme_sdk: ^0.2.13 copied to clipboard
Flutter SDK for LinkMe — short links, custom domains, multi-platform deep linking, and attribution analytics.
LinkMe Flutter SDK #
Flutter plugin for LinkMe — deep linking and attribution.
- Main Site: li-nk.me
- Documentation: Flutter Setup
- Package: pub.dev
Installation #
flutter pub add flutter_linkme_sdk
Or declare it manually:
dependencies:
flutter_linkme_sdk: ^0.2.13
Basic Usage #
import 'package:flutter_linkme_sdk/flutter_linkme_sdk.dart';
final linkme = LinkMe();
await linkme.configure(const LinkMeConfig(
appId: 'app_123',
debug: true,
));
await linkme.setReady();
final initial = await linkme.getInitialLink();
linkme.onLink.listen((payload) => routeUser(payload));
Forced web redirects #
If a payload contains forceRedirectWeb: true and a non-empty webFallbackUrl, the Flutter SDK opens the external browser automatically and does not deliver that payload to getInitialLink(), claimDeferredIfAvailable(), or onLink.
Manual deep-link setup mapping #
Use this config shape for your app setup values:
{
"hosts": ["links.yourco.com"],
"associatedDomains": ["links.yourco.com"],
"schemes": ["yourapp"]
}
What each field does and why it must be set:
hosts: your HTTPS deep-link domain(s), mapped to iOS Associated Domains and Android App Links host filters.associatedDomains: iOS universal-link domain allowlist; keep aligned with your HTTPS hosts.schemes: fallback custom URL scheme(s) for explicit scheme opens.
Required: if these host/scheme values are not configured in native iOS and Android targets, LinkMe links will not route reliably into your Flutter app.
configure Flutter native targets manually as:
- iOS (
Runnertarget):- Associated Domains:
applinks:links.yourco.com Info.plistURL types (CFBundleURLSchemes):yourapp
- Associated Domains:
- Android (
android/app/src/main/AndroidManifest.xml):- HTTPS App Links intent filter using host
links.yourco.com - Custom scheme intent filter using scheme
yourapp
- HTTPS App Links intent filter using host
API #
| Method | Description |
|---|---|
configure(config) |
Initialize the SDK. |
getInitialLink() |
Get the payload that launched the app. |
onLink (Stream) |
Stream of payloads while the app is running. |
claimDeferredIfAvailable() |
Pasteboard (iOS) / Install Referrer (Android). |
track(event, {properties}) |
Send analytics events. |
setUserId(userId) |
Associate a user ID. |
setAdvertisingConsent(granted) |
Toggle Ad ID inclusion. |
setReady() |
Signal readiness to process queued links. |
debugVisitUrl(url, {headers}) |
Debug helper for testing link resolution. |
Config fields #
| Field | Type | Default | Description |
|---|---|---|---|
appId |
String? |
— | App identifier. |
appKey |
String? |
— | Optional read-only key. |
sendDeviceInfo |
bool |
true |
Include device metadata. |
includeVendorId |
bool |
true |
Include vendor identifier. |
includeAdvertisingId |
bool |
false |
Include Ad ID (after consent). |
debug |
bool |
false |
Enable verbose native logs. |
Instance-based client #
final client = LinkMeClient();
await client.configure(const LinkMeConfig(appId: 'app_123'));
Use LinkMeClient for dependency injection or test-friendly patterns. It mirrors the LinkMe API.
Docs #
- Hosted docs: https://li-nk.me/resources/developer/setup/flutter
- Android troubleshooting: See Android Troubleshooting
License #
Apache-2.0