'기타 자료들' 카테고리의 다른 글
| Visual studio에서 %n이 되지 않아요! (0) | 2018.11.21 |
|---|---|
| 영상처리 관련 블로그 (0) | 2018.09.29 |
| 모두를 위한 머신러닝/딥러닝 강의 (0) | 2018.08.30 |
| 간단한 타일형 광고 제작 사이트 tyle.io (1) | 2018.07.04 |
| 무료 3D 애니메이션 사이트 Mixamo (0) | 2018.06.18 |
| Visual studio에서 %n이 되지 않아요! (0) | 2018.11.21 |
|---|---|
| 영상처리 관련 블로그 (0) | 2018.09.29 |
| 모두를 위한 머신러닝/딥러닝 강의 (0) | 2018.08.30 |
| 간단한 타일형 광고 제작 사이트 tyle.io (1) | 2018.07.04 |
| 무료 3D 애니메이션 사이트 Mixamo (0) | 2018.06.18 |
class AppBannerAdManager {
BannerAd? _bannerAd;
bool _isAdLoaded = false;
VoidCallback? onAdLoadedCallback;
AppBannerAdManager({this.onAdLoadedCallback});
void loadBannerAd() {
_bannerAd = BannerAd(
adUnitId: 'ca-app-pub-3940256099942544/9214589741', // 실제 광고 단위 ID로 변경
size: AdSize.banner,
request: AdRequest(),
listener: BannerAdListener(
onAdLoaded: (Ad ad) {
_isAdLoaded = true;
print('배너 광고 로드 성공');
// 광고 로드 시 상태 업데이트
// 이때 setState를 호출하려면 해당 클래스가 StatefulWidget이어야 합니다.
// 하지만 AppBannerAdManager는 그렇지 않으므로, 콜백으로 상태 업데이트를 전달해야 합니다.
onAdLoadedCallback?.call();
},
onAdFailedToLoad: (Ad ad, LoadAdError error) {
ad.dispose();
print('배너 광고 로드 실패: $error');
},
),
);
_bannerAd!.load();
}
광고 로드 및 리소스 해제 기능을 제공하는 class
BannerAd? _BannerAd: google_mobile_ads 패키지에 있는 객체. ?는 null일 수 있음을 의미한다.
VoidCallback? onAdLoadedCallback: 광고가 로드되었을 때 호출될 콜백 함수.
AppBannerAdManager({this.onAdLoadedCallback}): 생성자. onAdLoadedCallback을 배개변수로 받음.
void loadBannerAd(): 배너 광고를 초기화하고 로드하는 역할
_bannerAd = BannerAd(...) : 새로운 BannerAd 인스턴스 생성
listenr: BannerAdListener: 광고 로드 상태를 모니터링하는 리스너
onAdLoaded: 광고가 정상적으로 로드됐을 경우. onAdLoadedCallback을 호출. ApBannerAdManager는 StatefulWidget이 아니므로 setState가 아니라 callback을 통해 상태 업데이트를 전달한다.
onAdFailedToLoad: 로드 실패했을 때, dispose로 리소스를 해제한다.
_bannerAd!.load(): 광고를 실제로 로드하는 method. 여기서 로드에 성공하면 listener 처리가 시작된다.
double? get bannerHeight => _isAdLoaded?_bannerAd?.size.height.toDouble() : 0: 광고가 로드되면 광고 높이 확인
Widget getBannerWidget(): 배너 광고가 로드된 경우 광고를 표시하는 위젯을 반환. 로드 실패 시, 빈 위젯 반환
Container: 광고를 감싸는 컨테이너 위젯
child: AdWidget(ad: _bannerAd!): 광고 객체를 전달받아서 표시. Container안에 bannerAd를 child로 두고 표시.
SizedBox.shrink(): 빈 공간을 차지하지 않는 위젯
| flutter barometer, accelerometer, magentometer, gyroscope 예시 (0) | 2024.12.30 |
|---|---|
| flutter 앱 개발 소스 분석-3 (0) | 2024.12.12 |
| flutter 앱 개발 소스 분석-2 (0) | 2024.12.11 |
| flutter 앱 개발 소스 분석-1 (1) | 2024.12.11 |
| windows에서 안드로이드 개발을 위해 사용했던 flutter 프로젝트가 macOS의 ios 에뮬레이터에서 동작을 안할 때 (0) | 2024.12.08 |
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: 광고를 표시하는데 실패했을 때 호출됨
| flutter barometer, accelerometer, magentometer, gyroscope 예시 (0) | 2024.12.30 |
|---|---|
| flutter 앱 개발 소스 분석-5 (0) | 2024.12.12 |
| flutter 앱 개발 소스 분석-2 (0) | 2024.12.11 |
| flutter 앱 개발 소스 분석-1 (1) | 2024.12.11 |
| windows에서 안드로이드 개발을 위해 사용했던 flutter 프로젝트가 macOS의 ios 에뮬레이터에서 동작을 안할 때 (0) | 2024.12.08 |