92 lines
2.1 KiB
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
|
|
|
|
|