MoEngageInAppController
@objc
public class MoEngageInAppController : NSObject, MoEngageInAppActionHandlerDelegate
extension MoEngageInAppController: MoEngageTestInAppProtocol
extension MoEngageInAppController: MoEngageTriggerEvaluationCallBacksHandler
-
Declaration
Swift
public func checkAndUpdatePrimaryClickedForCampaignID(_ campaignID: String) -
Declaration
Swift
public func dismissInAppWithCampaignID(_ campaignID: String) -
Declaration
Swift
public func performNavigationCallback( _ actionInfo: MoEngageInAppNavigationAction, forCampaignID campaignID: String ) -
Declaration
Swift
public func informDelegateActionPerformedWithInfo(_ actionInfo: MoEngageInAppAction, forCampaignID campaignID: String)
-
Check if global delay between InApps has been satisfied
Declaration
Swift
@objc public func checkGlobalDelayForInApps() -> BoolReturn Value
trueif global delay check passed,falseotherwise
-
Check if campaign has expired
Declaration
Swift
@objc public func checkCampaignExpiry(for campaign: MoEngageInAppCampaignMeta) -> BoolParameters
campaignThe campaign to check
Return Value
trueif campaign is not expired,falseif expired
-
Check if campaign contexts match current app contexts
Declaration
Swift
@objc public func checkContexts(for campaign: MoEngageInAppCampaignMeta) -> BoolParameters
campaignThe campaign to check
Return Value
trueif context check passed,falseotherwise
-
Check if campaign should be shown on current screen
Declaration
Swift
@objc public func checkShowInScreen(for campaign: MoEngageInAppCampaignMeta) -> BoolParameters
campaignThe campaign to check
Return Value
trueif screen check passed,falseotherwise
-
Check if current device orientation is supported by the campaign
Declaration
Swift
@objc public func checkIfCurrentOrientationIsSupported(_ campaignOrientationType: MoEngageInAppOrientationType) -> BoolParameters
campaignOrientationTypeThe orientation type supported by the campaign
Return Value
trueif orientation is supported,falseotherwise
-
Check campaign state instance for persistence, max times shown, and campaign-level delay. Validates campaign against stored state to determine if it can be shown again.
Declaration
Swift
@objc public func checkWithStateInstance(for campaign: MoEngageInAppCampaignMeta, isPrioratizingStage: Bool) -> BoolParameters
campaignThe campaign to check
isPrioratizingStageWhether this is the priority stage (affects stat tracking)
Return Value
trueif all state checks pass and campaign can be shown,falseotherwise
-
Check if InApp is enabled (SDK enabled, not disabled by developer, config API enabled, user registered)
Declaration
Swift
@objc public func isInAppEnabled() -> BoolReturn Value
trueif InApp is enabled,falseotherwise
-
Check if InApp should be shown (enabled and sync completed)
Declaration
Swift
@objc public func shouldShowInApp() -> BoolReturn Value
trueif InApp should be shown,falseotherwise
-
Check if all rules are satisfied for an InApp campaign. Performs FC check followed by non-FC rules (nudge, push opt-in, delay, expiry, screen, context, orientation, state).
Declaration
Swift
@objc public func checkIfRulesSatisfied( for campaign: MoEngageInAppCampaignMeta, inPrioratizingStage isPrioratizingStage: Bool ) -> BoolParameters
campaignThe campaign to check
isPrioratizingStageWhether this is the priority stage (affects stat tracking)
Return Value
trueif all rules pass and campaign is eligible to show,falseotherwise
-
Check if all rules are satisfied for an InApp campaign with explicit trigger type. Performs FC check with specified trigger type followed by non-FC rules.
Declaration
Swift
@objc public func checkIfRulesSatisfied( for campaign: MoEngageInAppCampaignMeta, triggerType: Int, inPrioratizingStage isPrioratizingStage: Bool ) -> BoolParameters
campaignThe campaign to check
triggerTypeThe explicit trigger type for FC evaluation
isPrioratizingStageWhether this is the priority stage (affects stat tracking)
Return Value
trueif all rules pass and campaign is eligible to show,falseotherwise
-
Declaration
Swift
public func addSessionTerminationEvent(for reason: MoEngageTestInAppSessionTermination)
-
Handles orientation change for all visible nudges. Dismisses nudges that do not support the current orientation; repositions HTML nudges that do. Call this when the device orientation changes (e.g. from your app’s orientation handler).
Declaration
Swift
@objc public func handleOrientationChangedForNudges() -
Returns the nudge container view currently displayed for the given campaign, if any.
Declaration
Swift
@objc public func getNudgeView(withCampaignID cid: String?) -> MoEngageInAppPrimaryContainerView?Parameters
cidCampaign ID of the nudge.
Return Value
The nudge view for that campaign, or
nilif not found or no nudges are visible.
-
Dismisses the given nudge view: cancels any pending auto-dismiss timer, runs the remove animation, then removes it from
nudgeViewsArray.Declaration
Swift
@objc public func dismissNudgeView(_ nudgeView: MoEngageInAppPrimaryContainerView?)Parameters
nudgeViewThe nudge container view to dismiss; no-op if
nil.
-
Creates an HTML nudge container: downloads template assets, checks keyboard visibility (and aborts if visible), builds the container with calculated frame, and loads the HTML.
Declaration
Swift
@objc public func createHTMLNudgeView(withTemplatePayload templatePayload: MoEngageInAppViewPayload, isTestCampaign: Bool, withCompletionBlock completionBlock: @escaping (MoEngageInAppPrimaryContainerView?, MoEngageInAppViewPayload?) -> Void)Parameters
templatePayloadThe in-app view payload for the HTML nudge.
isTestCampaignIf
true, shows an alert on creation failure (e.g. for preview).completionBlockCalled with the created nudge view and payload on success, or
(nil, nil)on failure or when keyboard is visible.
-
Fetches the next eligible self-handled campaign (respecting FC and display rules), applies delay, runs final rule check, and returns campaign info via the completion block. If InApps are disabled, sync is in progress, or no eligible campaign exists, the completion is called with
(nil, accountMeta).Declaration
Swift
@objc public func getSelfHandledInApp(completionBlock: @escaping (MoEngageInAppSelfHandledCampaign?, MoEngageAccountMeta?) -> Void)Parameters
completionBlockCalled with the self-handled campaign info and account meta, or
(nil, accountMeta)if none available or rules fail. -
Builds a self-handled campaign info object from a view payload (content, display rules, context, expiry, etc.) for delegate callbacks and tracking.
Declaration
Swift
@objc public func getSelfHandledInfo(forInAppPayload inAppPayload: MoEngageInAppViewPayload) -> MoEngageInAppSelfHandledCampaignParameters
inAppPayloadThe in-app view payload (e.g. from a fetched template).
Return Value
A
MoEngageInAppSelfHandledCampaigninstance with content, display rules, campaign ID/name, expiry, and context. -
Call when the app has displayed the self-handled in-app. Tracks impression (analytics, FC increment, and state update).
Declaration
Swift
@objc public func selfHandledShown(withCampaignInfo campaignInfo: MoEngageInAppSelfHandledCampaign)Parameters
campaignInfoThe self-handled campaign that was shown (from
getSelfHandledInAppor built viaMoEngageInAppSelfHandledCampaign(from:)). -
Call when the user tapped/clicked the self-handled in-app. Tracks the in-app clicked analytics event.
Declaration
Swift
@objc public func selfHandledClicked(withCampaignInfo campaignInfo: MoEngageInAppSelfHandledCampaign)Parameters
campaignInfoThe self-handled campaign that was clicked.
-
Call when the app dismissed the self-handled in-app. Tracks the in-app dismissed analytics event.
Declaration
Swift
@objc public func selfHandledDismissed(withCampaignInfo campaignInfo: MoEngageInAppSelfHandledCampaign)Parameters
campaignInfoThe self-handled campaign that was dismissed.
-
Fetches the template for the triggered campaign, applies display delay, then runs final rule check and shows the in-app (popup, nudge, or self-handled) via
processFetchedTriggeredPayload.Declaration
Swift
@objc public func fetchTriggeredInApp(_ eligibleCampaign: MoEngageInAppCampaignMeta, withEventInfoDict triggerDict: [String : Any])Parameters
eligibleCampaignCampaign meta for the triggered in-app.
triggerDictEvent info dictionary (event name, attributes, time) for the trigger payload.
-
Builds the attributes dictionary for the trigger payload by merging
EVENT_ATTRSand converting timestamps inEVENT_ATTRS_CUSTto ISO8601 strings.Declaration
Swift
@objc public func getAttributesDictForTrigger(withEventDict eventDict: [AnyHashable : Any]?) -> [String : Any]Parameters
eventDictRaw event dict that may contain
EVENT_ATTRSandEVENT_ATTRS_CUST(with optionaltimestamparray).Return Value
A flattened attribute dictionary suitable for the trigger payload.
-
performFinalRuleCheckForNonIntrusiveCampaign(_:blockInAppView: blockCampaignPayload: completionBlock: continuation: ) Performs final rule check (e.g. FC at impression stage) for a non-intrusive campaign, then calls the completion with the (possibly nil) view and payload. Used by Objective-C callers; block pointers are updated when rules fail.
Declaration
Swift
@objc(performFinalRuleCheckForNonIntrusiveCampaign:blockInAppView:blockCampaignPayload:completionBlock:continuation:) public func performFinalRuleCheckForNonIntrusiveCampaign( _ payload: MoEngageInAppViewPayload, blockInAppView: UnsafeMutablePointer<MoEngageInAppPrimaryContainerView?>, blockCampaignPayload: UnsafeMutablePointer<MoEngageInAppViewPayload?>, completionBlock: (MoEngageInAppPrimaryContainerView?, MoEngageInAppViewPayload?) -> Void, continuation: MoEngageDelayedOperation.Continuation ) -> BoolParameters
payloadCampaign payload to check.
blockInAppViewPointer to in-app view; set to nil if rules fail.
blockCampaignPayloadPointer to campaign payload; set to nil if rules fail.
completionBlockCalled with current view and payload after the check.
continuationDelay manager continuation; always fulfilled before return.
Return Value
trueif final rules passed,falseotherwise. -
Performs final rule check for a non-intrusive campaign and, if passed, attaches the nudge view on the main queue. Used by the triggered in-app flow when the payload is non-intrusive (nudge).
Declaration
Swift
@objc(performFinalRuleCheckForNonIntrusiveCampaignWithAttachment:inAppView:continuation:) public func performFinalRuleCheckForNonIntrusiveCampaign( withAttachment payload: MoEngageInAppViewPayload, inAppView: MoEngageInAppPrimaryContainerView, continuation: MoEngageDelayedOperation.Continuation ) -> BoolParameters
payloadCampaign payload to check.
inAppViewNudge view to attach if rules pass.
continuationDelay manager continuation; always fulfilled before return.
Return Value
trueif final rules passed,falseotherwise.
-
Called when trigger condition validation finished successfully; forwards to
handleTriggerEventand logs the result.Declaration
Swift
public func didFinishTriggerConditionValidation(for campaignId: String, with result: MoEngageTriggerEvaluationResult)Parameters
campaignIdCampaign ID that completed validation (may be nil).
resultEvaluation result containing campaign IDs, event names, and attributes.
-
Called when the secondary trigger path timed out without completion; tracks evaluation-path expiry stat for the campaign.
Declaration
Swift
public func didTimeoutSecondaryWihoutPathCompletion(campaignId: String)Parameters
campaignIdCampaign ID whose secondary path timed out.
-
Called when the trigger path was satisfied while the app was in the background; tracks “user not on app” stat for the campaign.
Declaration
Swift
public func pathSatisfiedWhenUserWasOnBckground(campaignId: String)Parameters
campaignIdCampaign ID whose path was satisfied in background.
-
Called when trigger evaluation failed for a campaign. If the campaign is the current test in-app, tracks a test in-app “condition failed” event.
Declaration
Swift
public func triggerEvaluationFailed(for campaignData: MoEngageTriggeredCampaignData)Parameters
campaignDataTriggered campaign data (campaign ID, event name, attributes) for the failed evaluation.
-
Declaration
Swift
@objc public func getActionHandler() -> MoEngageInAppActionHandler
-
Declaration
Swift
public func getInAppViewWithCampaignID(_ campaignID: String) -> MoEngageInAppPrimaryContainerView?
-
Calculate the frame for a HTML nudge based on its payload and position
Declaration
Swift
@objc public static func calculateNudgeFrame(_ payload: MoEngageInAppViewPayload) -> CGRectParameters
payloadThe InApp view payload containing style and position information
Return Value
The calculated CGRect for the nudge