Omnilatent / OmniAdsManager

Omnipotence Ads Manager for Unity
0 stars 0 forks source link

Hỗ trợ cache nhiều banner cùng 1 lúc #5

Open jacattrongnlh opened 6 months ago

jacattrongnlh commented 6 months ago

Dự định cập nhật Ads Manager về Banner: Vấn đề hiện tại: Game cần hiện Collapsible banner theo kiểu cứ x giây thì thò lên. Để giải quyết thì cần load 2 banner song song, 1 banner thường, 1 banner collapsible. Hiện tại thư viện đang chỉ hỗ trợ 1 banner 1 lúc.

Giải quyết: Cập nhật thư viện để hỗ trợ cache nhiều banner trong cùng 1 thời điểm.

jacattrongnlh commented 6 months ago

Update nhiều code liên quan đến banner:

Thay đổi đến IAdsNetworkHelper ảnh hưởng đến các plugin mạng khác đang dùng interface IAdsNetworkHelper:

[System.Obsolete("Use ShowBanner(AdPlacement.Type, BannerTransform, BannerManager.BannerLoadDelegate) instead.")]
    void ShowBanner(AdPlacement.Type placementType, AdsManager.InterstitialDelegate onAdLoaded = null);

    [System.Obsolete("Use ShowBanner(AdPlacement.Type, BannerTransform, BannerManager.BannerLoadDelegate) instead.")]
    void ShowBanner(AdPlacement.Type placementType, BannerTransform bannerTransform, AdsManager.InterstitialDelegate onAdLoaded = null);

    void ShowBanner(AdPlacement.Type placementType, BannerTransform bannerTransform, BannerLoadDelegate onAdLoaded = null);

    [Obsolete("Use HideBanner(AdPlacement.Type) instead")]
    void HideBanner();

    void HideBanner(AdPlacement.Type placementType);

    [Obsolete("Use DestroyBanner(AdPlacement.Type) instead")]
    void DestroyBanner();

    void DestroyBanner(AdPlacement.Type placementType);

Thay đổi trong pull request: https://github.com/Omnilatent/OmniAdsManager/pull/6

jacattrongnlh commented 6 months ago

Những code dùng HideBanner(), DestroyBanner() (không có param) vẫn sẽ hoạt động, nhưng KHÔNG được dùng chung với HideBanner(AdPlacement.Type placementType), DestroyBanner(AdPlacement.Type placementType), KHÔNG Show nhiều banner trong cùng 1 thời điểm. Làm như vậy sẽ lỗi.

Code ShowBanner() param kiểu cũ (dùng AdsManager.InterstitialDelegate) vẫn sẽ hoạt động.

jacattrongnlh commented 6 months ago

Về callback mới BannerLoadDelegate(bool isSuccess, BannerAdObject loadedAdObject):

Để hỗ trợ cache được nhiều banner và show hide những banner này tùy ý, thay đổi code như sau:

Code banner được di chuyển từ AdsManager sang Omnilatent.AdsMediation.BannerManager.

Những Banner được cache sẽ được lưu trong BannerManager._cachedBanners.

Khi gọi hàm ShowBanner():

Khi gọi Hide/Destroy Banner():

Điểm bất lợi của luồng này: