Object Oriented Tracking

Prev Next

Object oriented tracking is the recommended way to send tracking events from your iOS app. You build a typed event object (page view, action, media, form, …), optionally attach typed parameter objects (page, event, session, user, e‑commerce, campaign), and pass it to the matching track… method on MappIntelligence.shared().

Why object oriented tracking

  • Type safety: the compiler checks that you set the right fields on the right event.

  • Composability: attach only the parameter objects you need — page parameters, e‑commerce data, user categories — without losing track of the request shape.

  • Forward compatibility: new parameters added to the SDK become new properties on the parameter classes, not new query‑string keys you have to remember.

Note: The iOS SDK does not provide implicit auto‑tracking of view controllers (unlike the Android SDK's activity / fragment auto‑tracking). You always trigger tracking explicitly from your app code — typically in viewDidAppear or a SwiftUI onAppear.

Building blocks

Tracking events

Event class

Use for

Page

MIPageViewEvent

Page / screen views

Pages

MIActionEvent

User actions on a page

Events

MIMediaEvent

Media playback (audio / video)

Media Tracking

MIFormSubmitEvent / formTracking(_:)

Form interactions

Form Tracking

Parameter objects

Parameters class

Attach to

Page

MIPageParameters

MIPageViewEvent

Pages

MIEventParameters

MIActionEvent, MIMediaEvent

Events

MISessionParameters

Any event

Sessions

MIUserCategories

Any event

Users

MIEcommerceParameters + MIProduct

Any event

Products and Orders

MICampaignParameters

MIPageViewEvent, MIActionEvent

Campaigns

MIMediaParameters

MIMediaEvent

Media Tracking

MIFormParameters + MIFormField

Form tracking

Form Tracking

Minimal example: track a page view

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    let pageEvent = MIPageViewEvent(name: "Product Detail")
    pageEvent.pageParameters = MIPageParameters(dictionary: [
        1: "category-shoes",
        2: "running"
    ])

    MappIntelligence.shared()?.trackPage(pageEvent)
}
- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    MIPageViewEvent *pageEvent = [[MIPageViewEvent alloc] initWithName:@"Product Detail"];
    pageEvent.pageParameters = [[MIPageParameters alloc] initWithDictionary:@{
        @1: @"category-shoes",
        @2: @"running"
    }];

    [[MappIntelligence shared] trackPage:pageEvent];
}

Where to go next

Related: Default Parameters, Configure Global Tracking.