Skip to content

Added Optimize Plugin for Flutter - #167

Merged
akhiljain1907 merged 24 commits into
stagingfrom
feat/optimize-plugin
Jul 29, 2026
Merged

Added Optimize Plugin for Flutter#167
akhiljain1907 merged 24 commits into
stagingfrom
feat/optimize-plugin

Conversation

@akhiljain1907

Copy link
Copy Markdown
Contributor

Description

Related Issue

Motivation and Context

How Has This Been Tested?

Screenshots (if appropriate):

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

  • I have signed the Adobe Open Source CLA.
  • My code follows the code style of this project.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have read the CONTRIBUTING document.
  • I have added tests to cover my changes.
  • All new and existing tests passed.

navratan-soni and others added 8 commits June 5, 2026 15:58
Updating main from staging
Introduces a complete Flutter method-channel plugin wrapping the native
AEP Optimize iOS (AEPOptimize ~>5.0) and Android (optimize via BOM 3.x)
SDKs. Multiple native API overloads (no-callback, callback, callback+timeout)
are consolidated into single Dart methods with optional parameters.

Dart API: Optimize.updatePropositions, getPropositions, onPropositionsUpdate,
clearCachedPropositions. Models: DecisionScope, OptimizeProposition, Offer,
OfferType. Offer tracking: displayed(), tapped(), generateDisplayInteractionXdm(),
generateTapInteractionXdm(). Proposition: generateReferenceXdm().

Includes 636 lines of Dart unit tests covering API invocation, response
decoding, model roundtrips, enum conversions, listener callbacks, and
edge cases.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… reference which becomes null once offer are retrieved and tracking calls are performed later on it.
…e-plugin

Add flutter_aepoptimize plugin for Adobe Optimize SDK
-Xmx1536M → -Xmx4096M — gives Gradle enough heap to complete the build with the added Optimize plugin dependencies.
enableJetifier=true → false — Jetifier is no longer needed since all AEP SDKs use AndroidX natively. Disabling it removes the JetifyTransform step that was OOM-ing and speeds up builds.
…e-plugin

minor changes for CI fix for AEP Optimize Plugin feature PR
…e-plugin

Addressed Code Review Comments for Optimize Plugin
The propositions array was inadvertently removed in acc612d while addressing code review comments. Without it, the loop-scoped proposition objects are deallocated before the SDK batch call, causing the weak Offer.proposition references to become nil and producing empty propositions in the Edge tracking payload.
…e-plugin

Restore proposition retention in batch tracking methods
…pty payloads

Offer holds a SoftReference to its parent proposition on Android (weak on iOS).
In batch methods, the loop-scoped variable is the only strong reference — once
it goes out of scope, GC can clear the SoftReference, producing empty tracking
payloads. Added the same retention pattern already applied on iOS, along with
explanatory comments on both platforms.
…e-plugin

Android - retain propositions in batch tracking methods to prevent empty payloads
The native SDK includes activity and placement in every tracking XDM payload,
but the Flutter bridge was not carrying these fields from native → Dart → native.
This caused reconstructed propositions to have empty activity/placement, producing
tracking payloads that differ from pure native apps. Added the pass-through across
Dart model, iOS bridge, and Android bridge so the full proposition context is
preserved in tracking calls.
…e-plugin

Added github documentation for Optimize Flutter Plugin
@akhiljain1907
akhiljain1907 changed the base branch from main to staging July 29, 2026 17:34
@akhiljain1907
akhiljain1907 merged commit 44e54dc into staging Jul 29, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants