ketch_flutter 1.0.0 copy "ketch_flutter: ^1.0.0" to clipboard
ketch_flutter: ^1.0.0 copied to clipboard

Flutter wrapper around a WebView to load the Ketch Mobile SDK.

1.0.0 #

Changed (breaking)

  • getConsent() is now the server consent read and takes a ConsentConfig, matching the iOS and Android SDKs. The previous no-argument getConsent(), which read locally cached consent, is now getCachedConsent(). Existing no-argument calls will fail to compile; change them to getCachedConsent().

Deprecated

  • fetchConsent — use getConsent.

  • setConsentOnServer — use setConsent.

  • preferenceQRUrl — use getPreferenceQRUrl.

    The same three renames apply to HeadlessApiClient. Deprecated names still work and delegate to the new ones.

0.3.0 #

Added

  • Mobile advertising identifier resolution over the nativeResolve bridge: ketch_idfv resolves to IDFV on iOS (via device_info_plus), and ketch_aaid resolves to AAID on Android through a new native module. Both are in-memory and process-lifetime only - never persisted, so an OS-level reset is honored on next launch - and are excluded from getIdentities()/clearIdentities(), which only ever touch Ketch-managed identities.

Other

  • ketch_flutter now carries a small native Android module (AdIdentifiersPlugin, AaidReader) to read AAID. The Play Services ad-identifier dependency it needs is declared compileOnly, so it is invisible to consumers who don't add it themselves - no AD_ID permission or Play Data Safety impact on apps that don't opt in. See the README's "Enabling AAID" section for the two steps required to opt in.

0.2.0 #

Added

  • Headless API. Consent, rights, subscriptions and configuration can now be read and written without mounting a KetchView, via HeadlessApiClient and new KetchController methods: getRegion, getJurisdiction, getBootstrapConfiguration, getFullConfiguration, fetchConsent, setConsentOnServer, invokeRight, getSubscriptions, setSubscriptions and preferenceQRUrl.
  • KetchController.trigger(), for invoking a ketch-tag function by name.
  • Region and jurisdiction are now dispatched from the tag, through the existing onRegionUpdated and onJurisdictionUpdated callbacks.
  • onWillShowExperience callback.
  • Typed accessors for the stored privacy strings: getTCFTCString, getUSPrivacyString, getGPPHDRGppString, and getSavedString for arbitrary keys.
  • KetchController.dispose(), which releases the headless HTTP client. Hosts own the controller and should call it.
  • Ketch-managed identity resolution over the native bridge: ketch-tag can now ask the SDK to resolve a stored identity value instead of minting one in JS. KetchController gains setIdentities, getIdentities, and clearIdentities - identity/managed-key membership is derived from storage (the swb_ prefix) rather than a session cache, so getIdentities and clearIdentities both work correctly on a cold launch, before any resolve has happened.
  • Headless API calls (fetchConsent, setConsentOnServer, invokeRight, getSubscriptions, setSubscriptions) now auto-fill identities from getIdentities() when the caller leaves it unset, instead of requiring every call site to fetch and thread it through by hand. identities is optional on ConsentConfig, ConsentUpdate, InvokeRightRequest, and SubscriptionsRequest (non-breaking - existing callers passing it explicitly are unaffected).

Breaking

  • Consent.purposes is now Map<String, bool>. Values are parsed on the way in, so callers no longer need to coerce them.
  • SubscriptionsRequest.topics and .controls are typed, using the new SubscriptionStatus and ControlImpact enums. The previous types could not express a payload the API accepts.
  • SubscriptionsResponse is its own class rather than a typedef for SubscriptionsRequest.
  • SubscriptionsRequest.fromJson is removed; use SubscriptionsResponse.fromJson.

Other

  • Declare supported platforms, restoring the Android listing on pub.flutter-io.cn.
  • Remove KetchController.markReady() and the _ready completer it set — dead code, no callers.
  • Mark bridge-internal methods (updateLastConsent, updateLastProtocols, onConfigLoaded, setExperienceVisible, resetBridgeState) and HeadlessApiClient.getLocation as @internal.
  • Fix PrivacyProtocol's wire values, which previously emitted React Native's enum member names ('USPrivacy', 'TCF', 'GPP') instead of its actual values ('usPrivacy', 'tcf', 'gpp').
  • Remove two unreachable bridge switch cases, _logConsent and _logProtocols.

0.1.0 #

  • Add app_tracking_transparency dependency.

0.0.1 / 0.0.2 #

No changelog was kept for these releases.