Skip to main content

iOS Loading Screen

After a user scans a receipt, the SDK presents a loading screen while it processes the receipt data. This screen serves two purposes: it keeps the user engaged during processing and provides a monetization opportunity by displaying an ad.

The loading screen is fully managed by the SDK — ad selection, format, and delivery are handled automatically based on backend configuration. No additional setup is required from the host app beyond the initial SDK integration.


How It Works

  1. The user scans a receipt.
  2. The SDK presents the loading screen with a progress indicator.
  3. While the receipt is being processed, the SDK fetches and displays a Google ad.
  4. Once processing completes, the SDK transitions to the receipt summary screen or the error screen.

Screen Duration

The loading screen remains visible for a minimum of approximately 7 seconds when no ad is loaded. When an ad is successfully loaded, the screen stays visible until the user dismisses it. This ensures maximum ad viewability and revenue for the host app.


Ad Formats

The SDK supports two ad formats on the loading screen, both served through the Google Mobile Ads SDK:

FormatDescription
BannerA standard Google banner ad displayed on the loading screen.
NativeA Google native ad (static or video) that blends with the loading screen layout.

The format is selected by the backend based on available inventory and campaign configuration. The host app does not need to manage ad format selection.


Dependencies

The SDK uses the Google Mobile Ads SDK for ad delivery. This dependency is included automatically when you add BlinkEngage through Swift Package Manager. No additional setup is needed beyond what is described in iOS Prerequisites.


Testing with Debug Mode

Live ads are only served to apps published on the App Store and registered with AdMob or Google Ad Manager. For development and internal testing builds, pass true to BlinkEngageSDK.start(debugMode:) at launch — the SDK registers the device as a GAM test device and relaxes on-device receipt checks.

// At launch, before any use of BlinkEngageSDK.shared — DEBUG / internal builds only
BlinkEngageSDK.start(debugMode: true)
warning

Use debugMode: false for App Store submissions and customer-facing builds. Internal TestFlight builds may use true for testing.


Customization

The loading screen's colors and fonts can be customized through the Theme protocol:

ElementKeys
Progress bar labeladLoadingLoadingBarLabel (color + font)
Progress bar backgroundadLoadingLoadingBarBackground
Progress bar filladLoadingLoadingBarProgress
Title textadLoadingDefaultTitleLabel (color + font)
Description textadLoadingDefaultDescriptionLabel (color + font)

See the Theming Guide for the full key reference.