广告bug修复

This commit is contained in:
zeng 2025-07-15 15:42:15 +08:00
parent 73512c7ef1
commit a6219af9ed
13 changed files with 49 additions and 29 deletions

View File

@ -39,3 +39,6 @@ NO.118 Xinling Rd Shanghai Branch
沙盒账号: 沙盒账号:
jiaer@test.com jiaer@test.com
Cje12345 Cje12345
thimra@test.com
Discover2024

View File

@ -122,7 +122,7 @@ extension SceneDelegate {
window?.rootViewController = guideVc window?.rootViewController = guideVc
window?.makeKeyAndVisible() window?.makeKeyAndVisible()
} else if !SPAPPTool.isAppOpen, hasOpenApp == true, SPNetworkReachabilityManager.manager.isReachable == true, SPLoginManager.manager.userInfo?.user_level == .ad { //广 } else if SPLoginManager.manager.userInfo?.user_level == .ad, !SPAPPTool.isAppOpen, hasOpenApp == true, SPNetworkReachabilityManager.manager.isReachable == true { //广
let openAdVC = SPAppOpenAdViewController() let openAdVC = SPAppOpenAdViewController()
openAdVC.didEndBlock = { [weak self] in openAdVC.didEndBlock = { [weak self] in
self?.handleOpenApp() self?.handleOpenApp()

View File

@ -31,7 +31,7 @@ class SPAdAPI {
static func requestAdUnlockVideo(shortPlayId: String, videoId: String, adInfo: SPAdInfo, completer: ((_ model: SPVideoUnlockModel?) -> Void)?) { static func requestAdUnlockVideo(shortPlayId: String, videoId: String, adInfo: SPAdInfo, completer: ((_ model: SPVideoUnlockModel?) -> Void)?) {
var param = SPNetworkParameters(path: "/viewAdsUnlockVideo") var param = SPNetworkParameters(path: "/viewAdsUnlockVideo")
// param.isLoding = true param.isLoding = true
param.parameters = [ param.parameters = [
"short_play_id" : shortPlayId, "short_play_id" : shortPlayId,
"video_id" : videoId, "video_id" : videoId,

View File

@ -31,16 +31,16 @@ class SPNetworkReachabilityManager {
if path.usesInterfaceType(.wifi) { if path.usesInterfaceType(.wifi) {
self.connectionType = .wifi self.connectionType = .wifi
vpLog(message: "+++++++++++++++网络变化==wifi") spLog(message: "+++++++++++++++网络变化==wifi")
} else if path.usesInterfaceType(.cellular) { } else if path.usesInterfaceType(.cellular) {
self.connectionType = .cellular self.connectionType = .cellular
vpLog(message: "+++++++++++++++网络变化==cellular") spLog(message: "+++++++++++++++网络变化==cellular")
} else if path.usesInterfaceType(.wiredEthernet) { } else if path.usesInterfaceType(.wiredEthernet) {
self.connectionType = .wiredEthernet self.connectionType = .wiredEthernet
vpLog(message: "+++++++++++++++网络变化==wiredEthernet") spLog(message: "+++++++++++++++网络变化==wiredEthernet")
} else { } else {
self.connectionType = nil self.connectionType = nil
vpLog(message: "+++++++++++++++网络变化==???") spLog(message: "+++++++++++++++网络变化==???")
} }
if path.status == .satisfied, self.connectionType != nil { if path.status == .satisfied, self.connectionType != nil {

View File

@ -144,11 +144,12 @@ extension SPWebViewController: SPRewardedAdManagerDelegate {
SPRewardedAdManager.manager.delegate = nil SPRewardedAdManager.manager.delegate = nil
} }
func rewardedAdManagerDidDismiss(manager: SPRewardedAdManager) { func rewardedAdManager(manager: SPRewardedAdManager, didDismiss adInfo: SPAdInfo) {
self.needAutoRefresh = true self.needAutoRefresh = true
let js = "uploadCheckSignIn()" let js = "uploadCheckSignIn()"
self.webView.evaluateJavaScript(js) self.webView.evaluateJavaScript(js)
SPRewardedAdManager.manager.delegate = nil SPRewardedAdManager.manager.delegate = nil
} }
} }

View File

@ -86,6 +86,8 @@ class SPPlayerListViewController: SPViewController {
deinit { deinit {
NotificationCenter.default.removeObserver(self) NotificationCenter.default.removeObserver(self)
self.collectionView.delegate = nil
self.collectionView.dataSource = nil
self.collectionView.removeFromSuperview() self.collectionView.removeFromSuperview()
} }

View File

@ -145,6 +145,8 @@ class SPPlayerDetailRecommandView: HWPanModalContentView {
extension SPPlayerDetailRecommandView { extension SPPlayerDetailRecommandView {
@objc private func handleCloseButton() { @objc private func handleCloseButton() {
self.bannerAd.requestStatAd(type: "close", errorMsg: nil)
self.dismiss(animated: true) { self.dismiss(animated: true) {
} }
self.clickCloseButton?() self.clickCloseButton?()

View File

@ -162,8 +162,9 @@ extension SPPlayerListViewModel {
//MARK: -------------- SPAdManagerDelegate -------------- //MARK: -------------- SPAdManagerDelegate --------------
extension SPPlayerListViewModel: SPRewardedAdManagerDelegate { extension SPPlayerListViewModel: SPRewardedAdManagerDelegate {
/// func rewardedAdManager(manager: SPRewardedAdManager, didDismiss adInfo: SPAdInfo) {
func rewardedAdManager(manager: SPRewardedAdManager, userDidEarnReward adInfo: SPAdInfo) { manager.delegate = nil
let videoInfo = self.currentPlayer?.videoInfo let videoInfo = self.currentPlayer?.videoInfo
guard let shortPlayId = videoInfo?.short_play_id, let videoId = videoInfo?.short_play_video_id else { return } guard let shortPlayId = videoInfo?.short_play_id, let videoId = videoInfo?.short_play_video_id else { return }
@ -181,9 +182,6 @@ extension SPPlayerListViewModel: SPRewardedAdManagerDelegate {
} }
} }
func rewardedAdManagerDidDismiss(manager: SPRewardedAdManager) {
manager.delegate = nil
}
func rewardedAdManager(manager: SPRewardedAdManager, didLoadFail error: any Error) { func rewardedAdManager(manager: SPRewardedAdManager, didLoadFail error: any Error) {
manager.delegate = nil manager.delegate = nil

View File

@ -117,7 +117,7 @@ extension SPAppOpenAdManager: FullScreenContentDelegate {
} }
func ad(_ ad: FullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) { func ad(_ ad: FullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
self.requestStatAd(type: "show_failed", errorMsg: nil) self.requestStatAd(type: "show_failed", errorMsg: error.localizedDescription)
appOpenAd = nil appOpenAd = nil
isShowingAd = false isShowingAd = false
@ -137,8 +137,6 @@ extension SPAppOpenAdManager: FullScreenContentDelegate {
extension SPAppOpenAdManager { extension SPAppOpenAdManager {
private func requestStatAd(type: String, errorMsg: String?) { private func requestStatAd(type: String, errorMsg: String?) {
guard appOpenAd != nil else { return }
let model = SPStatAdModel() let model = SPStatAdModel()
model.type = type model.type = type
model.ads_id = adUnitID model.ads_id = adUnitID
@ -151,6 +149,7 @@ extension SPAppOpenAdManager {
@objc private func didEnterBackgroundNotification() { @objc private func didEnterBackgroundNotification() {
guard appOpenAd != nil else { return }
self.requestStatAd(type: "Interrupt", errorMsg: nil) self.requestStatAd(type: "Interrupt", errorMsg: nil)
} }

View File

@ -54,6 +54,7 @@ class SPBannerAd: NSObject {
//MARK: -------------- BannerViewDelegate -------------- //MARK: -------------- BannerViewDelegate --------------
extension SPBannerAd: BannerViewDelegate { extension SPBannerAd: BannerViewDelegate {
func bannerViewDidReceiveAd(_ bannerView: BannerView) { func bannerViewDidReceiveAd(_ bannerView: BannerView) {
self.requestStatAd(type: "start", errorMsg: nil)
self.delegate?.bannerAdDidLoadFinish?(bannerAd: self) self.delegate?.bannerAdDidLoadFinish?(bannerAd: self)
} }
@ -72,7 +73,6 @@ extension SPBannerAd: BannerViewDelegate {
} }
func bannerViewWillPresentScreen(_ bannerView: BannerView) { func bannerViewWillPresentScreen(_ bannerView: BannerView) {
self.requestStatAd(type: "start", errorMsg: nil)
self.delegate?.bannerAdDidShow?(bannerAd: self) self.delegate?.bannerAdDidShow?(bannerAd: self)
} }
@ -89,7 +89,9 @@ extension SPBannerAd: BannerViewDelegate {
//MARK: -------------- -------------- //MARK: -------------- --------------
extension SPBannerAd { extension SPBannerAd {
private func requestStatAd(type: String, errorMsg: String?) { func requestStatAd(type: String, errorMsg: String?) {
guard self.view.superview != nil else { return }
let model = SPStatAdModel() let model = SPStatAdModel()
model.type = type model.type = type
model.ads_id = adUnitID model.ads_id = adUnitID

View File

@ -12,10 +12,6 @@ import AppLovinSDK
extension SPRewardedAdManager { extension SPRewardedAdManager {
var appLovin_adUnitID: String {
return "ca-app-pub-3940256099942544/1712485313"
}
fileprivate struct AssociatedKeys { fileprivate struct AssociatedKeys {
static var appLovin_rewardedAd: Int? static var appLovin_rewardedAd: Int?
static var appLovin_needShowRewardedAd: Int? static var appLovin_needShowRewardedAd: Int?

View File

@ -19,7 +19,7 @@ import UIKit
///广 ///广
@objc optional func rewardedAdManagerDidShow(manager: SPRewardedAdManager) @objc optional func rewardedAdManagerDidShow(manager: SPRewardedAdManager)
///广 ///广
@objc optional func rewardedAdManagerDidDismiss(manager: SPRewardedAdManager) @objc optional func rewardedAdManager(manager: SPRewardedAdManager, didDismiss adInfo: SPAdInfo)
} }
class SPRewardedAdManager: NSObject { class SPRewardedAdManager: NSObject {
@ -202,9 +202,22 @@ extension SPRewardedAdManager {
self.requestStatAd(type: "load_failed", errorMsg: error.localizedDescription) self.requestStatAd(type: "load_failed", errorMsg: error.localizedDescription)
} }
self.isEnable = false
self.clean() self.clean()
if self.adInfo?.platform_key != .google {//广
self.isLoadingRewardedAd = true
let adInfo = SPAdInfo()
adInfo.platform_key = .google
adInfo.ads_id = SPAdManager.manager.admob_rewardedAdUnitID
self.adInfo = adInfo
self.admob_loadRewardedAd(adInfo: adInfo)
} else {
self.isEnable = false
self.retryLoadAd() self.retryLoadAd()
}
} }
@ -251,11 +264,13 @@ extension SPRewardedAdManager {
self.requestStatAd(type: "close", seconds: seconds, errorMsg: nil) { [weak self] in self.requestStatAd(type: "close", seconds: seconds, errorMsg: nil) { [weak self] in
guard let self = self else { return } guard let self = self else { return }
self.delegate?.rewardedAdManagerDidDismiss?(manager: self) if let adInfo = self.adInfo {
self.delegate?.rewardedAdManager?(manager: self, didDismiss: adInfo)
} }
self.clean() self.clean()
preloadRewardedAd() self.preloadRewardedAd()
}
} }

View File

@ -67,10 +67,12 @@ class SPUserInfo: SPModel, SmartCodable, NSSecureCoding {
if let user_level = coder.decodeObject(of: NSString.self, forKey: "user_level") as? String { if let user_level = coder.decodeObject(of: NSString.self, forKey: "user_level") as? String {
self.user_level = UserLevel(rawValue: user_level) self.user_level = UserLevel(rawValue: user_level)
} }
is_vip = coder.decodeBool(forKey: "is_vip") is_vip = coder.decodeObject(of: NSNumber.self, forKey: "is_vip")?.boolValue
family_name = coder.decodeObject(of: NSString.self, forKey: "family_name") as? String family_name = coder.decodeObject(of: NSString.self, forKey: "family_name") as? String
giving_name = coder.decodeObject(of: NSString.self, forKey: "giving_name") as? String giving_name = coder.decodeObject(of: NSString.self, forKey: "giving_name") as? String
} }
} }