// // QSLJumpManager.swift // QuickSearchLocation // // Created by Destiny on 2024/12/24. // import Foundation import UIKit enum JumpType: Int { case createInspration = 0 // 灵感创作 case createDiy // 自定义创作 case mine // 我的 case vip // 会员 case login // 登录 case accompaniment // 伴奏 } class QSLJumpManager: NSObject { static let shared = QSLJumpManager() private override init() {} } extension QSLJumpManager { // 跳转到Vip页面 func pushToVip(type: QSLVipJumpType) { let vc = QSLVipController() vc.type = type self.rootViewController()?.pushVC(vc: vc) vc.finishHandler = {[weak self] isCancel in if isCancel { return } if QSLBaseManager.shared.isVip() { return } if let currentWindow = UIApplication.keyWindow { gravityInstance?.track(QSLGravityConst.new_vip_retention_show, properties: ["trigger_type":"close_vip_center"]) QSLRetainPopUpAlertView.alert(view: currentWindow, isOneBtn: true, oneBtnText: "继续支付", oneBtnClosure: { [weak self] in self?.unlockBtnAction() gravityInstance?.track(QSLGravityConst.new_vip_retention_click, properties: ["button":"continue_payment"]) },secondBtnClosure: { gravityInstance?.track(QSLGravityConst.new_vip_retention_click, properties: ["button":"close"]) }) } } } func unlockBtnAction(){ if let selectGood = QSLCountdownManager.shared.selectGood{ let memberModel = QSLBaseManager.shared.userModel.memberModel if let subscriptionExpired = memberModel.subscriptionExpired, !subscriptionExpired { UIApplication.keyWindow?.toast(text: "你已经订阅了") return } QSLLoading.show() QSLVipManager.shared.startPay(goods: selectGood) { status, outTradeNo in QSLVipManager.shared.isPaying = false if status == .success { QSLLoading.success(text: "支付成功") gravityInstance?.track(QSLGravityConst.new_vip_result, properties: ["is_member":QSLBaseManager.shared.isVip(),"purchase_result": "success","pay_amount":Int32(selectGood.amount)]) //支付成功埋点 gravityInstance?.track(QSLGravityConst.vip_submit_success, properties: ["id": 01001]) //弹出是否好评的弹窗 QSLGuideusersToCommentManager.commentShare.manageWhetherTriggerPopUpWindow(QSLGuideusersToCommentType.member) // 引力传递支付事件 gravityInstance?.trackPayEvent(withAmount: Int32(selectGood.amount), withPayType: "CNY", withOrderId: outTradeNo, withPayReason: selectGood.name, withPayMethod: "apple") DispatchQueue.main.asyncAfter(deadline: .now() + 1) { NotificationCenter.default.post(name: QSLNotification.QSLRefreshMember, object: nil) } } else if status == .cancel { gravityInstance?.track(QSLGravityConst.new_vip_result, properties: ["is_member":QSLBaseManager.shared.isVip(),"purchase_result": "cancel","pay_amount":Int32(selectGood.amount)]) QSLLoading.error(text: "支付取消") } else if status == .fail { gravityInstance?.track(QSLGravityConst.new_vip_result, properties: ["is_member":QSLBaseManager.shared.isVip(),"purchase_result": "fail","pay_amount":Int32(selectGood.amount)]) gravityInstance?.track(QSLGravityConst.vip_fail) QSLLoading.error(text: "支付失败") } else if status == .searchFail { QSLLoading.error(text: "查询订单失败,请稍后重试") } } } } // 跳转到登录页面 func pushToLogin(type: QSLLoginJumpType) { let vc = QSLLoginViewController() vc.type = type self.rootViewController()?.pushVC(vc: vc) } // 跳转到紧急联系人页面 func pushToContact(type: QSLContactJumpPage) { let vc = QSLContactController() vc.type = type self.rootViewController()?.pushVC(vc: vc) } // 跳转到轨迹页面 func pushToRoad(type: QSLRoadJumpType, model: QSLUserModel) { let vc = QSLRoadController(userModel: model) vc.type = type self.rootViewController()?.pushVC(vc: vc) } // 跳转到添加好友页面 func pushToAdd(type: QSLAddJumpType) { let vc = QSLAddController() vc.type = type self.rootViewController()?.pushVC(vc: vc) } }