diff --git a/SwiftProject/SwiftProject.xcodeproj/project.pbxproj b/SwiftProject/SwiftProject.xcodeproj/project.pbxproj index 81db917..d9cb803 100644 --- a/SwiftProject/SwiftProject.xcodeproj/project.pbxproj +++ b/SwiftProject/SwiftProject.xcodeproj/project.pbxproj @@ -1005,7 +1005,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.2; + MARKETING_VERSION = 1.3; OTHER_CFLAGS = ""; OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS"; PRODUCT_BUNDLE_IDENTIFIER = com.nsk.tdvideo; @@ -1057,7 +1057,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.2; + MARKETING_VERSION = 1.3; OTHER_CFLAGS = ""; OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS"; PRODUCT_BUNDLE_IDENTIFIER = com.nsk.tdvideo; diff --git a/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/UserInterfaceState.xcuserstate b/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/UserInterfaceState.xcuserstate index 0a255bd..e3e1600 100644 Binary files a/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/UserInterfaceState.xcuserstate and b/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index 12a1f90..2b82b08 100644 --- a/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -14,8 +14,8 @@ filePath = "SwiftProject/Project/Controller/CCHomeController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "525" - endingLineNumber = "525" + startingLineNumber = "547" + endingLineNumber = "547" landmarkName = "imagePickerController(_:didFinishPickingMediaWithInfo:)" landmarkType = "7"> @@ -30,8 +30,8 @@ filePath = "SwiftProject/Project/Controller/CCHomeController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "517" - endingLineNumber = "517" + startingLineNumber = "539" + endingLineNumber = "539" landmarkName = "CCHomeController" landmarkType = "21"> @@ -94,8 +94,8 @@ filePath = "SwiftProject/Project/Controller/CCHomeController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "481" - endingLineNumber = "481" + startingLineNumber = "503" + endingLineNumber = "503" landmarkName = "gotoVideoTransformVC(url:asset:)" landmarkType = "7"> @@ -387,8 +387,8 @@ filePath = "SwiftProject/Project/Controller/RecordingVideo/CCSpatialShootController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "1156" - endingLineNumber = "1156" + startingLineNumber = "1166" + endingLineNumber = "1166" landmarkName = "compositeSpatialPhoto()" landmarkType = "7"> @@ -649,5 +649,53 @@ + + + + + + + + + + + + diff --git a/SwiftProject/SwiftProject/CCKit/Base/BaseVirtualController.swift b/SwiftProject/SwiftProject/CCKit/Base/BaseVirtualController.swift index d4fd263..1c08bed 100644 --- a/SwiftProject/SwiftProject/CCKit/Base/BaseVirtualController.swift +++ b/SwiftProject/SwiftProject/CCKit/Base/BaseVirtualController.swift @@ -46,9 +46,13 @@ class BaseVirtualController: UIViewController { override func viewDidLoad() { super.viewDidLoad() - + NotificationCenter.default.addObserver(self, selector: #selector(userVipStateChangeNotification(noti:)), name: Notification.Name(rawValue: "kUserVipStateChangeNotification"), object: nil) } + //用户vip身份改变 + @objc func userVipStateChangeNotification(noti:Notification) { + print("父类收到的vip通知...") + } //========================================= //设置导航栏部分 diff --git a/SwiftProject/SwiftProject/CCKit/SKUPay/SKUPay.swift b/SwiftProject/SwiftProject/CCKit/SKUPay/SKUPay.swift index 3734ba2..172851a 100644 --- a/SwiftProject/SwiftProject/CCKit/SKUPay/SKUPay.swift +++ b/SwiftProject/SwiftProject/CCKit/SKUPay/SKUPay.swift @@ -7,7 +7,7 @@ import Foundation import StoreKit - +import SVProgressHUD //MARK: - 将货币信息格式化为本地信息 extension SKProduct { var regularPrice: String? { @@ -43,10 +43,15 @@ class SKUPay:NSObject, SKRequestDelegate,SKProductsRequestDelegate,SKPaymentTran UserDefaults.standard.setValue(arr, forKey: "kHistoryTransaction") UserDefaults.standard.synchronize() + setUpUserInfo() } //此处初始化用户信息 func setUpUserInfo() { + //test ---- +// UserDefaults.standard.setValue(nil, forKey: "kHistoryTransaction") +// UserDefaults.standard.synchronize() + //test+++++ let arr:[Any]? = UserDefaults.standard.value(forKey: "kHistoryTransaction") as? [Any] ?? nil guard let arr else { return @@ -92,6 +97,7 @@ class SKUPay:NSObject, SKRequestDelegate,SKProductsRequestDelegate,SKPaymentTran if let pd = product { let payment = SKPayment(product: pd) SKPaymentQueue.default().add(payment) + showToast(value: true) } } } @@ -99,7 +105,17 @@ class SKUPay:NSObject, SKRequestDelegate,SKProductsRequestDelegate,SKPaymentTran //MARK: - 恢复购买 func restoreProducts() { SKPaymentQueue.default().restoreCompletedTransactions() - + showToast(value: true) + } + + //是否显示加载信息... + func showToast(value:Bool) { + if value { + SVProgressHUD.show(withStatus: NSLocalizedString("支付中...", comment: "")) + } + else { + SVProgressHUD.dismiss() + } } @@ -135,9 +151,14 @@ class SKUPay:NSObject, SKRequestDelegate,SKProductsRequestDelegate,SKPaymentTran self.setTransactionDic(transactions: transactions) transactions.forEach { spt in - + if spt.transactionState == .purchased || spt.transactionState == .restored { + queue.finishTransaction(spt) + } + print("updatedTransactions ..\(spt)") } } + + print("updatedTransactions ..") } @@ -149,30 +170,33 @@ class SKUPay:NSObject, SKRequestDelegate,SKProductsRequestDelegate,SKPaymentTran // Sent when an error is encountered while adding transactions from the user's purchase history back to the queue. func paymentQueue(_ queue: SKPaymentQueue, restoreCompletedTransactionsFailedWithError error: Error){ - + print("restoreCompletedTransactionsFailedWithError...") + showToast(value: false) } // Sent when all transactions from the user's purchase history have successfully been added back to the queue. func paymentQueueRestoreCompletedTransactionsFinished(_ queue: SKPaymentQueue){ // queue.transactions + print("paymentQueueRestoreCompletedTransactionsFinished...") + showToast(value: false) } // Sent when a user initiates an IAP buy from the App Store - func paymentQueue(_ queue: SKPaymentQueue, shouldAddStorePayment payment: SKPayment, for product: SKProduct) -> Bool{ - return true - } +// func paymentQueue(_ queue: SKPaymentQueue, shouldAddStorePayment payment: SKPayment, for product: SKProduct) -> Bool{ +// return true +// } func paymentQueueDidChangeStorefront(_ queue: SKPaymentQueue){ - + print("paymentQueueDidChangeStorefront..") } // Sent when entitlements for a user have changed and access to the specified IAPs has been revoked. func paymentQueue(_ queue: SKPaymentQueue, didRevokeEntitlementsForProductIdentifiers productIdentifiers: [String]){ - + print("didRevokeEntitlementsForProductIdentifiers..") } } diff --git a/SwiftProject/SwiftProject/CCKit/UserInfo/UserInfo.swift b/SwiftProject/SwiftProject/CCKit/UserInfo/UserInfo.swift index eae899c..57f0565 100644 --- a/SwiftProject/SwiftProject/CCKit/UserInfo/UserInfo.swift +++ b/SwiftProject/SwiftProject/CCKit/UserInfo/UserInfo.swift @@ -8,7 +8,11 @@ import Foundation class UserInfo: NSObject { static let sharedInstance = UserInfo() - var paymentState:Bool = false + var paymentState:Bool = false { + didSet{ + NotificationCenter.default.post(name: Notification.Name(rawValue: "kUserVipStateChangeNotification"), object: self, userInfo:nil) + } + } var paymentProductIdentifier:String? //表示已购买的产品id var isMemberShip:Bool { get { diff --git a/SwiftProject/SwiftProject/Project/Controller/CCHomeController.swift b/SwiftProject/SwiftProject/Project/Controller/CCHomeController.swift index 2d64bf1..3d43e56 100644 --- a/SwiftProject/SwiftProject/Project/Controller/CCHomeController.swift +++ b/SwiftProject/SwiftProject/Project/Controller/CCHomeController.swift @@ -346,6 +346,17 @@ class CCHomeController: BaseController, LLCycleScrollViewDelegate,MFMailComposeV } //选择视频 view.selectedVideoHandler = {[weak self] url,asset in + if (asset.duration > 60 ) { + if !UserInfo.sharedInstance.isMemberShip { + let vc:MembershipVC = MembershipVC() + let nav = UINavigationController(rootViewController: vc) + nav.modalTransitionStyle = UIModalTransitionStyle.coverVertical + nav.modalPresentationStyle = .fullScreen + self?.present(nav, animated: true) + return + } + } + let vc = CCSpatialVideoDisplayController() vc.sourceVideoURL = url vc.videoOriginalPHAsset = asset @@ -460,8 +471,19 @@ extension CCHomeController: TZImagePickerControllerDelegate,UINavigationControll gotoPhotoTransformVC(data: data, url: nil,asset: asset) } //选择视频 - spaceAlbumPopView.selectedVideoHandler = { [self] url,asset in - gotoVideoTransformVC(url: url,asset: asset) + spaceAlbumPopView.selectedVideoHandler = { [weak self] url,asset in + if (asset.duration > 60 ) { + if !UserInfo.sharedInstance.isMemberShip { + let vc:MembershipVC = MembershipVC() + let nav = UINavigationController(rootViewController: vc) + nav.modalTransitionStyle = UIModalTransitionStyle.coverVertical + nav.modalPresentationStyle = .fullScreen + self?.present(nav, animated: true) + return + } + } + + self?.gotoVideoTransformVC(url: url,asset: asset) } } diff --git a/SwiftProject/SwiftProject/Project/Controller/MembershipVC/MembershipVC.swift b/SwiftProject/SwiftProject/Project/Controller/MembershipVC/MembershipVC.swift index d4655d0..9dd6792 100644 --- a/SwiftProject/SwiftProject/Project/Controller/MembershipVC/MembershipVC.swift +++ b/SwiftProject/SwiftProject/Project/Controller/MembershipVC/MembershipVC.swift @@ -9,6 +9,8 @@ import Foundation import UIKit class MembershipVC: BaseController { var pvView:MembershipProductView? + var pcenterView:UIView? + var psubscribeBtn:UIButton? var selectedItem:MemberShipModelItem? lazy var mTopImgView:UIImageView = { //393*236 @@ -24,7 +26,24 @@ class MembershipVC: BaseController { self.configureData() } - + //用户vip身份改变 + @objc override func userVipStateChangeNotification(noti:Notification) { + print("子类收到通知收到的vip通知...") + if UserInfo.sharedInstance.isMemberShip { + if let h = pcenterView?.isHidden, h == false { + pcenterView?.snp.updateConstraints({ make in + make.height.equalTo(0) + }) + pcenterView?.superview?.layoutIfNeeded() + pcenterView?.isHidden = true + rightBtn1?.isHidden = true + psubscribeBtn?.setBackgroundImage(UIImage(named: NSLocalizedString("vip_alreadybuybtn", comment: "")), for: .normal) + psubscribeBtn?.isEnabled = false + } + + + } + } override func viewDidDisappear(_ animated: Bool) { super.viewDidDisappear(animated) diff --git a/SwiftProject/SwiftProject/Project/Controller/MembershipVC/MembershipVCConfigureView.swift b/SwiftProject/SwiftProject/Project/Controller/MembershipVC/MembershipVCConfigureView.swift index 2ca87e8..93a8042 100644 --- a/SwiftProject/SwiftProject/Project/Controller/MembershipVC/MembershipVCConfigureView.swift +++ b/SwiftProject/SwiftProject/Project/Controller/MembershipVC/MembershipVCConfigureView.swift @@ -16,16 +16,30 @@ extension MembershipVC { self.setLeftOneBtnImg(imgStr: "membership_close") self.leftBtn1?.addTarget(self, action: #selector(dismissVC(sender: )), for: .touchUpInside) // self.setRightOneBtnImg(imgStr: "Icon_PopUp_Icon_Folder") - self.rightBtn1?.addTarget(self, action: #selector(rebuyMembership(sender: )), for: .touchUpInside) +// self.rightBtn1?.addTarget(self, action: #selector(rebuyMembership(sender: )), for: .touchUpInside) self.setRightOneBtnTitle(string: NSLocalizedString("restorevip", comment: "") as NSString) - self.rightBtn1?.isHidden = UserInfo.sharedInstance.isMemberShip +// self.rightBtn1?.isHidden = UserInfo.sharedInstance.isMemberShip +// self.rightBtn1?.isEnabled = true + + rightBtn1 = UIButton.init(type: UIButton.ButtonType.custom) + rightBtn1?.isHidden = UserInfo.sharedInstance.isMemberShip + navtionBar?.addSubview(rightBtn1!) + rightBtn1?.tag = 10 + rightBtn1?.isSelected = false + rightBtn1?.addTarget(self, action: #selector(rebuyMembership(sender: )), for: .touchUpInside) + rightBtn1?.setTitle(NSLocalizedString("restorevip", comment: ""), for: .normal) + rightBtn1?.frame = CGRect(x: 2, y: 10, width: 76, height: 56) + rightBtn1!.centerY = StatuBar_Height + NavBar_Height * 0.5 + rightBtn1!.right = SCREEN_Width - 6 + + self.view.addSubview(mTopImgView) let topView = self.topView() self.view.addSubview(topView) topView.snp.makeConstraints { make in make.left.right.equalTo(0) - make.top.equalToSuperview().offset(80) + make.top.equalToSuperview().offset(120) make.height.equalTo(254) } @@ -57,6 +71,8 @@ extension MembershipVC { } + + @objc func dismissVC(sender:UIButton) { self.dismiss(animated: true) @@ -69,7 +85,8 @@ extension MembershipVC { //恢复购买 @objc func rebuyMembership(sender:UIButton) { - + print("......click 恢复购买") + SKUPay.sharedInstance.restoreProducts() } func topView() -> UIView { @@ -161,6 +178,7 @@ extension MembershipVC { func centerView() -> UIView { let bgView = UIView() + pcenterView = bgView bgView.backgroundColor = .clear pvView = MembershipProductView(frame: .zero) bgView.addSubview(pvView!) @@ -207,6 +225,7 @@ extension MembershipVC { bgView.backgroundColor = .clear let subscribeBtn = UIButton() + psubscribeBtn = subscribeBtn bgView.addSubview(subscribeBtn) subscribeBtn.addTarget(self, action: #selector(subscribeAction(sender: )), for: .touchUpInside) subscribeBtn.titleLabel?.font = UIFont.boldSystemFont(ofSize: 16) diff --git a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialShootController.swift b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialShootController.swift index ee79e5a..6ab8482 100644 --- a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialShootController.swift +++ b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialShootController.swift @@ -565,6 +565,16 @@ class CCSpatialShootController: BaseController { } //选择视频 spaceAlbumPopView.selectedVideoHandler = { url,asset in + if (asset.duration > 60 ) { + if !UserInfo.sharedInstance.isMemberShip { + let vc:MembershipVC = MembershipVC() + let nav = UINavigationController(rootViewController: vc) + nav.modalTransitionStyle = UIModalTransitionStyle.coverVertical + nav.modalPresentationStyle = .fullScreen + self.present(nav, animated: true) + return + } + } let vc = CCSpatialVideoDisplayController() vc.sourceVideoURL = url vc.videoOriginalPHAsset = asset diff --git a/SwiftProject/SwiftProject/en.lproj/Localizable.strings b/SwiftProject/SwiftProject/en.lproj/Localizable.strings index 159e62f..ab598cb 100644 --- a/SwiftProject/SwiftProject/en.lproj/Localizable.strings +++ b/SwiftProject/SwiftProject/en.lproj/Localizable.strings @@ -104,4 +104,4 @@ "用户协议" = "Terms of Service"; "Membership activated" = "Membership activated"; "restorevip" = "Restore"; - +"支付中..." = "Paying..."; diff --git a/SwiftProject/SwiftProject/zh-Hans.lproj/Localizable.strings b/SwiftProject/SwiftProject/zh-Hans.lproj/Localizable.strings index f8c54bf..2451161 100644 --- a/SwiftProject/SwiftProject/zh-Hans.lproj/Localizable.strings +++ b/SwiftProject/SwiftProject/zh-Hans.lproj/Localizable.strings @@ -104,4 +104,4 @@ "用户协议" = "用户协议"; "Membership activated" = "Membership activated"; "restorevip" = "恢复购买"; - +"支付中..." = "支付中...";