MoEngageSDKAnalytics

@objc
public class MoEngageSDKAnalytics : NSObject, @unchecked Sendable

Class to track data on the MoEngage Platform.

  • Singleton class instance

    Declaration

    Swift

    @objc
    public static var sharedInstance: MoEngageSDKAnalytics { get }
  • Track an event.

    Declaration

    Swift

    @discardableResult
    public func trackEvent(
        _ name: String, withProperties properties: MoEngageProperties? = nil,
        forAppID appID: String? = nil,
        isolation `actor`: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageTrackEventTask

    Parameters

    name

    event name

    properties

    attributes associated with the event

    appID

    MoEngage account identifier; nil for the default instance

    Return Value

    MoEngageTrackEventTask. onSuccess fires once the event is accepted into the local batch; the result carries acceptedProperties + droppedPropertyKeys. onFailure reasons: .featureDisabled (analytics off / opted out), .invalidParameters (event name blacklisted by remote config — the feature is enabled, this specific name isn’t accepted), .sdkNotInitialized, or .unknownError for an unspecified internal failure.

  • Sync the tracked events instantaneously for Secondary instance

    Declaration

    Swift

    @available(*, deprecated, message: "Use the typed-task variant returning MoEngageFlushTask — observe via onSuccess / onFailure / result(﹚.")
    @_disfavoredOverload
    public func flush(
        forAppID appID: String? = nil,
        isolation: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column,
        withCompletionBlock completionBlock: (@MainActor(unsafe) (Bool) -> Void)? = nil
    )

    Parameters

    appID

    MoEngage Account Identifier.

    completionBlock

    completion block to be called after events are flushed out

  • Sync the tracked events instantaneously.

    Declaration

    Swift

    @discardableResult
    public func flush(
        forAppID appID: String? = nil,
        isolation: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageFlushTask

    Parameters

    appID

    MoEngage Account Identifier.

    Return Value

    A MoEngageFlushTask. onSuccess fires when the batch sync has been server-acknowledged. onFailure fires with .networkError when the sync attempt failed (network / server / auth), or .sdkNotInitialized when no SDK instance is registered for appID. Marked @discardableResult so existing fire-and-forget callers compile unchanged.

  • Update source based on query params of the URL.

    Declaration

    Swift

    @discardableResult
    public func processURL(
        _ url: URL?,
        isolation `actor`: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageProcessURLTask

    Parameters

    url

    URL that contains source information in query params.

    Return Value

    MoEngageProcessURLTask carrying MoEngageProcessURLResult whose wasHandled field indicates whether the SDK actually processed the URL (true) or deferred to auto-tracking / a swizzled callback / nil-URL short-circuit (false). Customers using onFailure will receive .invalidParameters when url is nil.

  • Set an alias to update the existing Unique Id.

    Declaration

    Swift

    @discardableResult
    public func setAlias(
        _ alias: String, forAppID appID: String?,
        isolation `actor`: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageSetUserAttributeTask

    Parameters

    alias

    identifier

    appID

    MoEngage account identifier; nil for the default instance

    Return Value

    MoEngageSetUserAttributeTask. onSuccess fires after dispatch (including the dedup case). onFailure fires with .invalidParameters when the alias is rejected, or .sdkNotInitialized.

  • Set a custom user attribute at the given level. Leaf method for the setUserAttribute* family — most convenience wrappers delegate here.

    Declaration

    Swift

    @discardableResult
    public func setUserAttribute(
        _ value: (any Sendable)?, withAttributeName attributeName: String,
        level: MoEngageUserAttributeLevel = .default,
        variant: MoEngageUserAttributeVariant = .standard,
        forAppID appID: String?,
        isolation `actor`: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageSetUserAttributeTask

    Parameters

    value

    attribute value

    attributeName

    attribute name

    level

    project- or portfolio-level scope

    appID

    MoEngage account identifier; nil for the default instance

    Return Value

    MoEngageSetUserAttributeTask. onSuccess fires when the attribute is persisted or already matched the cache (dedup). onFailure fires with .invalidParameters on rejection, or .sdkNotInitialized.

  • Invalidates the existing sessions and user attributes and treats all actions performed by the user as a new user after this method is called

    Declaration

    Swift

    @available(*, deprecated, message: "Use the typed-task variant returning MoEngageResetUserTask — observe via onSuccess / onFailure / result(﹚.")
    @_disfavoredOverload
    public func resetUser(
        forAppID appID: String? = nil,
        isolation `actor`: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column,
        withCompletionBlock completionBlock: (@MainActor(unsafe) (Bool) -> Void)? = nil
    )

    Parameters

    appID

    optional account identifier.

    completionBlock

    Returns true if reset is successful else false

  • Invalidate existing sessions and user attributes; subsequent actions are tracked as a new user.

    Declaration

    Swift

    @discardableResult
    public func resetUser(
        forAppID appID: String? = nil,
        isolation `actor`: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageResetUserTask

    Parameters

    appID

    optional account identifier.

    Return Value

    MoEngageResetUserTask. onSuccess fires after dispatch (including benign no-op cases like extension context or data-tracking opted out); onFailure fires with .sdkNotInitialized.

  • Set the Analytics delegate to get the callback for various Analytics events

    Declaration

    Swift

    public func setDelegate(
        delegate: MoEngageAnalyticsCallBack, forAppID appID: String? = nil,
        isolation: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    )

    Parameters

    delegate

    Instance that confirms to MoEngageAnalyticsCallBack

    appID

    Optional Account Identifier

  • Set custom device attribute for workspace.

    Supported value data types are:

    • Number (Int, Double, Float)
    • String
    • Boolean

    Date

    Date (ISO 8601 String)

    Declaration

    Swift

    @available(iOSApplicationExtension, unavailable)
    @discardableResult
    public func setDeviceAttribute(
        _ value: any Sendable, withName attributeName: String, forWorkspaceId workspaceId: String? = nil,
        isolation `actor`: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageSetDeviceAttributeTask

    Parameters

    value

    attribute value

    attributeName

    attribute name

    workspaceId

    MoEngage Workspace identifier

  • This method tells the SDK whether it is a fresh install or an existing application was updated.

    Declaration

    Swift

    @discardableResult
    public func appStatus(
        _ appStatus: MoEngageAppStatus,
        forAppID appID: String? = nil,
        isolation `actor`: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageSetAppStatusTask

    Parameters

    appStatus

    Enum of type MoEngageAppStatus

    appID

    MoEngage Account Identifier.

  • API to enable data tracking.

    Declaration

    Swift

    @discardableResult
    public func enableDataTracking(
        forAppID appID: String? = nil,
        isolation: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageTrackingToggleTask

    Parameters

    appID

    MoEngage Account identifier

  • Optionally opt-out of data tracking. When data tracking is opted out no custom event or user attribute is tracked on MoEngage Platform.

    Declaration

    Swift

    @discardableResult
    public func disableDataTracking(
        forAppID appID: String? = nil,
        isolation: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageTrackingToggleTask

    Parameters

    appID

    MoEngage Account identifier

  • Enable IDFA tracking

    Declaration

    Swift

    @discardableResult
    public func enableIDFATracking(
        forAppID appID: String? = nil,
        isolation: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageTrackingToggleTask

    Parameters

    appID

    MoEngage Account identifier

  • Disable IDFA tracking

    Declaration

    Swift

    @discardableResult
    public func disableIDFATracking(
        forAppID appID: String? = nil,
        isolation: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageTrackingToggleTask

    Parameters

    appID

    MoEngage Account identifier

  • Enable IDFV tracking

    Declaration

    Swift

    @discardableResult
    public func enableIDFVTracking(
        forAppID appID: String? = nil,
        isolation: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageTrackingToggleTask

    Parameters

    appID

    MoEngage Account identifier

  • Disable IDFV tracking

    Declaration

    Swift

    @discardableResult
    public func disableIDFVTracking(
        forAppID appID: String? = nil,
        isolation: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageTrackingToggleTask

    Parameters

    appID

    MoEngage Account identifier

  • Tracks device locale.

    Declaration

    Swift

    @discardableResult
    public func trackLocale(
        forAppID appID: String? = nil,
        isolation: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageTrackDeviceLocaleTask

    Parameters

    appID

    MoEngage Account identifier

Track Event

Track App Status

Reset User

  • Invalidates the existing sessions and user attributes (deprecated — completion-block variant).

    Declaration

    Swift

    @available(*, deprecated, message: "Use resetUser(forAppID:﹚ returning MoEngageResetUserTask — observe success/failure via .onSuccess / .onFailure / .result(﹚.")
    @_disfavoredOverload
    @objc
    public func resetUser(
        forAppID appID: String? = nil,
        withCompletionBlock completionBlock: (@MainActor(unsafe) (Bool) -> Void)? = nil
    )

    Parameters

    appID

    optional account identifier.

    completionBlock

    Returns true if reset is successful else false

  • Invalidates the existing sessions and user attributes for the default instance.

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func resetUser() -> MoEngageResetUserTask

    Return Value

    MoEngageResetUserTask carrying a MoEngageResetUserResult on success.

  • Invalidates the existing sessions and user attributes for the default instance (deprecated — completion-block variant).

    Declaration

    Swift

    @available(*, deprecated, message: "Use resetUser(﹚ returning MoEngageResetUserTask — observe success/failure via .onSuccess / .onFailure / .result(﹚.")
    @_disfavoredOverload
    @objc
    public func resetUser(
        withCompletionBlock completionBlock: (@MainActor(unsafe) (Bool) -> Void)? = nil
    )

    Parameters

    completionBlock

    Returns true if reset is successful else false

  • Invalidates the existing sessions and user attributes.

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func resetUser(forAppID appID: String? = nil) -> MoEngageResetUserTask

    Parameters

    appID

    MoEngage Account identifier

    Return Value

    MoEngageResetUserTask carrying a MoEngageResetUserResult on success.

OptOut Methods

Track Locale

Set Delegate

Flush Events

  • Sync the tracked events instantaneously for Secondary instance.

    Declaration

    Swift

    @available(*, deprecated, message: "Use flush(forAppID:﹚ returning MoEngageFlushTask — observe success/failure via .onSuccess / .onFailure / .result(﹚.")
    @_disfavoredOverload
    @objc
    public func flush(
        forAppID appID: String? = nil,
        withCompletionBlock completionBlock: (@MainActor(unsafe) (Bool) -> Void)? = nil
    )

    Parameters

    appID

    MoEngage Account Identifier.

    completionBlock

    completion block to be called after events are flushed out

  • Sync the tracked events instantaneously for Default instance.

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func flush() -> MoEngageFlushTask

    Return Value

    MoEngageFlushTask carrying a MoEngageFlushResult on server-acknowledged sync.

  • Sync the tracked events instantaneously for Secondary instance.

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func flush(forAppID appID: String? = nil) -> MoEngageFlushTask

    Parameters

    appID

    MoEngage Account identifier

    Return Value

    MoEngageFlushTask carrying a MoEngageFlushResult on server-acknowledged sync.

  • Sync the tracked events instantaneously for Default instance (deprecated — completion-block variant).

    Declaration

    Swift

    @available(*, deprecated, message: "Use flush(﹚ returning MoEngageFlushTask — observe success/failure via .onSuccess / .onFailure / .result(﹚.")
    @_disfavoredOverload
    @objc
    public func flush(
        withCompletionBlock completionBlock: (@MainActor(unsafe) (Bool) -> Void)? = nil
    )

    Parameters

    completionBlock

    completion block to be called after events are flushed out

  • Update source based on query params of the URL.

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func processURL(_ url: URL?) -> MoEngageProcessURLTask

    Parameters

    url

    URL that contains source information in query params

    Return Value

    MoEngageProcessURLTask — see the Swift overload on MoEngageSDKAnalytics for resolution semantics.

Date Attributes

  • Set epoch time for Secondary instance

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func setUserAttributeEpochTime(
        _ dateEpoch: Double, withAttributeName attributeName: String, forAppID appID: String?
    ) -> MoEngageSetUserAttributeTask

    Parameters

    dateEpoch

    Epoch date of type double

    attributeName

    attribute name of type String

    appID

    MoEngage account identifier

  • Set epoch time for Secondary instance

    Declaration

    Swift

    @discardableResult
    public func setUserAttributeEpochTime(
        _ dateEpoch: Double, withAttributeName attributeName: String, forAppID appID: String?,
        isolation `actor`: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageSetUserAttributeTask

    Parameters

    dateEpoch

    Epoch date of type double

    attributeName

    attribute name of type String

    appID

    MoEngage account identifier

  • Set epoch time for Default instance

    Declaration

    Swift

    @discardableResult
    @objc
    public func setUserAttributeEpochTime(
        _ dateEpoch: Double, withAttributeName attributeName: String
    ) -> MoEngageSetUserAttributeTask

    Parameters

    dateEpoch

    Epoch date of type double

    attributeName

    attribute name of type String

  • Set User attribute date for Secondary instance

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func setUserAttributeDate(
        _ date: Date, withAttributeName attributeName: String, forAppID appID: String?
    ) -> MoEngageSetUserAttributeTask

    Parameters

    date

    attribute value as Date

    attributeName

    attribute name

    appID

    MoEngage account identifier

  • Set User attribute date for Secondary instance

    Declaration

    Swift

    @discardableResult
    public func setUserAttributeDate(
        _ date: Date, withAttributeName attributeName: String, forAppID appID: String?,
        isolation `actor`: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageSetUserAttributeTask

    Parameters

    date

    attribute value as Date

    attributeName

    attribute name

    appID

    MoEngage account identifier

  • Set User attribute date for Default instance

    Declaration

    Swift

    @discardableResult
    @objc
    public func setUserAttributeDate(
        _ date: Date, withAttributeName attributeName: String
    ) -> MoEngageSetUserAttributeTask

    Parameters

    date

    attribute value as Date

    attributeName

    attribute name

  • Set User attribute ISO date for Secondary instance

    Note

    ISO accepted formats are yyyy-MM-dd’T'HH:mm:ss'Z’/yyyy-MM-dd’T'HH:mm:ss.SSS'Z’

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func setUserAttributeISODate(
        _ dateString: String, withAttributeName attributeName: String, forAppID appID: String?
    ) -> MoEngageSetUserAttributeTask

    Parameters

    dateString

    ISO date of type string

    attributeName

    attribute name

    appID

    MoEngage account identifier

  • Set User attribute ISO date for Secondary instance

    Note

    ISO accepted formats are yyyy-MM-dd’T'HH:mm:ss'Z’/yyyy-MM-dd’T'HH:mm:ss.SSS'Z’

    Declaration

    Swift

    @discardableResult
    public func setUserAttributeISODate(
        _ dateString: String, withAttributeName attributeName: String, forAppID appID: String?,
        isolation `actor`: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageSetUserAttributeTask

    Parameters

    dateString

    ISO date of type string

    attributeName

    attribute name

    appID

    MoEngage account identifier

  • Set User attribute ISO date

    Note

    ISO accepted formats are yyyy-MM-dd’T'HH:mm:ss'Z’/yyyy-MM-dd’T'HH:mm:ss.SSS'Z’

    Declaration

    Swift

    @discardableResult
    @objc
    public func setUserAttributeISODate(
        _ dateString: String, withAttributeName attributeName: String
    ) -> MoEngageSetUserAttributeTask

    Parameters

    dateString

    ISO date of type string

    attributeName

    attribute name

  • Set User Date of Birth for Secondary instance

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func setDateOfBirth(_ dob: Date, forAppID appID: String?) -> MoEngageSetUserAttributeTask

    Parameters

    dob

    Date of Birth passed by user

    appID

    MoEngage Account identifier

  • Set User Date of Birth for Secondary instance

    Declaration

    Swift

    @discardableResult
    public func setDateOfBirth(
        _ dob: Date, forAppID appID: String?,
        isolation `actor`: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageSetUserAttributeTask

    Parameters

    dob

    Date of Birth passed by user

    appID

    MoEngage Account identifier

  • Set User Date of Birth

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func setDateOfBirth(_ dob: Date) -> MoEngageSetUserAttributeTask

    Parameters

    dob

    Date of Birth passed by user

  • Set user Date of Birth ISO format for Secondary instance

    Note

    ISO format accepted yyyy-MM-dd’T'HH:mm:ss.SSS'Z’ / yyyy-MM-dd’T'HH:mm:ss'Z’

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func setDateOfBirthInISO(
        _ dateString: String, forAppID appID: String?
    ) -> MoEngageSetUserAttributeTask

    Parameters

    dateString

    attribute value accepted in ISO format

    appID

    MoEngage Account identifier

  • Set user Date of Birth ISO format for Secondary instance

    Note

    ISO format accepted yyyy-MM-dd’T'HH:mm:ss.SSS'Z’ / yyyy-MM-dd’T'HH:mm:ss'Z’

    Declaration

    Swift

    @discardableResult
    public func setDateOfBirthInISO(
        _ dateString: String, forAppID appID: String?,
        isolation `actor`: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageSetUserAttributeTask

    Parameters

    dateString

    attribute value accepted in ISO format

    appID

    MoEngage Account identifier

  • Method to set user date of birth ISO format

    Note

    ISO format accepted yyyy-MM-dd’T'HH:mm:ss.SSS'Z’ / yyyy-MM-dd’T'HH:mm:ss'Z’

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func setDateOfBirthInISO(_ dateString: String) -> MoEngageSetUserAttributeTask

    Parameters

    dateString

    attribute value accepted in ISO format

Location Attributes

Portfolio User Attribute APIs with Level Support

User Attributes

  • Set custom user attribute for Secondary instance

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func setUserAttribute(
        _ value: (any Sendable)?, withAttributeName attributeName: String, forAppID appID: String?
    ) -> MoEngageSetUserAttributeTask

    Parameters

    value

    attribute value

    attributeName

    attribute name

    appID

    MoEngage account identifier

  • Set custom user attribute for Secondary instance

    Declaration

    Swift

    @discardableResult
    public func setUserAttribute(
        _ value: (any Sendable)?, withAttributeName attributeName: String, forAppID appID: String?,
        isolation `actor`: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageSetUserAttributeTask

    Parameters

    value

    attribute value

    attributeName

    attribute name

    appID

    MoEngage account identifier

  • Set custom user attribute for Default instance

    Declaration

    Swift

    @discardableResult
    @objc
    public func setUserAttribute(
        _ value: (any Sendable)?, withAttributeName attributeName: String
    ) -> MoEngageSetUserAttributeTask

    Parameters

    value

    attribute value

    attributeName

    attribute name

  • Set an Alias to update the existing Unique Id for Secondary instance

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func setAlias(_ alias: String, forAppID appID: String?) -> MoEngageSetUserAttributeTask

    Parameters

    alias

    identifier

    appID

    MoEngage Account Identifier

  • Set an Alias to update the existing Unique Id for Default instance

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func setAlias(_ alias: String) -> MoEngageSetUserAttributeTask

    Parameters

    alias

    identifier

  • Set unique ID for Secondary instance

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func setUniqueID(_ uniqueID: String, forAppID appID: String?) -> MoEngageSetUserAttributeTask

    Parameters

    uniqueID

    Unique ID

    appID

    MoEngage Account identifier

  • Set unique ID for Secondary instance

    Declaration

    Swift

    @discardableResult
    public func setUniqueID(
        _ uniqueID: String, forAppID appID: String?,
        isolation `actor`: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageSetUserAttributeTask

    Parameters

    uniqueID

    Unique ID

    appID

    MoEngage Account identifier

  • Set unique ID for Default instance

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func setUniqueID(_ uniqueID: String) -> MoEngageSetUserAttributeTask

    Parameters

    uniqueID

    Unique ID

  • Set Email ID for Secondary instance

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func setEmailID(_ emailID: String, forAppID appID: String?) -> MoEngageSetUserAttributeTask

    Parameters

    emailID

    emailID value.

    appID

    MoEngage Account identifier

  • Set Email ID for Secondary instance

    Declaration

    Swift

    @discardableResult
    public func setEmailID(
        _ emailID: String, forAppID appID: String?,
        isolation `actor`: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageSetUserAttributeTask

    Parameters

    emailID

    emailID value.

    appID

    MoEngage Account identifier

  • Set Email ID

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func setEmailID(_ emailID: String) -> MoEngageSetUserAttributeTask

    Parameters

    emailID

    emailID value.

  • Set user name for Secondary instance

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func setName(_ userName: String, forAppID appID: String?) -> MoEngageSetUserAttributeTask

    Parameters

    userName

    User Name value passed by user

    appID

    MoEngage Account identifier

  • Set user name for Secondary instance

    Declaration

    Swift

    @discardableResult
    public func setName(
        _ userName: String, forAppID appID: String?,
        isolation `actor`: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageSetUserAttributeTask

    Parameters

    userName

    User Name value passed by user

    appID

    MoEngage Account identifier

  • Set user name

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func setName(_ userName: String) -> MoEngageSetUserAttributeTask

    Parameters

    userName

    User Name value passed by user

  • Set User first name for Secondary instance

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func setFirstName(_ firstName: String, forAppID appID: String?) -> MoEngageSetUserAttributeTask

    Parameters

    firstName

    First Name value passed by user

    appID

    MoEngage Account identifier

  • Set User first name for Secondary instance

    Declaration

    Swift

    @discardableResult
    public func setFirstName(
        _ firstName: String, forAppID appID: String?,
        isolation `actor`: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageSetUserAttributeTask

    Parameters

    firstName

    First Name value passed by user

    appID

    MoEngage Account identifier

  • Set User first name

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func setFirstName(_ firstName: String) -> MoEngageSetUserAttributeTask

    Parameters

    firstName

    First Name value passed by user

  • Set User last name for Secondary instance

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func setLastName(_ lastName: String, forAppID appID: String?) -> MoEngageSetUserAttributeTask

    Parameters

    lastName

    Last Name value passed by user

    appID

    MoEngage Account identifier

  • Set User last name for Secondary instance

    Declaration

    Swift

    @discardableResult
    public func setLastName(
        _ lastName: String, forAppID appID: String?,
        isolation `actor`: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageSetUserAttributeTask

    Parameters

    lastName

    Last Name value passed by user

    appID

    MoEngage Account identifier

  • Set User last name

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func setLastName(_ lastName: String) -> MoEngageSetUserAttributeTask

    Parameters

    lastName

    Last Name value passed by user

  • Set mobile number for Secondary instance

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func setMobileNumber(_ mobileNum: String, forAppID appID: String?) -> MoEngageSetUserAttributeTask

    Parameters

    mobileNum

    Mobile Number value passed by user

    appID

    MoEngage Account identifier

  • Set mobile number for Secondary instance

    Declaration

    Swift

    @discardableResult
    public func setMobileNumber(
        _ mobileNum: String, forAppID appID: String?,
        isolation `actor`: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageSetUserAttributeTask

    Parameters

    mobileNum

    Mobile Number value passed by user

    appID

    MoEngage Account identifier

  • Set mobile number

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func setMobileNumber(_ mobileNum: String) -> MoEngageSetUserAttributeTask

    Parameters

    mobileNum

    Mobile Number value passed by user

  • Set User gender for Secondary instance

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func setGender(_ gender: MoEngageUserGender, forAppID appID: String?) -> MoEngageSetUserAttributeTask

    Parameters

    gender

    Gender value passed by user

    appID

    MoEngage Account identifier

  • Set User gender for Secondary instance

    Declaration

    Swift

    @discardableResult
    public func setGender(
        _ gender: MoEngageUserGender, forAppID appID: String?,
        isolation `actor`: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageSetUserAttributeTask

    Parameters

    gender

    Gender value passed by user

    appID

    MoEngage Account identifier

  • Set User gender

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func setGender(_ gender: MoEngageUserGender) -> MoEngageSetUserAttributeTask

    Parameters

    gender

    Gender value passed by user

  • Track user attribute push preference

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    public func trackUserPushPreference(
        _ isPushEnabled: Bool, forAppID appID: String?
    ) -> MoEngageSetUserAttributeTask

    Parameters

    isPushEnabled

    true if Push is enabled else false.

    appID

    MoEngage Account identifier

  • Track user attribute push preference

    Declaration

    Swift

    @discardableResult
    public func trackUserPushPreference(
        _ isPushEnabled: Bool, forAppID appID: String?,
        isolation `actor`: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageSetUserAttributeTask

    Parameters

    isPushEnabled

    true if Push is enabled else false.

    appID

    MoEngage Account identifier

  • Set custom device attribute for workspace.

    Supported value data types are:

    • Number (Int, Double, Float)
    • String
    • Boolean

    Date

    Date (ISO 8601 String)

    Declaration

    Swift

    @available(iOSApplicationExtension, unavailable)
    @discardableResult
    func setDeviceAttribute(
        _ value: any Sendable, withName attributeName: String, forWorkspaceId workspaceId: String? = nil
    ) -> MoEngageSetDeviceAttributeTask

    Parameters

    value

    attribute value

    attributeName

    attribute name

    workspaceId

    MoEngage Workspace identifier

  • Set custom device attribute for Default instance.

    Supported value data types are:

    • Number (Int, Double, Float)
    • String
    • Boolean

    Date

    Date (ISO 8601 String)

    Declaration

    Swift

    @available(iOSApplicationExtension, unavailable)
    @discardableResult
    func setDeviceAttribute(
        _ value: any Sendable, withName attributeName: String
    ) -> MoEngageSetDeviceAttributeTask

    Parameters

    value

    attribute value

    attributeName

    attribute name

  • Add unique identities to current user.

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    func identifyUser(identities: [String : String], workspaceId: String? = nil) -> MoEngageIdentifyUserTask

    Parameters

    identities

    The identities uniquely identifying current user.

    workspaceId

    MoEngage Workspace Identifier.

  • Add unique identifier uid to current user.

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    func identifyUser(identity: String, workspaceId: String? = nil) -> MoEngageIdentifyUserTask

    Parameters

    identity

    The identifier uniquely identifying current user.

    workspaceId

    MoEngage Workspace Identifier.

Get user identities

  • Get all the identities set for current user (deprecated — completion-block variant).

    Declaration

    Swift

    @available(*, deprecated, message: "Use getUserIdentities(workspaceId:﹚ returning MoEngageGetUserIdentitiesTask — observe identities via .onSuccess / .result(﹚.")
    @_disfavoredOverload
    @objc
    func getUserIdentities(
        workspaceId: String? = nil,
        completion: @escaping @MainActor(unsafe) ([String: String]) -> Void
    )

    Parameters

    workspaceId

    MoEngage Workspace Identifier.

    completion

    The block where identities will be provided on main thread.

  • Get all the identities set for current user.

    Declaration

    Swift

    @discardableResult
    @_disfavoredOverload
    @objc
    func getUserIdentities(workspaceId: String? = nil) -> MoEngageGetUserIdentitiesTask

    Parameters

    workspaceId

    MoEngage Workspace Identifier.

    Return Value

    MoEngageGetUserIdentitiesTask carrying a MoEngageGetUserIdentitiesResult with the current identity map on success.

  • Add unique identities to the current user.

    Declaration

    Swift

    @discardableResult
    public func identifyUser(
        identities: [String: String], workspaceId: String? = nil,
        isolation: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageIdentifyUserTask

    Parameters

    identities

    The identities uniquely identifying the current user.

    workspaceId

    MoEngage workspace identifier.

    Return Value

    MoEngageIdentifyUserTask. onSuccess fires after dispatch (including benign no-op cases like extension context or unchanged identities). onFailure fires with .sdkNotInitialized, or .featureDisabled when data tracking is disabled or the user is opted out.

  • Add unique identifier uid to current user.

    Declaration

    Swift

    @discardableResult
    public func identifyUser(
        identity: String, workspaceId: String? = nil,
        isolation: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageIdentifyUserTask

    Parameters

    identity

    The identifier uniquely identifying current user.

    workspaceId

    MoEngage Workspace Identifier.

  • Get all the identities set for current user.

    Declaration

    Swift

    @discardableResult
    public func getUserIdentities(
        workspaceId: String? = nil,
        isolation: isolated (any Actor)? = #isolation,
        file: StaticString = #fileID,
        line: UInt = #line,
        column: UInt = #column
    ) -> MoEngageGetUserIdentitiesTask

    Parameters

    workspaceId

    MoEngage Workspace Identifier.

    Return Value

    A MoEngageGetUserIdentitiesTask. onSuccess fires with the current identity map. onFailure fires with .sdkNotInitialized when no SDK instance is registered for workspaceId.