LinkHopp Flutter SDK

Deep Linking, Deferred Deep Linking und Kampagnen-Tracking für Flutter.

Installation

dependencies:
  linkhopp: ^0.1.0

Quick Start (5 Minuten)

1. Initialisieren

import 'package:linkhopp/linkhopp.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await LinkHopp.init(apiKey: 'YOUR_API_KEY');

  runApp(MyApp());
}

Wenn ein User über einen LinkHopp-Link die App installiert, kann der ursprüngliche Link nach der Installation zugestellt werden:

@override
void initState() {
  super.initState();
  _checkDeferredLink();
}

Future<void> _checkDeferredLink() async {
  final link = await LinkHopp.checkDeferredLink();
  if (link != null) {
    // User kommt von Marketing-Link → navigiere zur richtigen Seite
    Navigator.pushNamed(context, link.path);

    // Metadaten auslesen
    print('Kampagne: ${link.campaign}');
    print('Source: ${link.utmSource}');
    print('Metadata: ${link.metadata}');
  }
}

Wenn die App bereits installiert ist und über einen Universal/App Link geöffnet wird:

@override
void initState() {
  super.initState();

  // Initial Link (App wurde über Link gestartet)
  LinkHopp.getInitialLink().then((link) {
    if (link != null) handleLink(link);
  });

  // Stream (App ist im Hintergrund, Link kommt rein)
  LinkHopp.handleLink((link) {
    handleLink(link);
  });
}

void handleLink(LinkHoppLink link) {
  Navigator.pushNamed(context, link.path);
}

iOS Setup

Füge Associated Domains zu deiner iOS-App hinzu:

  1. Xcode → Target → Signing & Capabilities → + Associated Domains
  2. Hinzufügen: applinks:linkhopp.com

Android Setup

Füge Intent Filter zu AndroidManifest.xml hinzu:

<intent-filter android:autoVerify="true">
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="https" android:host="linkhopp.com" />
</intent-filter>

API

Methode Beschreibung
LinkHopp.init(apiKey:) SDK initialisieren
LinkHopp.checkDeferredLink() Deferred Deep Link prüfen (einmalig nach Install)
LinkHopp.handleLink(callback) Live Deep Links empfangen
LinkHopp.getInitialLink() Initialen Link bei App-Start prüfen
Property Typ Beschreibung
destinationUrl String Ziel-URL / Deep Link
path String Extrahierter Pfad
metadata Map Frei definierbare Key-Values
campaign String? Kampagnen-Name
utmSource String? UTM Source
utmMedium String? UTM Medium
utmCampaign String? UTM Campaign
matchMethod String? referrer, clipboard, fingerprint, direct

Libraries

linkhopp
LinkHopp — Deep Linking SDK for Flutter