广告bug修复,1.0.8提审

This commit is contained in:
湖北秦九 2026-02-28 09:35:05 +08:00
parent e0160146e3
commit bddd0142a6
13 changed files with 87 additions and 31 deletions

View File

@ -2881,7 +2881,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0.7;
MARKETING_VERSION = 1.0.8;
PRODUCT_BUNDLE_IDENTIFIER = com.hn.qinjiu.fableon;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
@ -2923,7 +2923,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0.7;
MARKETING_VERSION = 1.0.8;
PRODUCT_BUNDLE_IDENTIFIER = com.hn.qinjiu.fableon;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";

View File

@ -67,10 +67,6 @@ extension UIViewController {
@objc func handleNavigationBack() {
self.fa_toLastViewController(animated: true)
if FARewardedAdManager.manager.isAdAvailable {
FARewardedAdManager.manager.businessScene = .detailBack
FARewardedAdManager.manager.show()
}
}
func fa_toLastViewController(animated: Bool) {

View File

@ -133,6 +133,11 @@ class FACoinPackViewController: FAViewController {
self.fa_setNavigationStyle()
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
FAOpenAdManager.manager.vcAllowedShowAd = false
}
private func updateLayout() {
stackView.fa_removeAllArrangedSubview()

View File

@ -25,7 +25,8 @@ class FAPlayerDetailControlView: JXPlayerListControlView {
override var model: Any? {
didSet {
let model = self.model as? FAVideoInfoModel
self.bannerAdManager.shortPlayId = model?.short_play_id
self.bannerAdManager.shortPlayVideoId = model?.short_play_video_id
updateEp()
}
}
@ -56,8 +57,12 @@ class FAPlayerDetailControlView: JXPlayerListControlView {
didSet {
playButton.setNeedsUpdateConfiguration()
if isCurrent {
self.bannerAdManager.loadAd()
let model = self.model as? FAVideoInfoModel
if model?.is_lock == false {
self.bannerAdManager.loadAd()
}
} else {
self.bannerAdManager.uploadCloseAdsHistory()
self.bannerAdManager.cleanAd()
}
self.updateBannerAdLayout()
@ -167,6 +172,7 @@ class FAPlayerDetailControlView: JXPlayerListControlView {
}()
deinit {
self.bannerAdManager.uploadCloseAdsHistory()
NotificationCenter.default.removeObserver(self)
}

View File

@ -83,8 +83,6 @@ class FAPlayerDetailViewController: JXPlayerListViewController {
requestDetailList()
self.fa_viewModel.loadNativeAd()
fa_setupLayout()
self.fa_viewModel.requestRecommandData()
@ -168,6 +166,15 @@ class FAPlayerDetailViewController: JXPlayerListViewController {
// self.handleNavigationBack()
}
override func handleNavigationBack() {
super.handleNavigationBack()
if FARewardedAdManager.manager.isAdAvailable {
FARewardedAdManager.manager.businessScene = .detailBack
FARewardedAdManager.manager.show()
}
}
}
extension FAPlayerDetailViewController {
@ -224,6 +231,8 @@ extension FAPlayerDetailViewController: JXPlayerListViewControllerDelegate, JXPl
FARewardedAdManager.manager.shortPlayId = model?.short_play_id
FARewardedAdManager.manager.shortPlayVideoId = model?.short_play_video_id
}
self.fa_viewModel.nativeAdManager.shortPlayId = model?.short_play_id
self.fa_viewModel.nativeAdManager.shortPlayVideoId = model?.short_play_video_id
}
func jx_shouldAutoScrollNextEpisode(_ viewController: JXPlayerListViewController) -> Bool {
@ -242,8 +251,7 @@ extension FAPlayerDetailViewController {
private func requestDetailList() {
self.fa_viewModel.requestDetailData { [weak self] code in
guard let self = self else { return }
self.fa_viewModel.loadNativeAd()
}
}
}

View File

@ -61,6 +61,9 @@ class FAShortDetailViewModel: JXPlayerListViewModel, ObservableObject {
return manager
}()
deinit {
self.nativeAdManager.uploadCloseAdsHistory()
}
func requestDetailData(indexPath: IndexPath? = nil, completer: ((_ code: Int) -> Void)?) {
isShowRecommand = false
@ -290,6 +293,8 @@ extension FAShortDetailViewModel {
///广
func loadNativeAd() {
if self.nativeAdManager.hasShow || self.nativeAdManager.isAdAvailable { return }
self.nativeAdManager.load()
}

View File

@ -113,6 +113,11 @@ class FAStoreViewController: FAViewController {
fa_setNavigationStyle()
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
FAOpenAdManager.manager.vcAllowedShowAd = false
}
private func buyFinish() {
self.requestPayData()
}

View File

@ -79,6 +79,9 @@ class FABannerAdManager: NSObject {
}
}
var shortPlayId: String?
var shortPlayVideoId: String?
private var startShowDate: Date?
private var startLoadDate: Date?
private var endLoadDate: Date?
@ -99,7 +102,7 @@ class FABannerAdManager: NSObject {
override init() {
super.init()
NotificationCenter.default.addObserver(self, selector: #selector(didEnterBackgroundNotification), name: UIApplication.didEnterBackgroundNotification, object: nil)
// NotificationCenter.default.addObserver(self, selector: #selector(didEnterBackgroundNotification), name: UIApplication.didEnterBackgroundNotification, object: nil)
}
func loadAd() {
@ -124,6 +127,7 @@ class FABannerAdManager: NSObject {
self.isShowingAd = false
self.startLoadDate = nil
self.endLoadDate = nil
self.startShowDate = nil
}
private func updateLayout() {
@ -133,6 +137,13 @@ class FABannerAdManager: NSObject {
adView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
}
}
///广
func uploadCloseAdsHistory() {
guard let ad = self.bannerAd else { return }
guard self.isShowingAd else { return }
self.uploadAdsHistory(ad: ad, type: .close)
}
}
@ -170,7 +181,7 @@ extension FABannerAdManager: FABannerAdDelegate {
}
func fa_bannerAdDidDismiss(ad: any FABannerAd) {
self.uploadAdsHistory(ad: ad, type: .close)
self.uploadCloseAdsHistory()
self.delegate?.fa_bannerAdManagerDidDismiss?(manager: self)
}
@ -211,6 +222,8 @@ extension FABannerAdManager {
model.loading_time = max(0, loadTime)
}
model.view_seconds = showTime
model.short_play_id = self.shortPlayId
model.short_play_video_id = self.shortPlayVideoId
model.ad_type = ad.adType.rawValue
model.ads_id = ad.adUnitID
model.ad_platform_key = ad.adPlatform
@ -226,6 +239,8 @@ extension FABannerAdManager {
let money = (NSNumber(string: ecpm)?.doubleValue ?? 0) / 1000
let model = FAUploadAdsPriceModel()
model.short_play_id = self.shortPlayId
model.short_play_video_id = self.shortPlayVideoId
model.short_play_launch_id = ad.adUnitID
model.type = ad.adType.rawValue
model.agent_name = ad.adPlatform.rawValue

View File

@ -21,9 +21,9 @@ class FAAdManager: NSObject {
case me = "me"
case reward = "reward"
case splash = "splash"
case banner = "banner"
case banner = "detail_landscape"
case open = "open"
case native = "native"
case native = "detail_stop"
}
enum StatType: String, SmartCaseDefaultable {

View File

@ -84,6 +84,9 @@ class FANativeAdManager: NSObject {
}
}
var shortPlayId: String?
var shortPlayVideoId: String?
///广
private(set) var isLoadingAd = false
///广
@ -105,12 +108,12 @@ class FANativeAdManager: NSObject {
}
deinit {
NotificationCenter.default.removeObserver(self)
// NotificationCenter.default.removeObserver(self)
}
override init() {
super.init()
NotificationCenter.default.addObserver(self, selector: #selector(didEnterBackgroundNotification), name: UIApplication.didEnterBackgroundNotification, object: nil)
// NotificationCenter.default.addObserver(self, selector: #selector(didEnterBackgroundNotification), name: UIApplication.didEnterBackgroundNotification, object: nil)
}
@ -122,7 +125,11 @@ class FANativeAdManager: NSObject {
}
guard !self.isLoadingAd else { return }
self.startLoadDate = nil
self.endLoadDate = nil
self.startShowDate = nil
self.isLoadingAd = true
self.nativeAd = FATradPlusNativeAd()
self.nativeAd?.adSize = self.contentSize
self.nativeAd?.adView = contentView
@ -143,6 +150,13 @@ class FANativeAdManager: NSObject {
self.nativeAd?.show()
}
///广
func uploadCloseAdsHistory() {
guard let ad = self.nativeAd else { return }
guard self.isShowingAd else { return }
self.uploadAdsHistory(ad: ad, type: .close)
}
}
extension FANativeAdManager: FANativeAdDelegate {
@ -179,7 +193,7 @@ extension FANativeAdManager: FANativeAdDelegate {
}
func fa_nativeAdDidDismiss(ad: any FANativeAd) {
self.uploadAdsHistory(ad: ad, type: .close)
self.uploadCloseAdsHistory()
self.delegate?.fa_nativeAdManagerDidDismiss?(manager: self)
}
@ -218,6 +232,8 @@ extension FANativeAdManager {
if let loadTime = loadTime {
model.loading_time = max(0, loadTime)
}
model.short_play_id = self.shortPlayId
model.short_play_video_id = self.shortPlayVideoId
model.view_seconds = showTime
model.ad_type = ad.adType.rawValue
model.ads_id = ad.adUnitID
@ -234,6 +250,8 @@ extension FANativeAdManager {
let money = (NSNumber(string: ecpm)?.doubleValue ?? 0) / 1000
let model = FAUploadAdsPriceModel()
model.short_play_id = self.shortPlayId
model.short_play_video_id = self.shortPlayVideoId
model.short_play_launch_id = ad.adUnitID
model.type = ad.adType.rawValue
model.agent_name = ad.adPlatform.rawValue

View File

@ -52,6 +52,8 @@ class FATradPlusNativeAd: NSObject, FANativeAd {
self.nativeAd?.setTemplateRenderSize(adSize)
self.nativeAd?.delegate = self
self.nativeAd?.loadAd()
self.delegate?.fa_nativeAdDidStartLoad(ad: self)
#endif
}
@ -78,7 +80,7 @@ class FATradPlusNativeAd: NSObject, FANativeAd {
extension FATradPlusNativeAd: TradPlusADNativeDelegate {
func tpNativeAdStartLoad(_ adInfo: [AnyHashable : Any]) {
self.delegate?.fa_nativeAdDidStartLoad(ad: self)
// self.delegate?.fa_nativeAdDidStartLoad(ad: self)
}
func tpNativeAdLoaded(_ adInfo: [AnyHashable : Any]) {

View File

@ -97,8 +97,12 @@ class FAOpenAdManager: NSObject {
if isLoadingAd || isAdAvailable {
return
}
startLoadDate = nil
endLoadDate = nil
startShowDate = nil
isLoadingAd = true
appOpenAd = FATradPlusOpenAd()
appOpenAd?.loadAd()
}
@ -135,8 +139,7 @@ class FAOpenAdManager: NSObject {
showAd()
return
}
self.startLoadDate = nil
self.endLoadDate = nil
// 2.
isWaitingToShow = true

View File

@ -114,10 +114,11 @@ class FARewardedAdManager: NSObject {
if self.isLoadingAd { return }
self.startLoadDate = nil
self.endLoadDate = nil
self.startShowDate = nil
self.isLoadingAd = true
self.businessScene = .main
// self.businessScene = .main
self.rewardedAd = FATradPlusInterstitialAd()
self.rewardedAd?.loadAd()
@ -200,14 +201,6 @@ extension FARewardedAdManager {
extension FARewardedAdManager {
private func requestAdOverview() {
FAAPI.requestRewardedAdOverview { [weak self] list in
guard let self = self else { return }
}
}
func uploadAdsHistory(ad: any FARewardedAd, type: FAAdManager.StatType, viewSeconds: Int? = nil, errorMsg: String? = nil) {
var loadTime: Int?
if let startDate = self.startLoadDate, let endDate = self.endLoadDate {