Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 45 additions & 40 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -287,53 +287,58 @@ jobs:
continue-on-error: ${{ matrix.build_system == 'spm' }}
run: flutter build ios --debug --no-codesign --simulator

build-ios-spm-pure:
name: Build iOS SPM-Pure Example
needs: [ lint, format, pub-dry-run ]
runs-on: macos-14
timeout-minutes: 20
# TEMPORARY (MSDK-4832): see build-ios's spm variant above for why.
continue-on-error: true

steps:
- name: Setup code
uses: maxim-lobanov/setup-xcode@ed7a3b1fda3918c0306d1b724322adc0b8cc0a90 # v1
with:
xcode-version: '16.2'
- name: Checkout code
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Flutter
uses: subosito/flutter-action@1a449444c387b1966244ae4d4f8c696479add0b2 # v2
with:
flutter-version: '3.41.6'
channel: 'stable'
- name: Enable Swift Package Manager
run: flutter config --enable-swift-package-manager
- name: Get dependencies
working-directory: ./example_spm
run: flutter pub get
- name: Build
working-directory: ./example_spm
run: flutter build ios --debug --no-codesign --simulator
- name: Assert no CocoaPods artifacts were introduced
working-directory: ./example_spm
run: |
if [ -d ios/Pods ]; then
echo "::error::ios/Pods exists - a dependency reintroduced a CocoaPods requirement in the pure-SPM sample app"
exit 1
fi
if grep -q "Pods" ios/Flutter/Debug.xcconfig; then
echo "::error::ios/Flutter/Debug.xcconfig references Pods - CocoaPods was integrated unexpectedly"
exit 1
fi
# TEMPORARILY DISABLED (MSDK-4832): UsercentricsUI.xcframework 2.33.0 still ships only an
# ios-arm64-simulator slice while Usercentrics.xcframework ships a fat arm64+x86_64 simulator
# slice, so SwiftPM can't resolve any UsercentricsUI type ("Cannot find type 'BannerSettings'
# in scope"). Native XCFramework packaging defect, not fixable from flutter-sdk. Re-enable (and
# add back to `release.needs`) once MSDK-4832 ships.
# build-ios-spm-pure:
# name: Build iOS SPM-Pure Example
# needs: [ lint, format, pub-dry-run ]
# runs-on: macos-14
# timeout-minutes: 20
# # TEMPORARY (MSDK-4832): see build-ios's spm variant above for why.
# continue-on-error: true
#
# steps:
# - name: Setup code
# uses: maxim-lobanov/setup-xcode@ed7a3b1fda3918c0306d1b724322adc0b8cc0a90 # v1
# with:
# xcode-version: '16.2'
# - name: Checkout code
# uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
# - name: Setup Flutter
# uses: subosito/flutter-action@1a449444c387b1966244ae4d4f8c696479add0b2 # v2
# with:
# flutter-version: '3.41.6'
# channel: 'stable'
# - name: Enable Swift Package Manager
# run: flutter config --enable-swift-package-manager
# - name: Get dependencies
# working-directory: ./example_spm
# run: flutter pub get
# - name: Build
# working-directory: ./example_spm
# run: flutter build ios --debug --no-codesign --simulator
# - name: Assert no CocoaPods artifacts were introduced
# working-directory: ./example_spm
# run: |
# if [ -d ios/Pods ]; then
# echo "::error::ios/Pods exists - a dependency reintroduced a CocoaPods requirement in the pure-SPM sample app"
# exit 1
# fi
# if grep -q "Pods" ios/Flutter/Debug.xcconfig; then
# echo "::error::ios/Flutter/Debug.xcconfig references Pods - CocoaPods was integrated unexpectedly"
# exit 1
# fi

