This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Flutter plugin (marfeel_sdk) that bridges the native Marfeel Compass analytics SDK for iOS and Android. It provides Dart APIs for page/screen tracking, multimedia (video/audio) tracking, scroll tracking, conversion events, user segmentation, and consent management.
# Run all tests
flutter test
# Run a single test file
flutter test test/compass_tracking_test.dart
# Analyze/lint
flutter analyze
# Run the example app
cd example && flutter runThe plugin uses Flutter's MethodChannel (com.marfeel.sdk/compass) for Dart-to-native communication.
marfeel_sdk.dart— barrel export filesrc/compass_tracking.dart— main tracking API (static methods: initialize, trackNewPage, trackScreen, stopTracking, user/session/page vars, conversions, consent, segments)src/multimedia_tracking.dart— video/audio tracking (initializeItem, registerEvent)src/compass_scroll_view.dart— widget wrappingSingleChildScrollViewthat automatically reports scroll percentage viaCompassTracking.updateScrollPercentagesrc/types.dart— enums and data classes (UserType, ConversionScope, MultimediaType, MultimediaEvent, ConversionOptions, MultimediaMetadata, RFV)src/cdp/cdp.dart—Cdpfacade: CDP identity link, master_id, segments (addCdpSegment/setCdpSegments/…), and meters. Gated byinitialize(enableCdp: true)+ consent on the native side; all calls are async over the channel.src/cdp/models.dart— CDP data classes (CdpData, CdpRfv, MeterState, MeterWindow, MeterNotFoundError). The CDP logic lives in the native SDKs; Dart only carries these values.src/method_channel.dart— sharedMethodChannelconstant
- Android (
android/src/.../MarfeelSdkPlugin.kt) — Kotlin plugin implementingFlutterPlugin,MethodCallHandler,ActivityAware. Dispatches all method channel calls to nativeCompassTracking/MultimediaTrackingon the main thread viaHandler(Looper.getMainLooper()). - iOS (
ios/Classes/MarfeelSdkPlugin.swift) — Swift plugin mapping method channel calls toCompassTracker/CompassTrackerMultimedia.
- Android:
com.marfeel.compass:views:1.18.2(fromhttps://repositories.mrf.io/nexus/repository/mvn-marfeel-public/) - iOS:
MarfeelSDK-iOS ~> 2.18.12(CocoaPods)
Tests use flutter_test with mock method channel handlers (TestDefaultBinaryMessengerBinding). Each public Dart class has a corresponding test file in test/. Tests verify correct method names, argument serialization, and widget behavior — they do not call native code.
- Flutter ≥ 3.22.0, Dart SDK ≥ 3.4.0
- Android: minSdk 23, compileSdk 34, Java/Kotlin 17
- iOS: 13.0+, Swift 5.0