trackLink

Use the below function to pass deeplink URLs to emit tracking data.

Pass all deeplink URL in their final form including all URL parameters. If this is a shortened URL (e.g. URL) - please resolve/convert to the final URL before passing.

Wunderkind.shared.trackLink(URL linkUrl)
Wunderkind.getInstance().trackLink(URL linkUrl)
Wunderkind().trackLink(URL linkUrl)
Wunderkind.trackLink(URL linkUrl)

Example Implementation

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        
        handleIntent(intent)
    }
    
    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        handleIntent(intent)
    }
    
    private fun handleIntent(intent: Intent) {
        val action = intent.action
        val data = intent.data
        
        if (Intent.ACTION_VIEW == action && data != null) {
            val deeplink = URL(data.toString())
            Wunderkind.getInstance().trackLink(data)
        }
    }
}
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
    var window: UIWindow?
    
    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        if let url = ConnectionOptions.URLContexts.first?.url { Wunderkind.shared.trackLink(url) }
        }
    }
    
    func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
        if let url = URLContexts.first?.url { Wunderkind.shared.trackLink(url) }
        }
    }
}
const DeeplinkHandler = () => {
    useEffect(() => {
        const getUrl = async () => {
            const initialUrl = await Linking.getInitialURL();
            if (initialUrl) {
                const url = new URL(initialUrl);
                Wunderkind.trackLink(url);
            }
        };
        
        getUrl();
        
        const listener = Linking.addEventListener('url', (event) => {
            const url = new URL(event.url);
            Wunderkind.trackLink(url);
        });
        
        return () => {
            listener.remove();
        };
    }, []);
};

export default DeeplinkHandler;
class DeeplinkHandler extends StatefulWidget {
  const DeeplinkHandler({Key? key, required this.child}) : super(key: key);
  
  final Widget child;
  
  @override
  _DeeplinkHandlerState createState() => _DeeplinkHandlerState();
}

class _DeeplinkHandlerState extends State<DeeplinkHandler> {
  StreamSubscription? _streamSubscription;

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

  Future<void> initPlatformState() async {
    try {
      String? initialLink = await getInitialLink();
      if (initialLink != null) {
        Uri url = Uri.parse(initialLink);
        Wunderkind().trackLink(url);
      }
      
      _streamSubscription = linkStream.listen((String? link) {
        if (link != null) {
          Uri url = Uri.parse(link);
          Wunderkind().trackLink(url);
        }
      });
    } catch (e) {
      // Handle exception
    }
  }

  @override
  void dispose() {
    _streamSubscription?.cancel();
    super.dispose();
  }
  
  @override
  Widget build(BuildContext context) {
    return widget.child;
  }
}