挽留弹窗开发 1.0.5开发

This commit is contained in:
湖北秦九 2026-01-13 18:26:21 +08:00
parent d8fd08c58c
commit 9bf3fa9b0f
4 changed files with 49 additions and 14 deletions

View File

@ -2755,7 +2755,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0.4;
MARKETING_VERSION = 1.0.5;
PRODUCT_BUNDLE_IDENTIFIER = com.hn.qinjiu.fableon;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
@ -2797,7 +2797,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0.4;
MARKETING_VERSION = 1.0.5;
PRODUCT_BUNDLE_IDENTIFIER = com.hn.qinjiu.fableon;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";

View File

@ -245,6 +245,11 @@ extension FAShortDetailViewModel {
let view = FAPayRetainAlert()
view.model = model
view.videoInfo = videoInfo
view.buyFinishHandle = { [weak self] in
guard let self = self else { return }
self.requestDetailData(indexPath: self.currentIndexPath, completer: nil)
}
view.show(in: FATool.keyWindow)
}

View File

@ -11,6 +11,8 @@ import YYText
class FAPayRetainAlert: FABaseAlert {
var buyFinishHandle: (() -> Void)?
var model: FAPayDateModel? {
didSet {
self.collectionView.reloadData()
@ -21,6 +23,12 @@ class FAPayRetainAlert: FABaseAlert {
}
}
var videoInfo: FAVideoInfoModel? {
didSet {
}
}
private var selectedIndex = FAPayRetainAlertData.defaultSelectedIndex
private lazy var bgView: UIImageView = {
@ -152,6 +160,17 @@ extension FAPayRetainAlert: UICollectionViewDataSource, UICollectionViewDelegate
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
selectedIndex = indexPath.item
collectionView.reloadData()
guard let item = self.model?.list_coins?[indexPath.row] else { return }
FAIapManager.manager.start(model: item, shortPlayId: self.videoInfo?.short_play_id, videoId: self.videoInfo?.short_play_video_id) { [weak self] finish in
guard let self = self else { return }
if finish {
FALogin.manager.requestUserInfo(completer: nil)
self.dismiss()
self.buyFinishHandle?()
}
}
}
}
@ -170,6 +189,18 @@ extension FAPayRetainAlert {
private var countdownTimer: Timer?
private var remainingSeconds: Int = 0
private lazy var resolveEndTime: TimeInterval = {
let defaults = UserDefaults.standard
let now = Date().timeIntervalSince1970
let storedEndTime = defaults.double(forKey: Self.countdownEndTimeKey)
if storedEndTime > now {
return storedEndTime
}
let newEndTime = now + TimeInterval(Self.defaultCountdownSeconds)
defaults.set(newEndTime, forKey: Self.countdownEndTimeKey)
return newEndTime
}()
private let prefixLabel = UILabel()
private let suffixLabel = UILabel()
private let timeStackView = UIStackView()
@ -253,7 +284,7 @@ extension FAPayRetainAlert {
// 4
private func startCountdown() {
stopCountdown()
let endTime = resolveEndTime()
let endTime = self.resolveEndTime
remainingSeconds = max(0, Int(endTime - Date().timeIntervalSince1970))
updateTimeLabels()
guard remainingSeconds > 0 else {
@ -281,19 +312,14 @@ extension FAPayRetainAlert {
updateTimeLabels()
}
private func resolveEndTime() -> TimeInterval {
let defaults = UserDefaults.standard
let now = Date().timeIntervalSince1970
let storedEndTime = defaults.double(forKey: Self.countdownEndTimeKey)
if storedEndTime > now {
return storedEndTime
}
let newEndTime = now + TimeInterval(Self.defaultCountdownSeconds)
defaults.set(newEndTime, forKey: Self.countdownEndTimeKey)
return newEndTime
}
private func updateTimeLabels() {
if remainingSeconds <= 0 {
self.isHidden = true
self.stopCountdown()
return
}
let hours = remainingSeconds / 3600
let minutes = (remainingSeconds % 3600) / 60
let seconds = remainingSeconds % 60

View File

@ -107,10 +107,14 @@ class FAPayDataRequest: NSObject {
func requestPayRetainInfo(completer: ((_ model: FAPayDateModel?) -> Void)?) {
self.payRetainBlock = completer
self.isLoding = true
self.isToast = true
FAHUD.show()
FAStoreAPI.requestPayRetainInfo { [weak self] model in
guard let self = self else { return }
guard let model = model else {
FAHUD.dismiss()
self.payRetainBlock?(nil)
return
}