Veloria/Veloria/Libs/AdManager/Rewarded/VPApplovinRewardedAd.swift

92 lines
2.1 KiB
Swift

//
// VPApplovinRewardedAd.swift
// Veloria
//
// Created by on 2025/7/15.
//
import UIKit
#if canImport(AppLovinSDK)
import AppLovinSDK
#endif
class VPApplovinRewardedAd: NSObject, VPRewardedAd {
#if canImport(AppLovinSDK)
private var rewardedAd: MARewardedAd?
#endif
weak var delegate: (any VPRewardedAdDelegate)?
var adInfo: VPAdInfo?
var isReady: Bool {
#if canImport(AppLovinSDK)
return rewardedAd?.isReady ?? false
#else
return false
#endif
}
func loadAd(adInfo: VPAdInfo) {
self.adInfo = adInfo
#if canImport(AppLovinSDK)
rewardedAd = MARewardedAd.shared(withAdUnitIdentifier: adInfo.ads_id ?? "")
rewardedAd?.delegate = self
rewardedAd?.load()
#endif
}
func showAd() {
#if canImport(AppLovinSDK)
if isReady {
rewardedAd?.show()
}
#endif
}
}
#if canImport(AppLovinSDK)
//MARK: -------------- MARewardedAdDelegate --------------
extension VPApplovinRewardedAd: MARewardedAdDelegate {
func didLoad(_ ad: MAAd) {
self.delegate?.rewardedAdDidLoadFinish?(ad: self)
}
func didFailToLoadAd(forAdUnitIdentifier adUnitIdentifier: String, withError error: MAError) {
let nsError = NSError(domain: error.message, code: error.code.rawValue)
self.delegate?.rewardedAd?(ad: self, didLoadFail: nsError)
}
func didDisplay(_ ad: MAAd) {
self.delegate?.rewardedAdDidShow?(ad: self)
}
func didHide(_ ad: MAAd) {
self.delegate?.rewardedAdDidDismiss?(ad: self)
}
func didClick(_ ad: MAAd) {
self.delegate?.rewardedAdDidClick?(ad: self)
}
func didFail(toDisplay ad: MAAd, withError error: MAError) {
let nsError = NSError(domain: error.message, code: error.code.rawValue)
self.delegate?.rewardedAd?(ad: self, didDisplayFail: nsError)
}
func didRewardUser(for ad: MAAd, with reward: MAReward) {
if let adInfo = self.adInfo {
self.delegate?.rewardedAd?(ad: self, userDidEarnReward: adInfo)
}
}
}
#endif