SDK Native - Customizations

Native SDK — Customizations

Prerequisite: Complete the Native SDK - Quick Start first.

These customizations require no custom cell class — you configure the built-in default renderer or extend it with small tweaks.


1. Configuration Options

1.1 Scroll Direction

// Horizontal (default)
adView.setOrientation(.horizontal)

// Vertical list
adView.setOrientation(.vertical)

1.2 Maximum Number of Campaigns

1.3 Open Campaign Details In-App

By default, tapping a campaign opens in Safari. To keep users inside your app:

When openInApp is true, the SDK presents MCWebViewController from the nearest UIViewController in the responder chain. For tighter control, you can pin the presenting view controller explicitly:


2. Change the Currency Icon

The default renderer shows a coin icon next to the reward value.

You can replace it in two ways:

Option A: Set a custom URL

Option B: Use a local asset

To use an image from your app's asset catalog, disable the URL-based icon and set the image in configure(cell:campaign:at:):

Important: Call setCurrencyIconUrl("") when using a local asset. This prevents the default CDN icon from loading asynchronously and overwriting your image.


3. Customize Text Colors

By default the name and reward labels use UIColor.label, so they adapt automatically to the system light/dark theme. If you want to brand them, subclass MCDefaultAdRenderer and override the colors after the default binding:

Dark mode tip: when you pick a custom text color, prefer a UIColor(dynamicProvider:) — or a pair of asset-catalog colors — so your brand remains readable in both appearances. The card sits directly on the host's background, so hardcoded dark colors will disappear in dark mode.

Default Cell Subviews

Property
Type
Description

cell.thumbnailImageView

UIImageView

Campaign image

cell.nameLabel

UILabel

Campaign name

cell.rewardLabel

UILabel

Reward value

cell.currencyImageView

UIImageView

Currency icon

cell.promoBadge

PaddedLabel

Promo badge

cell.progressBadge

PaddedLabel

In Progress badge

All subviews are public on MCDefaultAdCell; cast the cell with cell as? MCDefaultAdCell to access them.


4. Custom Loading View

By default, the SDK shows a pulsing skeleton placeholder while loading:

You can replace it:

Or something more complex with text as well:

Pass nil to restore the default skeleton:


5. Custom Click Handler

Override the default click behavior per-view:

Tip: You can configure the default click behavior globally without writing a custom click handler. Call MCOfferwallSDK.shared.setOpenInApp(true) to open campaign details in an in-app WebView instead of Safari. See the Open Campaign Details In-App.


6. Loading Lifecycle Listener

Monitor loading state for your own UI logic:


Next Steps

Last updated