68 lines
1.7 KiB
Swift
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)
|
|
}
|
|
|
|
}
|