class AppOpenAdManager {
  AppOpenAd? _appOpenAd;
  bool _isShowingAd = false;

  void loadAd() {
    AppOpenAd.load(
      adUnitId: 'ca-app-pub-3940256099942544/3419835294', // 실제 광고 단위 ID로 변경하세요
      request: const AdRequest(),
      adLoadCallback: AppOpenAdLoadCallback(
        onAdLoaded: (ad) {
          _appOpenAd = ad;
          debugPrint('앱 오프닝 광고 로드 성공');
          showAdIfAvailable();
        },
        onAdFailedToLoad: (error) {
          debugPrint('앱 오프닝 광고 로드 실패: $error');
        },
      ),
      //orientation: Orientation.portrait,
    );
  }

  void showAdIfAvailable() {
    if (_isShowingAd || _appOpenAd == null) {
      debugPrint('광고를 표시할 수 없습니다.');
      return;
    }

    _appOpenAd!.fullScreenContentCallback = FullScreenContentCallback(
      onAdShowedFullScreenContent: (ad) {
        _isShowingAd = true;
        debugPrint('앱 오프닝 광고가 표시되었습니다.');
      },
      onAdDismissedFullScreenContent: (ad) {
        _isShowingAd = false;
        _appOpenAd = null;
        debugPrint('앱 오프닝 광고가 닫혔습니다.');
        loadAd(); // 광고를 다시 로드
      },
      onAdFailedToShowFullScreenContent: (ad, error) {
        _isShowingAd = false;
        _appOpenAd = null;
        debugPrint('앱 오프닝 광고 표시 실패: $error');
        loadAd(); // 광고를 다시 로드
      },
    );

    _appOpenAd!.show();
  }
}

AppOpenAd: google_mobile_ads 패키지에 있는 객체

ad 객체에 대한 설명은 -5 문서 참고.

void showAdIfAvaliable: 광고가 로드되었고 광고가 표시되어있지 않은 경우 광고를 화면에 표시

_appOpenAd!.fullScreenContentCallback = FullScreenContentCallback(...)

FullScreenContentCallback : 광고 전체 화면 콘텐츠 상태 변화를 처리하는 콜백 클래스

onAdShowedFullScreenContent: 광고가 전체 화면으로 표시되었을 때 호출됨

onAdDismissedFullScreenContent : 광고가 닫혔을 때 호출됨

onAdFailedToShowFullScreenContent: 광고를 표시하는데 실패했을 때 호출됨

 

+ Recent posts