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
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
Need a completely different card design? See Custom Layouts →
Need the full data reference? See Data Reference →
Last updated