MoEngageInAppWebView

@objc
@MainActor
public class MoEngageInAppWebView : UIView
extension MoEngageInAppWebView: WKNavigationDelegate
extension MoEngageInAppWebView: WKScriptMessageHandler
extension MoEngageInAppWebView: WKUIDelegate

Custom WebView implementation for InApp HTML messages

Handles JavaScript bridge communication, HTML loading, and WebView lifecycle.

Key responsibilities:

  • Configure WKWebView with JavaScript bridge for native-web communication
  • Load HTML content from file system or string
  • Handle script messages from JavaScript and route to action handlers
  • Present JavaScript dialogs (alert, confirm, prompt)
  • Manage WebView lifecycle and memory cleanup

Properties

  • The underlying WKWebView instance

    Declaration

    Swift

    @objc
    @MainActor
    public var webView: WKWebView?

Initialization

  • Initialize WebView with InApp payload

    Declaration

    Swift

    @objc
    @MainActor
    public init(withInAppPayload payload: MoEngageInAppViewPayload)

    Parameters

    payload

    The InApp view payload containing campaign data and HTML content

  • Declaration

    Swift

    @MainActor
    public override init(frame: CGRect)

WebView Configuration

  • Initialize and configure WKWebViewConfiguration with JavaScript bridge

    Declaration

    Swift

    @objc
    @MainActor
    public func initializeWebConfiguration() -> WKWebViewConfiguration

    Return Value

    Configured WKWebViewConfiguration instance

WebView Setup

  • Set up the WebView by adding it as a subview and applying styles

    Declaration

    Swift

    @objc
    @MainActor
    public func setUpWebView()

HTML Loading

  • Load HTML content into WebView Attempts to load from file system if assets folder exists, otherwise loads from string

    Declaration

    Swift

    @objc
    @MainActor
    public func loadHTMLToWebView(withCompletionHandler completionHandler: @escaping WebViewCompletionHandler)

    Parameters

    completionHandler

    Completion handler called with success/failure status

  • Add JavaScript bridge to existing WebView configuration This method can be called to re-add the bridge if needed

    Declaration

    Swift

    @objc
    @MainActor
    public func addJSBridge()

Cleanup

WKNavigationDelegate

WKScriptMessageHandler

  • Handle script messages from JavaScript Parses action types and routes to appropriate action handlers

    Declaration

    Swift

    @MainActor
    public func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage)

WKUIDelegate