dynalink_flutter 0.0.18
dynalink_flutter: ^0.0.18 copied to clipboard
Flutter plugin for Dynalink
0.0.18 #
- Fix — Android App Links / iOS Universal Links returned no
actualUrl. When the OS opens the app directly on a verifiedhttps://{prefix}.dynalink.app/{code}link, the fingerprint page never runs, so the SDK resolves the link throughGET /api/links/{code}(Case A). That response is the raw DB row, wherefallback_url,social_title,social_description,social_imageand the campaign fields are nullable —LinkDetails.fromJsonthrew on the null, the error was swallowed, and noDynalinkEventwas ever emitted. Parsing is now null-tolerant. - API errors in
DynalinkRemoteServiceare logged instead of silently swallowed. _extractIdentifierignores empty path segments (trailing slash URLs).- Clicks are now counted on the App Link / Universal Link path. The SDK calls
the new
POST /api/links/{code}/click(with the same fingerprint string the web loading page computes) soclicked_count, unique visitors and geo enrichment stay correct when the OS opens the app without going through the browser. - Custom domain support in link handling. The old
host.contains('dynalink.app')filter dropped every link served from a custom domain — and matched lookalike hosts. Replaced byLinkDomains: exact domain/subdomain match ondynalink.app, on the domains passed to the newinitialize(customDomains: [...])parameter, on the domains returned byGET /api/projects/link-domains(resolved once, lazily), and on any URL carryingdyna_code/actual_url.
0.0.17 #
- prioritize attribution API data for UTM parameters
0.0.14 #
- Added fallback for clickids when the app open directly
0.0.13 #
New features #
- Attribution API — new
AttributionResultmodel and two public methods:getAttributionByFingerprint(fingerprint)— query attribution by device fingerprintgetAttributionByCode(code)— query attribution by DynaLink short code
- Click ID support —
DynalinkEventnow carries all major ad-network click IDs captured during the pre-install browser session:gclid,gbraid(Google Ads),fbclid+fbclidCapturedAt(Meta),ttclid(TikTok),twclid(X/Twitter),liFatId(LinkedIn) - Persisted click ID getters —
getLastGclid(),getLastGbraid(),getLastFbclid(),getLastTtclid(),getLastTwclid(),getLastLiFatId()read the most recent values from SharedPreferences, available even if the stream listener was not active at attribution time attributedAttimestamp onDynalinkEventandAttributionResultindicating when the backend confirmed the install match
Improvements #
- iOS fingerprint flow now calls the attribution API after
markAsProcessedto populate click IDs on the emitted event - Deep link (Case A) flow now calls the attribution API after fetching link details by code
- SharedPreferences keys are namespaced with
dynalink_prefix to avoid collision with app keys CreateDynalinkFormandAttributionResultare now exported from the top-leveldynalink_flutter.dart
0.0.12 #
- Updated dependencies
0.0.11 #
- Try to read link from clipboard on ios
0.0.10 #
- Handle install referrer only once
0.0.9 #
- Bug fixes
0.0.8 #
- Fixed dyna_code parsing
0.0.7 #
- Bumped rxdrat to
0.28.0
0.0.6 #
- Bug fixes
- Introduced
is_deeplinkfield inCreateDynalinkFormto indicate if the link is a deep link or not
0.0.5 #
- Migrated from StreamController to BehaviorSubject, so that previous emitted link is triggered when the app launches
0.0.4 #
- Bug fixes
0.0.3 #
Breaking Changes: #
-
Changed the way plugin is initialized, you should now pass credentials when initializing Dynalink:
await Dynalink.initialize( publicKey: credentials['public_key']!, projectId: credentials['project_id']!, ); -
Dynalink now uses instance to access methods:
Dynalink.instance.dynamicLinkStream
0.0.2 #
- updated example
0.0.1 #
- initial release.