Hệ thống quảng cáo được thiết kế để tối ưu hóa doanh thu quảng cáo trong khi vẫn duy trì trải nghiệm người dùng tốt nhất. Module này có thể dễ dàng tích hợp vào ứng dụng Flutter và cung cấp các công cụ để quản lý quảng cáo một cách thông minh.
lib/ad_system/
├── ads_manager.dart # Facade chính cho hệ thống quảng cáo
├── ads_manual.md # Tài liệu hướng dẫn chi tiết và chiến lược
├── controllers/
│ └── ad_controller.dart # Quản lý trạng thái và quyết định hiển thị quảng cáo
├── models/
│ ├── ad_types.dart # Định nghĩa các loại quảng cáo
│ └── user_segment.dart # Phân nhóm người dùng
├── services/
│ ├── ad_service.dart # Tương tác với SDK quảng cáo
│ └── analytics_service.dart # Theo dõi sự kiện quảng cáo
├── utils/
│ └── ad_colors.dart # Hằng số màu sắc cho UI quảng cáo
├── widgets/
│ ├── ad_skeleton_loader.dart # Skeleton loader cho quảng cáo đang tải
│ ├── glass_ad_panel.dart # Container với hiệu ứng kính
│ ├── rewarded_ad_button.dart # Nút hiển thị quảng cáo có thưởng
│ ├── smart_banner_ad.dart # Widget banner thông minh
│ └── smart_native_ad.dart # Widget native ad thông minh
Khởi tạo hệ thống quảng cáo trong main.dart hoặc khi bootstrap ứng dụng:
await
AdsManager.instance.initialize
();// Trong widget tree
SmartBannerAd
(
useGlassEffect: true,
fallbackContent: YourCustomWidget(),
)// Trong widget tree
SmartNativeAd
(
height: 280,
useGlassEffect: true,
loadingWidget: AdSkeletonLoader(
height
:
280
)
,
)// Khi hoàn thành một hành động lớn
final bool shown = await
AdsManager.instance.showInterstitialAd
();
// Tiếp tục logic của bạn bất kể quảng cáo có hiển thị hay khôngRewardedAdButton
(
label: 'Xem quảng cáo',
rewardAmount: 50,
rewardType: 'xu',
onRewardEarned: (amount, type) {
// Xử lý khi người dùng nhận thưởng
userCoins.value += amount;
Get.snackbar('Thành công', 'Bạn đã nhận được $amount $type');
},
)AdsManager.instance.showRewardedAd
(
onRewarded: (type, amount) {
// Xử lý khi người dùng nhận thưởng
userCoins.value += amount;
},
);Để tắt quảng cáo cho người dùng premium:
AdsManager.instance.setPremiumUser
(true);Để tạo phiên không có quảng cáo (ví dụ: sau khi mua hàng):
AdsManager.instance.setAdFreeSession
(true);Thêm các phụ thuộc sau vào pubspec.yaml:
dependencies:
google_mobile_ads: ^4.0.0 # Hoặc phiên bản mới nhất
get: ^4.6.5 # Cho state management
shimmer: ^3.0.0 # Cho skeleton loading effectHệ thống hỗ trợ A/B testing thông qua nhóm người dùng:
// Đặt nhóm A/B cho người dùng
AdsManager.instance.setAbTestGroup
('A
'
);
// Cập nhật cài đặt cho nhóm
AdsManager.instance.updateAdSettings(
maxInterstitialPerSession: 2,
minSecondsBetweenInterstitials:
180
, // 3 phút
);GlassAdPanel
(
borderRadius: 20,
blurIntensity: 16,
opacity: 0.1,
child
:
YourContent
(
)
,
)AdSkeletonLoader
(
height: 280,
borderRadius: 20,
baseColor: Colors.grey.shade300,
highlightColor: Colors.white,
)Để biết thêm thông tin chi tiết về chiến lược tối ưu hóa quảng cáo, xem file ads_manual.md.
Nếu bạn phát hiện lỗi hoặc có đề xuất cải tiến, vui lòng tạo issue hoặc pull request.