Skip to content

Conversation

@k-antipochkin
Copy link
Contributor

@k-antipochkin k-antipochkin commented Oct 24, 2025

User description

Description of Changes

Add In-App Message Interceptor API OptimoveInApp.setInAppMessageInterceptor(_:) to allow apps to control when in-app messages are shown or suppressed based on custom logic. If no decision is made within the timeout (default 5s), the message is automatically suppressed.

Breaking Changes

  • None

Release Checklist

Prepare:

  • Detail any breaking changes. Breaking changes require a new major version number
  • Check pod lib lint passes
  • Update any relevant sections of the repository wiki pages on a branch

Bump versions in:

  • OptimoveCore.podspec

  • OptimoveNotificationServiceExtension.podspec

  • OptimoveSDK.podspec

  • OptimoveCore/Sources/Classes/Constants/SDKVersion.swift

  • README.md

  • CHANGELOG.md

  • Update major version numbers in wiki (basic integration + push guides)

Integration tests

T&T Only

  • Init SDK with only T&T credentials
  • Associate customer
  • Associate email
  • Track events

Mobile Only

  • Init SDK with all credentials
  • Track events
  • Associate customer (verify both backends)
  • Register for push
  • Opt-in for In-App
  • Send test push
  • Send test In-App
  • Receive / trigger deep link handler (In-App/Push)
  • Receive / trigger the content extension, render image and action buttons for push
  • Verify push opened handler

Deferred Deep Links

  • With app installed, trigger deep link handler
  • With app uninstalled, follow deep link, install test bundle, verify deep link read from Clipboard, trigger deep link handler

Combined

  • Track event for T&T, verify push received
  • Trigger scheduled campaign, verify push received
  • Trigger scheduled campaign, verify In-App received

Release:

  • Squash and merge to master
  • Delete branch once merged
  • Create tag from master matching chosen version
  • Run pod trunk push to publish to CocoaPods

Post Release:

  • Push wiki pages to master

Generated description

Below is a concise technical summary of the changes proposed in this PR:
Introduce a new In-App Message Interceptor API, OptimoveInApp.setInAppMessageInterceptor(_:), allowing applications to control the display or suppression of in-app messages based on custom logic. Refactor the InAppPresenter to integrate this interception mechanism, ensuring robust and thread-safe handling of message presentation and queuing.

TopicDetails
In-App Message Interception Implement the OptimoveInApp.setInAppMessageInterceptor(_:) API, enabling custom logic to decide whether to show or suppress in-app messages, with a default 5-second timeout for decision. This includes adding InAppMessageInterceptor and InAppMessageInterceptorDecision protocols, and integrating the interception flow within InAppPresenter by introducing an InterceptionDecision class and methods like applyMessageInterception, handleShowDecision, and handleSuppressDecision. Additionally, refactor internal message handling in InAppPresenter to use ensureMain and assertOnMainThread for improved thread safety and clarity, removing the messageQueueLock semaphore.
Modified files (2)
  • OptimoveSDK/Sources/Classes/Optimobile/OptimoveInApp.swift
  • OptimoveSDK/Sources/Classes/Optimobile/InApp/InAppPresenter.swift
Latest Contributors(2)
UserCommitDate
konstantin_a@optimove.comFixed-an-issue-fix-wit...October 08, 2024
eli_g@optimove.comrc-5.6.0-84December 07, 2023
Version Updates Update the SDK version from 6.2.6 to 6.3.0 across all relevant podspec files and the SDKVersion.swift constant, and document the new In-App Message Interceptor API in the CHANGELOG.md.
Modified files (5)
  • OptimoveSDK.podspec
  • OptimoveCore/Sources/Classes/Constants/SDKVersion.swift
  • OptimoveCore.podspec
  • OptimoveNotificationServiceExtension.podspec
  • CHANGELOG.md
Latest Contributors(2)
UserCommitDate
konstantin_a@optimove.comUpdated-version-to-6.2.6October 02, 2025
adamball1bump-version-numbers-f...July 24, 2025
This pull request is reviewed by Baz. Review like a pro on (Baz).

@pr-work-item-validator
Copy link

👋 Hey @k-antipochkin,

❗️ Work Item link check failed: There is no Work Item linked to this PR.

🧩 Please add the Work Item ID to the PR title or description using the "Edit" option in the format below:
AB#XXXXX - replace X with a valid Work Item ID.

🟢 Once added, the validation will automatically run again!

1 similar comment
@pr-work-item-validator
Copy link

👋 Hey @k-antipochkin,

❗️ Work Item link check failed: There is no Work Item linked to this PR.

🧩 Please add the Work Item ID to the PR title or description using the "Edit" option in the format below:
AB#XXXXX - replace X with a valid Work Item ID.

🟢 Once added, the validation will automatically run again!

@k-antipochkin k-antipochkin changed the title AB#/261534 in app ccrm AB#261534 in app ccrm Oct 24, 2025
@k-antipochkin k-antipochkin merged commit 639579b into master Oct 29, 2025
2 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