From a6219af9ed0fb3dbf9fa631359392b53b66d9039 Mon Sep 17 00:00:00 2001 From: zeng Date: Tue, 15 Jul 2025 15:42:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B9=BF=E5=91=8Abug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Apple账号资料.txt | 3 ++ ThimraTV/AppDelegate/SceneDelegate.swift | 2 +- ThimraTV/Base/Networking/API/SPAdAPI.swift | 2 +- .../Base/SPNetworkReachabilityManager.swift | 8 ++--- .../SPWebViewController+ScriptMessage.swift | 3 +- .../SPPlayerListViewController.swift | 2 ++ .../View/SPPlayerDetailRecommandView.swift | 2 ++ .../ViewModel/SPPlayerListViewModel.swift | 8 ++--- .../AppOpenAd/SPAppOpenAdManager.swift | 5 ++-- .../Libs/AdManager/BannerAd/SPBannerAd.swift | 6 ++-- .../SPRewardedAdManager+AppLovin.swift | 4 --- .../RewardedAd/SPRewardedAdManager.swift | 29 ++++++++++++++----- ThimraTV/Libs/User/SPUserInfo.swift | 4 ++- 13 files changed, 49 insertions(+), 29 deletions(-) diff --git a/Apple账号资料.txt b/Apple账号资料.txt index b46cf34..79020d9 100644 --- a/Apple账号资料.txt +++ b/Apple账号资料.txt @@ -39,3 +39,6 @@ NO.118 Xinling Rd Shanghai Branch 沙盒账号: jiaer@test.com Cje12345 + +thimra@test.com +Discover2024 diff --git a/ThimraTV/AppDelegate/SceneDelegate.swift b/ThimraTV/AppDelegate/SceneDelegate.swift index 8b73b19..96fdea0 100644 --- a/ThimraTV/AppDelegate/SceneDelegate.swift +++ b/ThimraTV/AppDelegate/SceneDelegate.swift @@ -122,7 +122,7 @@ extension SceneDelegate { window?.rootViewController = guideVc 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() openAdVC.didEndBlock = { [weak self] in self?.handleOpenApp() diff --git a/ThimraTV/Base/Networking/API/SPAdAPI.swift b/ThimraTV/Base/Networking/API/SPAdAPI.swift index c514125..a25616e 100644 --- a/ThimraTV/Base/Networking/API/SPAdAPI.swift +++ b/ThimraTV/Base/Networking/API/SPAdAPI.swift @@ -31,7 +31,7 @@ class SPAdAPI { static func requestAdUnlockVideo(shortPlayId: String, videoId: String, adInfo: SPAdInfo, completer: ((_ model: SPVideoUnlockModel?) -> Void)?) { var param = SPNetworkParameters(path: "/viewAdsUnlockVideo") -// param.isLoding = true + param.isLoding = true param.parameters = [ "short_play_id" : shortPlayId, "video_id" : videoId, diff --git a/ThimraTV/Base/Networking/Base/SPNetworkReachabilityManager.swift b/ThimraTV/Base/Networking/Base/SPNetworkReachabilityManager.swift index e9d8e3b..8c8c2cf 100644 --- a/ThimraTV/Base/Networking/Base/SPNetworkReachabilityManager.swift +++ b/ThimraTV/Base/Networking/Base/SPNetworkReachabilityManager.swift @@ -31,16 +31,16 @@ class SPNetworkReachabilityManager { if path.usesInterfaceType(.wifi) { self.connectionType = .wifi - vpLog(message: "+++++++++++++++网络变化==wifi") + spLog(message: "+++++++++++++++网络变化==wifi") } else if path.usesInterfaceType(.cellular) { self.connectionType = .cellular - vpLog(message: "+++++++++++++++网络变化==cellular") + spLog(message: "+++++++++++++++网络变化==cellular") } else if path.usesInterfaceType(.wiredEthernet) { self.connectionType = .wiredEthernet - vpLog(message: "+++++++++++++++网络变化==wiredEthernet") + spLog(message: "+++++++++++++++网络变化==wiredEthernet") } else { self.connectionType = nil - vpLog(message: "+++++++++++++++网络变化==???") + spLog(message: "+++++++++++++++网络变化==???") } if path.status == .satisfied, self.connectionType != nil { diff --git a/ThimraTV/Base/WebView/SPWebViewController+ScriptMessage.swift b/ThimraTV/Base/WebView/SPWebViewController+ScriptMessage.swift index 3e29c4e..08961cd 100644 --- a/ThimraTV/Base/WebView/SPWebViewController+ScriptMessage.swift +++ b/ThimraTV/Base/WebView/SPWebViewController+ScriptMessage.swift @@ -144,11 +144,12 @@ extension SPWebViewController: SPRewardedAdManagerDelegate { SPRewardedAdManager.manager.delegate = nil } - func rewardedAdManagerDidDismiss(manager: SPRewardedAdManager) { + func rewardedAdManager(manager: SPRewardedAdManager, didDismiss adInfo: SPAdInfo) { self.needAutoRefresh = true let js = "uploadCheckSignIn()" self.webView.evaluateJavaScript(js) SPRewardedAdManager.manager.delegate = nil } + } diff --git a/ThimraTV/Class/Player/Controller/SPPlayerListViewController.swift b/ThimraTV/Class/Player/Controller/SPPlayerListViewController.swift index 6e9ca8c..3174692 100644 --- a/ThimraTV/Class/Player/Controller/SPPlayerListViewController.swift +++ b/ThimraTV/Class/Player/Controller/SPPlayerListViewController.swift @@ -86,6 +86,8 @@ class SPPlayerListViewController: SPViewController { deinit { NotificationCenter.default.removeObserver(self) + self.collectionView.delegate = nil + self.collectionView.dataSource = nil self.collectionView.removeFromSuperview() } diff --git a/ThimraTV/Class/Player/View/SPPlayerDetailRecommandView.swift b/ThimraTV/Class/Player/View/SPPlayerDetailRecommandView.swift index 14dae58..e47f623 100644 --- a/ThimraTV/Class/Player/View/SPPlayerDetailRecommandView.swift +++ b/ThimraTV/Class/Player/View/SPPlayerDetailRecommandView.swift @@ -145,6 +145,8 @@ class SPPlayerDetailRecommandView: HWPanModalContentView { extension SPPlayerDetailRecommandView { @objc private func handleCloseButton() { + self.bannerAd.requestStatAd(type: "close", errorMsg: nil) + self.dismiss(animated: true) { } self.clickCloseButton?() diff --git a/ThimraTV/Class/Player/ViewModel/SPPlayerListViewModel.swift b/ThimraTV/Class/Player/ViewModel/SPPlayerListViewModel.swift index 431e2c1..5698955 100644 --- a/ThimraTV/Class/Player/ViewModel/SPPlayerListViewModel.swift +++ b/ThimraTV/Class/Player/ViewModel/SPPlayerListViewModel.swift @@ -162,8 +162,9 @@ extension SPPlayerListViewModel { //MARK: -------------- SPAdManagerDelegate -------------- extension SPPlayerListViewModel: SPRewardedAdManagerDelegate { - ///用户获得奖励 - func rewardedAdManager(manager: SPRewardedAdManager, userDidEarnReward adInfo: SPAdInfo) { + func rewardedAdManager(manager: SPRewardedAdManager, didDismiss adInfo: SPAdInfo) { + manager.delegate = nil + let videoInfo = self.currentPlayer?.videoInfo 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) { manager.delegate = nil diff --git a/ThimraTV/Libs/AdManager/AppOpenAd/SPAppOpenAdManager.swift b/ThimraTV/Libs/AdManager/AppOpenAd/SPAppOpenAdManager.swift index 7903be5..124f112 100644 --- a/ThimraTV/Libs/AdManager/AppOpenAd/SPAppOpenAdManager.swift +++ b/ThimraTV/Libs/AdManager/AppOpenAd/SPAppOpenAdManager.swift @@ -117,7 +117,7 @@ extension SPAppOpenAdManager: FullScreenContentDelegate { } func ad(_ ad: FullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) { - self.requestStatAd(type: "show_failed", errorMsg: nil) + self.requestStatAd(type: "show_failed", errorMsg: error.localizedDescription) appOpenAd = nil isShowingAd = false @@ -137,8 +137,6 @@ extension SPAppOpenAdManager: FullScreenContentDelegate { extension SPAppOpenAdManager { private func requestStatAd(type: String, errorMsg: String?) { - guard appOpenAd != nil else { return } - let model = SPStatAdModel() model.type = type model.ads_id = adUnitID @@ -151,6 +149,7 @@ extension SPAppOpenAdManager { @objc private func didEnterBackgroundNotification() { + guard appOpenAd != nil else { return } self.requestStatAd(type: "Interrupt", errorMsg: nil) } diff --git a/ThimraTV/Libs/AdManager/BannerAd/SPBannerAd.swift b/ThimraTV/Libs/AdManager/BannerAd/SPBannerAd.swift index 93ac466..31d52c7 100644 --- a/ThimraTV/Libs/AdManager/BannerAd/SPBannerAd.swift +++ b/ThimraTV/Libs/AdManager/BannerAd/SPBannerAd.swift @@ -54,6 +54,7 @@ class SPBannerAd: NSObject { //MARK: -------------- BannerViewDelegate -------------- extension SPBannerAd: BannerViewDelegate { func bannerViewDidReceiveAd(_ bannerView: BannerView) { + self.requestStatAd(type: "start", errorMsg: nil) self.delegate?.bannerAdDidLoadFinish?(bannerAd: self) } @@ -72,7 +73,6 @@ extension SPBannerAd: BannerViewDelegate { } func bannerViewWillPresentScreen(_ bannerView: BannerView) { - self.requestStatAd(type: "start", errorMsg: nil) self.delegate?.bannerAdDidShow?(bannerAd: self) } @@ -89,7 +89,9 @@ extension SPBannerAd: BannerViewDelegate { //MARK: -------------- 统计 -------------- 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() model.type = type model.ads_id = adUnitID diff --git a/ThimraTV/Libs/AdManager/RewardedAd/SPRewardedAdManager+AppLovin.swift b/ThimraTV/Libs/AdManager/RewardedAd/SPRewardedAdManager+AppLovin.swift index 23842d9..7235302 100644 --- a/ThimraTV/Libs/AdManager/RewardedAd/SPRewardedAdManager+AppLovin.swift +++ b/ThimraTV/Libs/AdManager/RewardedAd/SPRewardedAdManager+AppLovin.swift @@ -12,10 +12,6 @@ import AppLovinSDK extension SPRewardedAdManager { - var appLovin_adUnitID: String { - return "ca-app-pub-3940256099942544/1712485313" - } - fileprivate struct AssociatedKeys { static var appLovin_rewardedAd: Int? static var appLovin_needShowRewardedAd: Int? diff --git a/ThimraTV/Libs/AdManager/RewardedAd/SPRewardedAdManager.swift b/ThimraTV/Libs/AdManager/RewardedAd/SPRewardedAdManager.swift index 8b993cf..9585cf2 100644 --- a/ThimraTV/Libs/AdManager/RewardedAd/SPRewardedAdManager.swift +++ b/ThimraTV/Libs/AdManager/RewardedAd/SPRewardedAdManager.swift @@ -19,7 +19,7 @@ import UIKit ///广告被展示 @objc optional func rewardedAdManagerDidShow(manager: SPRewardedAdManager) ///广告被关闭 - @objc optional func rewardedAdManagerDidDismiss(manager: SPRewardedAdManager) + @objc optional func rewardedAdManager(manager: SPRewardedAdManager, didDismiss adInfo: SPAdInfo) } class SPRewardedAdManager: NSObject { @@ -202,9 +202,22 @@ extension SPRewardedAdManager { self.requestStatAd(type: "load_failed", errorMsg: error.localizedDescription) } - self.isEnable = false self.clean() - self.retryLoadAd() + + 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() + } + + } @@ -251,12 +264,14 @@ extension SPRewardedAdManager { self.requestStatAd(type: "close", seconds: seconds, errorMsg: nil) { [weak self] in 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.preloadRewardedAd() } - self.clean() - preloadRewardedAd() - } ///广告被点击 diff --git a/ThimraTV/Libs/User/SPUserInfo.swift b/ThimraTV/Libs/User/SPUserInfo.swift index bb2a2aa..ed44f8a 100644 --- a/ThimraTV/Libs/User/SPUserInfo.swift +++ b/ThimraTV/Libs/User/SPUserInfo.swift @@ -67,10 +67,12 @@ class SPUserInfo: SPModel, SmartCodable, NSSecureCoding { if let user_level = coder.decodeObject(of: NSString.self, forKey: "user_level") as? String { 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 giving_name = coder.decodeObject(of: NSString.self, forKey: "giving_name") as? String } + + }