# https://dart.dev/tools/pub/automated-publishing
release:
name: Release
permissions:
id-token: write # Required for flutter pub publish (OIDC automated publishing — cannot be removed)
if: startsWith(github.ref, 'refs/tags/')
needs: [ test-flutter, test-android, test-ios, build-android, build-ios, build-ios-spm-pure ]
needs: [ test-flutter, test-android, test-ios, build-android, build-ios ]
runs-on: ubuntu-latest
container: ghcr.io/cirruslabs/flutter:3.22.3
timeout-minutes: 20
Expand Down
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,14 @@
[Release Notes](https://docs.usercentrics.com/cmp_in_app_sdk/latest/about/history/)
### 2.33.0 – Oct 14, 2026
## Features
* **[TCF 2.4]** Added the new mandatory standard text to the Features category on the first and second layers (mobile and CTV), and removed the workaround for the Legitimate Interest special purpose (mobile + CTV)

## Fixes
* **[Android]** Fixed SDK initialization failing via the offline fallback on first launch when no languages cache exists, which surfaced as a misleading "wrong configuration / settingsID" error
* **[Android/iOS]** Fixed offline consent changes never being submitted to the backend
* **[Android/iOS — Apps Preview]** Fixed the forced/default language sticking to the first resolved value and ignoring later overrides, and fixed several issues in the mobile Apps preview
* **[iOS]** Fixed a blank gap and overlapping headers on the second layer after expanding a card (wrong section header height estimates)

### 2.32.0 – Sep 30, 2026
## Features
* **[PUR — Consent or Pay]** Added the Consent-or-Pay 1st-layer banner ("Reject & Subscribe" card, subscriber-login link, `onLoginClicked`/`onSubscribeClicked` callbacks), a setting to control TCF signal retention on rejection plus a subscription-lapse reset API, and a fix so Deny All on the 2nd layer without an active subscription redirects back to the 1st layer instead of silently force-consenting
Expand Down
2 changes: 1 addition & 1 deletion android/build.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
def usercentrics_version = "2.32.0"
def usercentrics_version = "2.33.0"

group 'com.usercentrics.sdk.flutter'
version usercentrics_version
Expand Down
22 changes: 8 additions & 14 deletions example/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -88,16 +88,12 @@ PODS:
- nanopb/decode (3.30910.0)
- nanopb/encode (3.30910.0)
- PromisesObjC (2.4.1)
- Sentry (8.58.4):
- Sentry/Core (= 8.58.4)
- Sentry/Core (8.58.4)
- Usercentrics (2.32.0):
- Sentry (~> 8.52)
- usercentrics_sdk (2.32.0):
- Usercentrics (2.33.0)
- usercentrics_sdk (2.33.0):
- Flutter
- UsercentricsUI (= 2.32.0)
- UsercentricsUI (2.32.0):
- Usercentrics (= 2.32.0)
- UsercentricsUI (= 2.33.0)
- UsercentricsUI (2.33.0):
- Usercentrics (= 2.33.0)
- webview_flutter_wkwebview (0.0.1):
- Flutter
- FlutterMacOS
Expand All @@ -119,7 +115,6 @@ SPEC REPOS:
- GoogleUtilities
- nanopb
- PromisesObjC
- Sentry
- Usercentrics
- UsercentricsUI

Expand All @@ -142,10 +137,9 @@ SPEC CHECKSUMS:
GoogleUtilities: 766ace00c6b10d8148408f329d10c4f051931850
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
PromisesObjC: 752c3227f599e3467650e47ea36f433eeb10c273
Sentry: 5321d74bdd28d6f6f8beaa1ca06f1fdc746bff49
Usercentrics: 7bc3a4042e492b9204ed137ce5c6806365e9e0e4
usercentrics_sdk: 6d1f9725f1902ffd63b1ab907c681052e0c37509
UsercentricsUI: 0bf3d1a5ff33d34ff98be8645cc0358bc213b37b
Usercentrics: 7be91756eee224a1326bdbc2a3662ccce8e4e9bf
usercentrics_sdk: f90438094e65208299ff202261219ab8136a7565
UsercentricsUI: ddd0025f20a50d287f5dd6c9cd64499ee26b4c8e
webview_flutter_wkwebview: 1821ceac936eba6f7984d89a9f3bcb4dea99ebb2

PODFILE CHECKSUM: 581a2ac2a2086d49335330c9671c962a6fa61351
Expand Down
2 changes: 1 addition & 1 deletion example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ packages:
path: ".."
relative: true
source: path
version: "2.32.0"
version: "2.33.0"
vector_math:
dependency: transitive
description:
Expand Down
2 changes: 1 addition & 1 deletion example_spm/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ packages:
path: ".."
relative: true
source: path
version: "2.32.0"
version: "2.33.0"
vector_math:
dependency: transitive
description:
Expand Down
2 changes: 1 addition & 1 deletion ios/usercentrics_sdk.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'usercentrics_sdk'
s.version = '2.32.0'
s.version = '2.33.0'
s.summary = 'Usercentrics Flutter SDK.'
s.description = <<-DESC
Usercentrics Flutter SDK.
Expand Down
14 changes: 2 additions & 12 deletions ios/usercentrics_sdk/Package.swift
Original file line number Diff line number Diff line change
@@ -1,25 +1,15 @@
// swift-tools-version: 5.9
import PackageDescription

// WORKAROUND (MSDK-4831): usercentrics-spm-sdk's published 2.32.0 tag has a corrupted
// Package.swift (invalid Sentry Cocoa version placeholder), which breaks `swift package
// resolve` for every SPM consumer, including this plugin. Pointing at vendored local copies
// (Vendor/usercentrics-spm-sdk, Vendor/usercentrics-spm-ui) with the placeholder fixed instead
// of the remote tags, until a corrected native SDK version is published. Fix tracked in
// mobile-sdk Jira MSDK-4831 / PR #2539, targeting a 2.32.1 patch — revert to the remote URLs
// below once that ships.
// .package(url: "https://bitbucket.org/usercentricscode/usercentrics-spm-ui", exact: "2.32.0"),
// .package(url: "https://bitbucket.org/usercentricscode/usercentrics-spm-sdk", exact: "2.32.0")

let package = Package(
name: "usercentrics_sdk",
platforms: [.iOS("11.0")],
products: [
.library(name: "usercentrics-sdk", targets: ["usercentrics_sdk"])
],
dependencies: [
.package(path: "Vendor/usercentrics-spm-ui"),
.package(path: "Vendor/usercentrics-spm-sdk")
.package(url: "https://bitbucket.org/usercentricscode/usercentrics-spm-ui", exact: "2.33.0"),
.package(url: "https://bitbucket.org/usercentricscode/usercentrics-spm-sdk", exact: "2.33.0")
],
targets: [
.target(
Expand Down
57 changes: 0 additions & 57 deletions ios/usercentrics_sdk/Vendor/usercentrics-spm-sdk/Package.swift

This file was deleted.

This file was deleted.

41 changes: 0 additions & 41 deletions ios/usercentrics_sdk/Vendor/usercentrics-spm-ui/Package.swift

This file was deleted.

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

This file was deleted.

This file was deleted.

Binary file not shown.

This file was deleted.

Binary file not shown.

This file was deleted.

Binary file not shown.

This file was deleted.

Binary file not shown.
Loading
Loading