showAppOpen method
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;
}