Admob Plugin (CSCMobi) hỗ trợ tích hợp Google Mobile Ads (AdMob) vào game, tập trung vào:
Tự động lấy cấu hình App ID từ GoogleMobileAdsSettings hoặc AppLovin Settings.
Quản lý App Open Ads (AOA) - quảng cáo mở app.
Tracking impression và revenue (doanh thu) từ AdMob Mediation gửi về GSM, Firebase và Adjust.
2. Cấu trúc thư mục
AdmobPlugin/
├── Editor/
│ └── AdmobPluginPreBuildProcessor.cs # Script editor (tự tạo googleMobileAds.json khi build)
├── Resources/
│ └── googleMobileAds.json # File config Runtime (tự sinh, không nên sửa tay)
├── Scripts/
│ ├── GSMAdmobInfo.cs # Khởi tạo thông tin AdMob
│ ├── BaseAdmobAppOpenController.cs # Base class quản lý AOA
│ └── GSMAdmobAppOpenCounterLog.cs # Counter log cho AOA (First load/show)
3. Cấu hình & Khởi tạo (GSMAdmobInfo)
GSMAdmobInfo là component tĩnh, tự động chạy sau khi Scene load (RuntimeInitializeOnLoadMethod).
Chức năng chính:
Lấy App ID:
Trong Editor: Lấy từ GoogleMobileAdsSettings hoặc AppLovinSettings.
Khi chạy thật (Runtime): Lấy từ file Resources/googleMobileAds.json.
Validation: So sánh App ID trong config AdMob và config AppLovin (MAX). Nếu khác nhau sẽ báo lỗi log.
Khởi tạo: Gọi GSMCore.Instance.SetAdmobInfo để truyền App ID và Unit ID vào hệ thống core.
Lưu ý quan trọng:
Khi build, AdmobPluginPreBuildProcessor sẽ tự động đọc setting từ Editor và tạo ra file Resources/googleMobileAds.json. File này chứa App ID và phiên bản SDK.
Không xóa hoặc sửa thủ công file googleMobileAds.json vì nó sẽ bị ghi đè mỗi khi build.
4. App Open Ads (BaseAdmobAppOpenController)
Để sử dụng quảng cáo mở app (AOA), bạn cần tạo một script kế thừa từ BaseAdmobAppOpenController.
Các hàm abstract cần cài đặt:
GetAdmobAdUnitId(): Trả về ID của Ad Unit (string).
GetCanShow(): Logic kiểm tra game có đang cho phép hiện AOA không (ví dụ: không hiện khi đang tutorial).
GetTargetLevel(), GetGroup(), GetSubGroup(), GetUserType(): Các hàm trả về info để tracking user.
Tính năng có sẵn:
PreLoad: Tự động tải trước quảng cáo nếu CanPreLoad() trả về true. Trạng thái này được lưu trong PlayerPrefs (CanPreLoadAOA).
ShowAd: Hiển thị quảng cáo. Nếu quảng cáo chưa sẵn sàng, nó sẽ cố tải lại.
Counter Log: Tự động log các mốc quan trọng vào GSMAnalytics để theo dõi tỷ lệ hiển thị thành công của lần đầu tiên (Funnel tracking):
01.First_Load
02.First_Load_Success
03.First_Show
04.First_Show_Success
5. Impression Tracking (AdmobMediationTracking)
Class AdmobMediationTracking (nằm trong thư mục LogImpression) chịu trách nhiệm tracking doanh thu quảng cáo.
Hỗ trợ các định dạng:
App Open Ad
Banner / Collapsible Banner
Interstitial
Rewarded / Rewarded Interstitial
Luồng dữ liệu:
Khi một quảng cáo được hiển thị và trả về AdValue, hệ thống sẽ:
Tính Revenue = value / 1,000,000.
Gửi dữ liệu doanh thu tới 3 nơi:
Firebase Analytics:LogFirebaseImpression
Adjust:LogAdjustImpression (thông qua AdjustAdRevenue)
GSM Analytics:LogGSMImpression
6. Checklist triển khai
Trước khi build, hãy kiểm tra:
GoogleMobileAdsSettings: Đã điền đúng App ID cho Android và iOS chưa? (Assets > Google Mobile Ads > Settings)
AppLovin Settings: Nếu dùng MAX Mediation, check xem App ID khai báo trong MAX có khớp với AdMob không. Plugin sẽ báo lỗi nếu lệch.
App Open Ad Script: Đã có script kế thừa BaseAdmobAppOpenController gắn vào game launch chưa?
7. Sample Code
Ở GSM Settings
Code mẫu:
Khi ở màn hình Loading khoảng 3-4s sau khi vào game, thì gọi ShowFirst