diff --git a/ThimraTV.xcodeproj/project.pbxproj b/ThimraTV.xcodeproj/project.pbxproj index ab545fa..4346d3e 100644 --- a/ThimraTV.xcodeproj/project.pbxproj +++ b/ThimraTV.xcodeproj/project.pbxproj @@ -2110,7 +2110,7 @@ CODE_SIGN_ENTITLEMENTS = ThimraTV/ThimraTV.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 5; + CURRENT_PROJECT_VERSION = 2; DEVELOPMENT_TEAM = TWDZ3MP9DV; ENABLE_USER_SCRIPT_SANDBOXING = NO; GENERATE_INFOPLIST_FILE = YES; @@ -2134,7 +2134,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.1.3; + MARKETING_VERSION = 1.1.4; PRODUCT_BUNDLE_IDENTIFIER = com.thimratv.app; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -2158,7 +2158,7 @@ CODE_SIGN_ENTITLEMENTS = ThimraTV/ThimraTV.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 5; + CURRENT_PROJECT_VERSION = 2; DEVELOPMENT_TEAM = TWDZ3MP9DV; ENABLE_USER_SCRIPT_SANDBOXING = NO; GENERATE_INFOPLIST_FILE = YES; @@ -2182,7 +2182,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.1.3; + MARKETING_VERSION = 1.1.4; PRODUCT_BUNDLE_IDENTIFIER = com.thimratv.app; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/ThimraTV/Base/Networking/API/SPVideoAPI.swift b/ThimraTV/Base/Networking/API/SPVideoAPI.swift index ba1d6c8..ad4e499 100644 --- a/ThimraTV/Base/Networking/API/SPVideoAPI.swift +++ b/ThimraTV/Base/Networking/API/SPVideoAPI.swift @@ -40,6 +40,27 @@ class SPVideoAPI: NSObject { } } + ///获取更多视频详情 + static func requestMoreVideoDetail(shortPlayId: String, activityId: String? = nil, completer: ((_ model: SPVideoDetailModel?) -> Void)?) { + var parameters: [String : Any] = [ + "short_play_id" : shortPlayId, + "video_id" : "0" + ] + + if let activityId = activityId { + parameters["activity_id"] = activityId + } + + var param = SPNetworkParameters(path: "/getVideoDetails") + param.method = .get + param.parameters = parameters + param.isToast = false + + SPNetwork.request(parameters: param) { (response: SPNetworkResponse) in + completer?(response.data) + } + } + ///创建播放记录 static func requestCreateVideoPlayHistory(videoId: String?, shortPlayId: String) { var param = SPNetworkParameters(path: "/createHistory") diff --git a/ThimraTV/Base/Networking/API/SPWalletAPI.swift b/ThimraTV/Base/Networking/API/SPWalletAPI.swift index 07113d5..34af766 100644 --- a/ThimraTV/Base/Networking/API/SPWalletAPI.swift +++ b/ThimraTV/Base/Networking/API/SPWalletAPI.swift @@ -55,13 +55,13 @@ class SPWalletAPI: NSObject { } ///校验内购 - static func requestVerifyOrder(orderCode: String, payId: String, productId: String, purchaseToken: String, completer: ((_ model: SPIAPVerifyModel?) -> Void)?) { + static func requestVerifyOrder(orderCode: String, payId: String, productId: String, transactionId: String, purchaseToken: String, completer: ((_ model: SPIAPVerifyModel?) -> Void)?) { var param = SPNetworkParameters(path: "/applePaid") param.parameters = [ "order_code" : orderCode, "pay_setting_id" : payId, "pkg_name" : kSPAPPBundleIdentifier, - "transaction_id" : productId, + "transaction_id" : transactionId, "purchases_token" : purchaseToken ] diff --git a/ThimraTV/Class/Mine/View/SPMineHeaderView.swift b/ThimraTV/Class/Mine/View/SPMineHeaderView.swift index 02fbd4a..e3b2500 100644 --- a/ThimraTV/Class/Mine/View/SPMineHeaderView.swift +++ b/ThimraTV/Class/Mine/View/SPMineHeaderView.swift @@ -49,7 +49,7 @@ class SPMineHeaderView: UIView { } idLabel.text = "ID \(userInfo?.customer_id ?? "")" - loginButton.isHidden = !(userInfo?.is_tourist ?? true) +// loginButton.isHidden = !(userInfo?.is_tourist ?? true) memberView.userInfo = self.userInfo @@ -162,7 +162,7 @@ class SPMineHeaderView: UIView { stackView.addArrangedSubview(walletView) - loginButton.isHidden = false + loginButton.isHidden = !(userInfo?.is_tourist ?? true) } else { loginButton.isHidden = true } diff --git a/ThimraTV/Class/Player/Controller/SPPlayerDetailViewController.swift b/ThimraTV/Class/Player/Controller/SPPlayerDetailViewController.swift index 95514c0..38a3c3e 100644 --- a/ThimraTV/Class/Player/Controller/SPPlayerDetailViewController.swift +++ b/ThimraTV/Class/Player/Controller/SPPlayerDetailViewController.swift @@ -413,7 +413,13 @@ extension SPPlayerDetailViewController: SPPlayerListViewControllerDataSource, SP } func sp_playerViewControllerLoadMoreData(playerViewController: SPPlayerListViewController) { + guard self.detailDataArr.count > 0 else { return } + guard let currentDetail = self.detailDataArr[self.viewModel.currentIndexPath.section] as? SPVideoDetailModel else { return } + + if currentDetail.jump_type == .moreVideo, let shortPlayId = currentDetail.jump_short_play_id, !shortPlayId.isEmpty, shortPlayId != "0" { + self.requestMoreVideoDetail(shortPlayId: shortPlayId) + } } } @@ -475,4 +481,23 @@ extension SPPlayerDetailViewController { } } } + + + ///加载更多详情视频 + private func requestMoreVideoDetail(shortPlayId: String) { + + SPVideoAPI.requestMoreVideoDetail(shortPlayId: shortPlayId) { [weak self] model in + guard let self = self else { return } + guard let model = model else { return } + self.detailDataArr.append(model) + + let section = self.detailDataArr.count - 1 + + let indexSet: IndexSet = IndexSet(integer: section) + + self.collectionView.performBatchUpdates { [weak self] in + self?.collectionView.insertSections(indexSet) + } + } + } } diff --git a/ThimraTV/Class/Player/Model/SPVideoDetailModel.swift b/ThimraTV/Class/Player/Model/SPVideoDetailModel.swift index 66e5e03..f30c6ea 100644 --- a/ThimraTV/Class/Player/Model/SPVideoDetailModel.swift +++ b/ThimraTV/Class/Player/Model/SPVideoDetailModel.swift @@ -10,6 +10,11 @@ import SmartCodable class SPVideoDetailModel: SPModel, SmartCodable { + enum JumpType: Int, SmartCaseDefaultable { + case moreVideo = 0 + case otherApp = 1 + } + var business_model: String? var video_info: SPVideoInfoModel? var shortPlayInfo: SPShortModel? @@ -21,4 +26,9 @@ class SPVideoDetailModel: SPModel, SmartCodable { var revolution: Int? var unlock_video_ad_count: Int? var discount: Int? + + //MARK: 广告相关 + var jump_type: JumpType? + ///下一部剧的id + var jump_short_play_id: String? } diff --git a/ThimraTV/Class/Player/View/SPPlayBuyView.swift b/ThimraTV/Class/Player/View/SPPlayBuyView.swift index 5924726..4f4fe93 100644 --- a/ThimraTV/Class/Player/View/SPPlayBuyView.swift +++ b/ThimraTV/Class/Player/View/SPPlayBuyView.swift @@ -121,7 +121,7 @@ class SPPlayBuyView: HWPanModalContentView { } override func longFormHeight() -> PanModalHeight { - return PanModalHeightMake(.content, kSPScreenHeight - kSPNavBarHeight - 10) + return PanModalHeightMake(.content, kSPScreenHeight - kSPStatusbarHeight) } override func showDragIndicator() -> Bool { diff --git a/ThimraTV/Libs/SPIAPManager/SPIAPManager.swift b/ThimraTV/Libs/SPIAPManager/SPIAPManager.swift index 0345fba..3d038a8 100644 --- a/ThimraTV/Libs/SPIAPManager/SPIAPManager.swift +++ b/ThimraTV/Libs/SPIAPManager/SPIAPManager.swift @@ -82,7 +82,8 @@ class SPIAPManager: NSObject { let orderCode = waitRestoreModel.orderCode, let payId = waitRestoreModel.payId, let productId = waitRestoreModel.productId, - let receipt = waitRestoreModel.receipt + let receipt = waitRestoreModel.receipt, + let transactionId = waitRestoreModel.transactionId else { if isLoding { SPToast.show(text: "movia_iap_error_toast_02".localized) @@ -93,7 +94,7 @@ class SPIAPManager: NSObject { if isLoding { SPHUD.show() } - SPWalletAPI.requestVerifyOrder(orderCode: orderCode, payId: payId, productId: productId, purchaseToken: receipt) { model in + SPWalletAPI.requestVerifyOrder(orderCode: orderCode, payId: payId, productId: productId, transactionId: transactionId, purchaseToken: receipt) { model in if isLoding { SPHUD.dismiss() } @@ -148,11 +149,12 @@ extension SPIAPManager: JXIAPManagerDelegate { } self.waitRestoreModel?.productId = productId + self.waitRestoreModel?.transactionId = transactionIdentifier self.waitRestoreModel?.receipt = receipt UserDefaults.jx_setObject(self.waitRestoreModel, forKey: kSPWaitRestoreIAPDefaultsKey) - SPWalletAPI.requestVerifyOrder(orderCode: orderCode, payId: payId, productId: productId, purchaseToken: receipt) { model in + SPWalletAPI.requestVerifyOrder(orderCode: orderCode, payId: payId, productId: productId, transactionId: transactionIdentifier ?? "", purchaseToken: receipt) { model in SPHUD.dismiss() self.orderCode = nil diff --git a/ThimraTV/Libs/SPIAPManager/SPWaitRestoreModel.swift b/ThimraTV/Libs/SPIAPManager/SPWaitRestoreModel.swift index a900b06..54c84cb 100644 --- a/ThimraTV/Libs/SPIAPManager/SPWaitRestoreModel.swift +++ b/ThimraTV/Libs/SPIAPManager/SPWaitRestoreModel.swift @@ -17,6 +17,7 @@ class SPWaitRestoreModel: SPModel, NSSecureCoding { var productId: String? var receipt: String? var buyType: SPWalletAPI.BuyType? + var transactionId: String? required init() { }