Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 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
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
- Updated iOS SDK from 6.17.9 to 6.18.0
- Updated iOS Purchase Connector from 6.17.9 to 6.18.0
- Fixed Android warm-app deep link consumption race so `DeepLinkListener` fires reliably when the app is resumed from a `VIEW` intent (forward new intents to `AppsFlyerLib` from the plugin's `onNewIntentListener` before the SDK's `onResume` auto-handler marks them `af_consumed`)
- Added Swift Package Manager (SPM) support for the Core iOS integration (`ios/appsflyer_sdk/Package.swift`), alongside continued full CocoaPods support — no behavior change for existing CocoaPods consumers. Purchase Connector remains CocoaPods-only for now, pending resolution of an upstream Flutter limitation ([flutter/flutter#161182](https://github.com/flutter/flutter/issues/161182)) that blocks conditionally-compiled plugin features under SPM.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good release note. The ticket also asks for the user-facing guides though, and doc/Installation.md and doc/PurchaseConnector.md still say nothing about SPM or that Purchase Connector needs CocoaPods.
Can we add that so PC users don't just hit a MissingPluginException with no explanation?


## 6.17.9

Expand Down
6 changes: 3 additions & 3 deletions docs/features/F-001-sdk-initialization.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ AppsflyerSdk.initSdk({registerConversionDataCallback, registerOnAppOpenAttributi
→ Android: AppsflyerSdkPlugin.onMethodCall("initSdk") → initSdk(call, result) [android/.../AppsflyerSdkPlugin.java]
→ AppsFlyerLib.getInstance().init(afDevKey, gcdListener, mContext)
→ instance.start(activity) [only if isManualStartMode == false]
→ iOS: AppsflyerSdkPlugin.handleMethodCall("initSdk") → initSdkWithCall:result: [ios/Classes/AppsflyerSdkPlugin.m]
→ iOS: AppsflyerSdkPlugin.handleMethodCall("initSdk") → initSdkWithCall:result: [ios/appsflyer_sdk/Sources/appsflyer_sdk/AppsflyerSdkPlugin.m]
→ [AppsFlyerLib shared].appsFlyerDevKey / .appleAppID / .isDebug = ...
→ [[AppsFlyerLib shared] start] [only if manualStart == NO]
```
Expand All @@ -45,8 +45,8 @@ AppsflyerSdk.initSdk({registerConversionDataCallback, registerOnAppOpenAttributi
| `lib/src/appsflyer_constants.dart` | String keys shared across Dart/native (`AF_DEV_KEY`, `AF_APP_Id`, `AF_MANUAL_START`, `AF_GCD`, `AF_UDL`, `PLUGIN_VERSION`) |
| `android/src/main/java/com/appsflyer/appsflyersdk/AppsflyerSdkPlugin.java` | `initSdk(call, result)` — native Android init, conditional auto-start |
| `android/src/main/java/com/appsflyer/appsflyersdk/AppsFlyerConstants.java` | Native Android mirror of the Dart string keys |
| `ios/Classes/AppsflyerSdkPlugin.m` | `initSdkWithCall:result:` — native iOS init, conditional auto-start |
| `ios/Classes/AppsflyerSdkPlugin.h` | `#define` string keys (`afDevKey`, `afAppId`, `afManualStart`, …) and `kAppsFlyerPluginVersion` |
| `ios/appsflyer_sdk/Sources/appsflyer_sdk/AppsflyerSdkPlugin.m` | `initSdkWithCall:result:` — native iOS init, conditional auto-start |
| `ios/appsflyer_sdk/Sources/appsflyer_sdk/include/appsflyer_sdk/AppsflyerSdkPlugin.h` | `#define` string keys (`afDevKey`, `afAppId`, `afManualStart`, …) and `kAppsFlyerPluginVersion` |

---

Expand Down
4 changes: 2 additions & 2 deletions docs/features/F-002-sdk-start.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ AppsflyerSdk.startSDK({onSuccess, onError}) [li
→ Android: AppsflyerSdkPlugin.startSDKwithHandler(call, result) [android/.../AppsflyerSdkPlugin.java]
→ AppsFlyerLib.getInstance().start(activity, null, AppsFlyerRequestListener)
→ onSuccess()/onError() → mMethodChannel.invokeMethod("onSuccess"|"onError")
→ iOS: AppsflyerSdkPlugin.startSDKwithHandler:result: [ios/Classes/AppsflyerSdkPlugin.m]
→ iOS: AppsflyerSdkPlugin.startSDKwithHandler:result: [ios/appsflyer_sdk/Sources/appsflyer_sdk/AppsflyerSdkPlugin.m]
→ [[AppsFlyerLib shared] startWithCompletionHandler:^(...)]
→ [_methodChannel invokeMethod:@"onSuccess"|@"onError" ...]
→ else:
Expand All @@ -46,7 +46,7 @@ AppsflyerSdk.startSDK({onSuccess, onError}) [li
|------|------|
| `lib/src/appsflyer_sdk.dart` | `startSDK()` — guards double-start via `_isSdkStarted`, chooses handler vs. plain path |
| `android/src/main/java/com/appsflyer/appsflyersdk/AppsflyerSdkPlugin.java` | `startSDK`, `startSDKwithHandler` — native start, posts `onSuccess`/`onError` back on the UI thread |
| `ios/Classes/AppsflyerSdkPlugin.m` | `startSDK:result:`, `startSDKwithHandler:result:` — native start, dispatches completion handler results on main queue |
| `ios/appsflyer_sdk/Sources/appsflyer_sdk/AppsflyerSdkPlugin.m` | `startSDK:result:`, `startSDKwithHandler:result:` — native start, dispatches completion handler results on main queue |

---

Expand Down
4 changes: 2 additions & 2 deletions docs/features/F-003-sdk-plugin-version-retrieval.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ AppsflyerSdk.getSDKVersion() [lib/src/a
→ _methodChannel.invokeMethod("getSDKVersion")
→ Android: AppsflyerSdkPlugin.onMethodCall("getSDKVersion") → getSdkVersion(result) [android/.../AppsflyerSdkPlugin.java]
→ AppsFlyerLib.getInstance().getSdkVersion()
→ iOS: AppsflyerSdkPlugin.handleMethodCall("getSDKVersion") → getSDKVersion:result: [ios/Classes/AppsflyerSdkPlugin.m]
→ iOS: AppsflyerSdkPlugin.handleMethodCall("getSDKVersion") → getSDKVersion:result: [ios/appsflyer_sdk/Sources/appsflyer_sdk/AppsflyerSdkPlugin.m]
→ [[AppsFlyerLib shared] getSDKVersion]

AppsflyerSdk.getVersionNumber() [lib/src/appsflyer_sdk.dart]
Expand All @@ -41,7 +41,7 @@ AppsflyerSdk.getVersionNumber() [lib/src/a
| `lib/src/appsflyer_sdk.dart` | `getSDKVersion()` (async, native round-trip), `getVersionNumber()` (sync, local constant) |
| `lib/src/appsflyer_constants.dart` | `PLUGIN_VERSION` constant returned by `getVersionNumber()` |
| `android/src/main/java/com/appsflyer/appsflyersdk/AppsflyerSdkPlugin.java` | `getSdkVersion(result)` — proxies `AppsFlyerLib.getInstance().getSdkVersion()` |
| `ios/Classes/AppsflyerSdkPlugin.m` | `getSDKVersion:result:` — proxies `[AppsFlyerLib shared] getSDKVersion]` |
| `ios/appsflyer_sdk/Sources/appsflyer_sdk/AppsflyerSdkPlugin.m` | `getSDKVersion:result:` — proxies `[AppsFlyerLib shared] getSDKVersion]` |

---

Expand Down
4 changes: 2 additions & 2 deletions docs/features/F-004-in-app-event-logging.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ AppsflyerSdk.logEvent(eventName, eventValues)
→ Android: AppsflyerSdkPlugin.onMethodCall("logEvent") → logEvent(call, result) [android/.../AppsflyerSdkPlugin.java]
→ AppsFlyerLib.getInstance().logEvent(mContext, eventName, eventValues)
→ result.success(true)
→ iOS: AppsflyerSdkPlugin.handleMethodCall("logEvent") → logEventWithCall:result: [ios/Classes/AppsflyerSdkPlugin.m]
→ iOS: AppsflyerSdkPlugin.handleMethodCall("logEvent") → logEventWithCall:result: [ios/appsflyer_sdk/Sources/appsflyer_sdk/AppsflyerSdkPlugin.m]
→ [[AppsFlyerLib shared] logEvent:eventName withValues:eventValues]
→ result(@YES)
```
Expand All @@ -39,7 +39,7 @@ AppsflyerSdk.logEvent(eventName, eventValues)
|------|------|
| `lib/src/appsflyer_sdk.dart` | `logEvent(String eventName, Map? eventValues)` — Dart public API, returns `Future<bool?>` |
| `android/src/main/java/com/appsflyer/appsflyersdk/AppsflyerSdkPlugin.java` | `logEvent(MethodCall, Result)` — reads `AF_EVENT_NAME`/`AF_EVENT_VALUES` args, forwards to `AppsFlyerLib.getInstance().logEvent(mContext, eventName, eventValues)`, always returns `result.success(true)` |
| `ios/Classes/AppsflyerSdkPlugin.m` | `logEventWithCall:result:` — reads `eventName`/`eventValues` (normalizes `NSNull` to `nil`), forwards to `[[AppsFlyerLib shared] logEvent:withValues:]`, always returns `result(@YES)`; comment `//TODO: Add callback handler` marks that no completion callback is wired |
| `ios/appsflyer_sdk/Sources/appsflyer_sdk/AppsflyerSdkPlugin.m` | `logEventWithCall:result:` — reads `eventName`/`eventValues` (normalizes `NSNull` to `nil`), forwards to `[[AppsFlyerLib shared] logEvent:withValues:]`, always returns `result(@YES)`; comment `//TODO: Add callback handler` marks that no completion callback is wired |
| `doc/InAppEvents.md` | Public integration guide with usage example |

---
Expand Down
4 changes: 2 additions & 2 deletions docs/features/F-005-ad-revenue-logging.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ AppsflyerSdk.logAdRevenue(AdRevenueData)
→ new AFAdRevenueData(monetizationNetwork, mediationNetwork, currencyIso4217Code, revenue)
→ AppsFlyerLib.getInstance().logAdRevenue(adRevenueData, additionalParameters)
→ result.success(true) | result.error(...) on invalid/unexpected input
→ iOS: AppsflyerSdkPlugin.handleMethodCall("logAdRevenue") → logAdRevenue:result: [ios/Classes/AppsflyerSdkPlugin.m]
→ iOS: AppsflyerSdkPlugin.handleMethodCall("logAdRevenue") → logAdRevenue:result: [ios/appsflyer_sdk/Sources/appsflyer_sdk/AppsflyerSdkPlugin.m]
→ getEnumValueFromString: maps the Dart enum's string value to AppsFlyerAdRevenueMediationNetworkType
→ [[AFAdRevenueData alloc] initWithMonetizationNetwork:mediationNetwork:currencyIso4217Code:eventRevenue:]
→ [[AppsFlyerLib shared] logAdRevenue:additionalParameters:]
Expand All @@ -45,7 +45,7 @@ AppsflyerSdk.logAdRevenue(AdRevenueData)
| `lib/src/appsflyer_ad_revenue_data.dart` | `AdRevenueData` model: `monetizationNetwork`, `mediationNetwork` (String), `currencyIso4217Code`, `revenue` (double), optional `additionalParameters` |
| `lib/src/appsflyer_constants.dart` | `AFMediationNetwork` enum with a `.value` getter mapping each case (e.g. `applovinMax`) to the exact lowercase/snake_case string (`"applovin_max"`) both native sides expect |
| `android/src/main/java/com/appsflyer/appsflyersdk/AppsflyerSdkPlugin.java` | `logAdRevenue(MethodCall, Result)` — validates required args via `requireNonNullArgument`, converts the mediation-network string to the native `MediationNetwork` enum via `.valueOf(...toUpperCase())`, builds `AFAdRevenueData`, calls `AppsFlyerLib.getInstance().logAdRevenue(...)` |
| `ios/Classes/AppsflyerSdkPlugin.m` | `logAdRevenue:result:` and `getEnumValueFromString:` — validates required args, maps the mediation-network string to `AppsFlyerAdRevenueMediationNetworkType` via an explicit `NSDictionary` lookup table, builds `AFAdRevenueData`, calls `[[AppsFlyerLib shared] logAdRevenue:additionalParameters:]` |
| `ios/appsflyer_sdk/Sources/appsflyer_sdk/AppsflyerSdkPlugin.m` | `logAdRevenue:result:` and `getEnumValueFromString:` — validates required args, maps the mediation-network string to `AppsFlyerAdRevenueMediationNetworkType` via an explicit `NSDictionary` lookup table, builds `AFAdRevenueData`, calls `[[AppsFlyerLib shared] logAdRevenue:additionalParameters:]` |
| `doc/API.md` | `logAdRevenue` / `AdRevenueData` / `AFMediationNetwork` public documentation and usage example |

---
Expand Down
4 changes: 2 additions & 2 deletions docs/features/F-006-custom-host-configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ AppsflyerSdk.setHost(hostPrefix, hostName) [lib/src
→ _methodChannel.invokeMethod("setHost", {hostPrefix, hostName})
→ Android: AppsflyerSdkPlugin.onMethodCall("setHost") → setHost(call, result) [android/.../AppsflyerSdkPlugin.java]
→ AppsFlyerLib.getInstance().setHost(hostPrefix, hostName)
→ iOS: AppsflyerSdkPlugin.handleMethodCall("setHost") → setHost:result: [ios/Classes/AppsflyerSdkPlugin.m]
→ iOS: AppsflyerSdkPlugin.handleMethodCall("setHost") → setHost:result: [ios/appsflyer_sdk/Sources/appsflyer_sdk/AppsflyerSdkPlugin.m]
→ [[AppsFlyerLib shared] setHost:hostName withHostPrefix:hostPrefix]

AppsflyerSdk.getHostName() / getHostPrefix()
Expand All @@ -43,7 +43,7 @@ AppsflyerSdk.getHostName() / getHostPrefix()
| `lib/src/appsflyer_sdk.dart` | `setHost`, `getHostName`, `getHostPrefix` |
| `android/src/main/java/com/appsflyer/appsflyersdk/AppsflyerSdkPlugin.java` | `setHost`, `getHostName`, `getHostPrefix` native handlers |
| `android/src/main/java/com/appsflyer/appsflyersdk/AppsFlyerConstants.java` | `AF_HOST_PREFIX`, `AF_HOST_NAME` argument key constants |
| `ios/Classes/AppsflyerSdkPlugin.m` | `setHost:result:`, `getHostName:result:`, `getHostPrefix:result:` native handlers |
| `ios/appsflyer_sdk/Sources/appsflyer_sdk/AppsflyerSdkPlugin.m` | `setHost:result:`, `getHostName:result:`, `getHostPrefix:result:` native handlers |

---

Expand Down
2 changes: 1 addition & 1 deletion docs/features/F-007-device-id-collection-optout.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ AppsflyerSdk.setCollectAndroidId(isCollect) [lib/src
→ Android: AppsflyerSdkPlugin.onMethodCall("setCollectAndroidId") → setCollectAndroidId(call, result) [android/.../AppsflyerSdkPlugin.java]
→ AppsFlyerLib.getInstance().setCollectAndroidID(isCollect)
```
No iOS branch exists for either method name in `ios/Classes/AppsflyerSdkPlugin.m`'s `handleMethodCall:` — on iOS these calls fall through to `result(FlutterMethodNotImplemented)`.
No iOS branch exists for either method name in `ios/appsflyer_sdk/Sources/appsflyer_sdk/AppsflyerSdkPlugin.m`'s `handleMethodCall:` — on iOS these calls fall through to `result(FlutterMethodNotImplemented)`.

---

Expand Down
2 changes: 1 addition & 1 deletion docs/features/F-008-manual-imei-android-id-override.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ AppsflyerSdk.setAndroidIdData(androidId) [lib/src
→ Android: AppsflyerSdkPlugin.onMethodCall("setAndroidIdData") → setAndroidIdData(call, result) [android/.../AppsflyerSdkPlugin.java]
→ AppsFlyerLib.getInstance().setAndroidIdData(androidId)
```
No iOS branch exists for either method name in `ios/Classes/AppsflyerSdkPlugin.m`'s `handleMethodCall:`.
No iOS branch exists for either method name in `ios/appsflyer_sdk/Sources/appsflyer_sdk/AppsflyerSdkPlugin.m`'s `handleMethodCall:`.

---

Expand Down
4 changes: 2 additions & 2 deletions docs/features/F-009-min-time-between-sessions.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ AppsflyerSdk.setMinTimeBetweenSessions(seconds) [lib/sr
→ _methodChannel.invokeMethod("setMinTimeBetweenSessions", {'seconds': seconds})
→ Android: AppsflyerSdkPlugin.onMethodCall("setMinTimeBetweenSessions") → setMinTimeBetweenSessions(call, result) [android/.../AppsflyerSdkPlugin.java]
→ AppsFlyerLib.getInstance().setMinTimeBetweenSessions(seconds)
→ iOS: AppsflyerSdkPlugin.handleMethodCall("setMinTimeBetweenSessions") → setMinTimeBetweenSessions:result: [ios/Classes/AppsflyerSdkPlugin.m]
→ iOS: AppsflyerSdkPlugin.handleMethodCall("setMinTimeBetweenSessions") → setMinTimeBetweenSessions:result: [ios/appsflyer_sdk/Sources/appsflyer_sdk/AppsflyerSdkPlugin.m]
→ [AppsFlyerLib shared].minTimeBetweenSessions = seconds
```

Expand All @@ -38,7 +38,7 @@ AppsflyerSdk.setMinTimeBetweenSessions(seconds) [lib/sr
|------|------|
| `lib/src/appsflyer_sdk.dart` | `setMinTimeBetweenSessions(int)` — asserts non-negative seconds, dispatches to channel |
| `android/src/main/java/com/appsflyer/appsflyersdk/AppsflyerSdkPlugin.java` | `setMinTimeBetweenSessions` native handler |
| `ios/Classes/AppsflyerSdkPlugin.m` | `setMinTimeBetweenSessions:result:` native handler (direct property assignment) |
| `ios/appsflyer_sdk/Sources/appsflyer_sdk/AppsflyerSdkPlugin.m` | `setMinTimeBetweenSessions:result:` native handler (direct property assignment) |

---

Expand Down
4 changes: 2 additions & 2 deletions docs/features/F-010-currency-code-setting.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ AppsflyerSdk.setCurrencyCode(currencyCode)
→ Android: AppsflyerSdkPlugin.onMethodCall("setCurrencyCode") → setCurrencyCode(call, result) [android/.../AppsflyerSdkPlugin.java]
→ AppsFlyerLib.getInstance().setCurrencyCode(currencyCode)
→ result.success(null)
→ iOS: AppsflyerSdkPlugin.handleMethodCall("setCurrencyCode") → setCurrencyCode:result: [ios/Classes/AppsflyerSdkPlugin.m]
→ iOS: AppsflyerSdkPlugin.handleMethodCall("setCurrencyCode") → setCurrencyCode:result: [ios/appsflyer_sdk/Sources/appsflyer_sdk/AppsflyerSdkPlugin.m]
→ [[AppsFlyerLib shared] setCurrencyCode:currencyCode]
→ result(nil)
```
Expand All @@ -39,7 +39,7 @@ AppsflyerSdk.setCurrencyCode(currencyCode)
|------|------|
| `lib/src/appsflyer_sdk.dart` | `setCurrencyCode(String currencyCode)` — platform-agnostic Dart API, `void` |
| `android/src/main/java/com/appsflyer/appsflyersdk/AppsflyerSdkPlugin.java` | `setCurrencyCode(MethodCall, Result)` — forwards to `AppsFlyerLib.getInstance().setCurrencyCode(currencyCode)` |
| `ios/Classes/AppsflyerSdkPlugin.m` | `setCurrencyCode:result:` — forwards to `[[AppsFlyerLib shared] setCurrencyCode:]` |
| `ios/appsflyer_sdk/Sources/appsflyer_sdk/AppsflyerSdkPlugin.m` | `setCurrencyCode:result:` — forwards to `[[AppsFlyerLib shared] setCurrencyCode:]` |
| `doc/API.md` | Public documentation for `setCurrencyCode` |

---
Expand Down
4 changes: 2 additions & 2 deletions docs/features/F-011-tcf-dma-automatic-consent-collection.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ AppsflyerSdk.enableTCFDataCollection(shouldCollect) [lib/sr
→ _methodChannel.invokeListMethod("enableTCFDataCollection", {'shouldCollect': shouldCollect})
→ Android: AppsflyerSdkPlugin.onMethodCall("enableTCFDataCollection") → enableTCFDataCollection(call, result) [android/.../AppsflyerSdkPlugin.java]
→ AppsFlyerLib.getInstance().enableTCFDataCollection(shouldCollect)
→ iOS: AppsflyerSdkPlugin.handleMethodCall("enableTCFDataCollection") → enableTCFDataCollection:result: [ios/Classes/AppsflyerSdkPlugin.m]
→ iOS: AppsflyerSdkPlugin.handleMethodCall("enableTCFDataCollection") → enableTCFDataCollection:result: [ios/appsflyer_sdk/Sources/appsflyer_sdk/AppsflyerSdkPlugin.m]
→ [[AppsFlyerLib shared] enableTCFDataCollection:shouldCollect]
```

Expand All @@ -37,7 +37,7 @@ AppsflyerSdk.enableTCFDataCollection(shouldCollect) [lib/sr
|------|------|
| `lib/src/appsflyer_sdk.dart` | `enableTCFDataCollection(bool)` |
| `android/src/main/java/com/appsflyer/appsflyersdk/AppsflyerSdkPlugin.java` | `enableTCFDataCollection` native handler |
| `ios/Classes/AppsflyerSdkPlugin.m` | `enableTCFDataCollection:result:` native handler |
| `ios/appsflyer_sdk/Sources/appsflyer_sdk/AppsflyerSdkPlugin.m` | `enableTCFDataCollection:result:` native handler |
| `doc/DMA.md` | Integration guide documenting the required manual-start + CMP sequencing |

---
Expand Down
6 changes: 3 additions & 3 deletions docs/features/F-012-manual-gdpr-dma-consent-api.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ AppsflyerSdk.setConsentData(AppsFlyerConsent consentData) [DEPRECATED]
→ Android: AppsflyerSdkPlugin.onMethodCall("setConsentData") → setConsentData(call, result) [android/.../AppsflyerSdkPlugin.java]
→ new AppsFlyerConsent.forGDPRUser(...) | AppsFlyerConsent.forNonGDPRUser()
→ AppsFlyerLib.getInstance().setConsentData(consentData)
→ iOS: AppsflyerSdkPlugin.handleMethodCall("setConsentData") → setConsentData:result: [ios/Classes/AppsflyerSdkPlugin.m]
→ iOS: AppsflyerSdkPlugin.handleMethodCall("setConsentData") → setConsentData:result: [ios/appsflyer_sdk/Sources/appsflyer_sdk/AppsflyerSdkPlugin.m]
→ [[AppsFlyerConsent alloc] initForGDPRUserWith...] | initWithNonGDPRUser
→ [[AppsFlyerLib shared] setConsentData:consentData]

Expand All @@ -36,7 +36,7 @@ AppsflyerSdk.setConsentDataV2({isUserSubjectToGDPR, consentForDataUsage, consent
→ Android: AppsflyerSdkPlugin.onMethodCall("setConsentDataV2") → setConsentDataV2(call, result) → getAppsFlyerConsentFromCall(call) [android/.../AppsflyerSdkPlugin.java]
→ new AppsFlyerConsent(isUserSubjectToGDPR, consentForDataUsage, consentForAdsPersonalization, hasConsentForAdStorage)
→ AppsFlyerLib.getInstance().setConsentData(consent)
→ iOS: AppsflyerSdkPlugin.handleMethodCall("setConsentDataV2") → setConsentDataV2:result: [ios/Classes/AppsflyerSdkPlugin.m]
→ iOS: AppsflyerSdkPlugin.handleMethodCall("setConsentDataV2") → setConsentDataV2:result: [ios/appsflyer_sdk/Sources/appsflyer_sdk/AppsflyerSdkPlugin.m]
→ [[AppsFlyerConsent alloc] initWithIsUserSubjectToGDPR:...hasConsentForAdStorage:...]
→ [[AppsFlyerLib shared] setConsentData:consentData]
```
Expand All @@ -49,7 +49,7 @@ AppsflyerSdk.setConsentDataV2({isUserSubjectToGDPR, consentForDataUsage, consent
| `lib/src/appsflyer_consent.dart` | `AppsFlyerConsent` model — `forGDPRUser`/`nonGDPRUser` factories, `toMap()` (used by deprecated V1 API only) |
| `lib/src/appsflyer_sdk.dart` | `setConsentData` (`@Deprecated`), `setConsentDataV2` |
| `android/src/main/java/com/appsflyer/appsflyersdk/AppsflyerSdkPlugin.java` | `setConsentData` (deprecated), `setConsentDataV2`, `getAppsFlyerConsentFromCall` |
| `ios/Classes/AppsflyerSdkPlugin.m` | `setConsentData:result:` (deprecated), `setConsentDataV2:result:` |
| `ios/appsflyer_sdk/Sources/appsflyer_sdk/AppsflyerSdkPlugin.m` | `setConsentData:result:` (deprecated), `setConsentDataV2:result:` |
| `doc/DMA.md` | Full integration guide for both the CMP-automatic (F-011) and manual (this feature) consent paths |

---
Expand Down
Loading
Loading