Block app-open ads until unblockAppOpen is called with the same reason.
timeout is a safety net — the blocker auto-clears after it elapses,
so a missed unblock can't permanently disable app-open ads.
Called on every screen visit to passively track frequency.
Does NOT trigger a load — only shows if an ad is already cached.
Use showBeforeNavigation for navigation-gated ad display instead.
Shows an interstitial before navigation when the threshold is met.
Counter is only reset if an ad was actually ready to show.
If no ad is cached, the user navigates freely and a background load starts.
Skip the next app-open ad opportunity (one-shot).
Use right before launching something that briefly leaves the app:
permission dialogs, openAppSettings(), share sheet, intent chooser...