ThimraTV/ThimraTV/Libs/AdManager/AppOpenAd/SPAdmobAppOpenAd.swift
2025-07-16 17:06:13 +08:00

68 lines
1.7 KiB
Swift

//
// SPAdmobAppOpenAd.swift
// ThimraTV
//
// Created by on 2025/7/15.
//
import UIKit
import GoogleMobileAds
class SPAdmobAppOpenAd: NSObject, SPAppOpenAd {
private var appOpenAd: AppOpenAd?
var delegate: (any SPAppOpenAdDelegate)?
var adPlatformKey: String {
return SPAdPlatformKey.google.rawValue
}
var adUnitID: String {
return SPAdManager.manager.admob_appOpenAdUnitID
}
var isReady: Bool {
return appOpenAd != nil
}
func loadAd() {
AppOpenAd.load(with: adUnitID, request: Request()) { [weak self] appOpenAd, error in
guard let self = self else { return }
self.appOpenAd = appOpenAd
self.appOpenAd?.fullScreenContentDelegate = self
if let error = error {
self.delegate?.appOpenAd?(ad: self, didLoadFail: error)
} else {
self.delegate?.appOpenAdDidLoadFinish?(ad: self)
}
}
}
func showAd() {
appOpenAd?.present(from: nil)
}
}
extension SPAdmobAppOpenAd: FullScreenContentDelegate {
func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
self.delegate?.appOpenAdDidShow?(ad: self)
}
func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
self.delegate?.appOpenAdDidDismiss?(ad: self)
}
func ad(_ ad: FullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
self.delegate?.appOpenAd?(ad: self, didDisplayFail: error)
}
func adDidRecordClick(_ ad: any FullScreenPresentingAd) {
self.delegate?.appOpenAdDidClick?(ad: self)
}
}