showAppOpen method

Future<bool> showAppOpen()

Implementation

Future<bool> showAppOpen() async {
  if (!_isSafeToOperate) return false;
  if (!hasAppOpen || _isProUser()) return false;
  if (isAppOpenBlocked) {
    if (_skipNextAppOpen) {
      _skipNextAppOpen = false;
      dPrint('⏭️ AppOpen: skipped one opportunity');
    } else {
      dPrint('🛡️ AppOpen: blocked while a protected flow is active');
    }
    return false;
  }
  if (_appOpenHandler == null) return false;

  if (!_appOpenHandler!.isLoaded) {
    final loaded = await _loadWithRetry(AdType.appOpen);
    if (!loaded) return false;
  }

  _bannerController.onDialogOpened();
  final shown = await _appOpenHandler!.show();

  if (!shown) {
    _bannerController.onDialogClosed();
    _loadWithRetry(AdType.appOpen);
  }

  return shown;
}