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.