QSLJumpManager.swift 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. //
  2. // QSLJumpManager.swift
  3. // QuickSearchLocation
  4. //
  5. // Created by Destiny on 2024/12/24.
  6. //
  7. import Foundation
  8. import UIKit
  9. enum JumpType: Int {
  10. case createInspration = 0 // 灵感创作
  11. case createDiy // 自定义创作
  12. case mine // 我的
  13. case vip // 会员
  14. case login // 登录
  15. case accompaniment // 伴奏
  16. }
  17. class QSLJumpManager: NSObject {
  18. static let shared = QSLJumpManager()
  19. private override init() {}
  20. }
  21. extension QSLJumpManager {
  22. // 跳转到Vip页面
  23. func pushToVip(type: QSLVipJumpType) {
  24. let vc = QSLVipController()
  25. vc.type = type
  26. self.rootViewController()?.pushVC(vc: vc)
  27. vc.finishHandler = {[weak self] isCancel, yearGood in
  28. if isCancel {
  29. return
  30. }
  31. if QSLBaseManager.shared.isVip() {
  32. return
  33. }
  34. if let currentWindow = UIApplication.keyWindow {
  35. gravityInstance?.track(QSLGravityConst.new_vip_retention_show, properties: ["trigger_type":"close_vip_center"])
  36. QSLRetainPopUpAlertView.alert(view: currentWindow, isOneBtn: true, oneBtnText: "继续支付", oneBtnClosure: { [weak self] in
  37. QSLCountdownManager.shared.selectGood = yearGood
  38. self?.unlockBtnAction()
  39. gravityInstance?.track(QSLGravityConst.new_vip_retention_click, properties: ["button":"continue_payment"])
  40. },closeBtnClosure: {
  41. gravityInstance?.track(QSLGravityConst.new_vip_retention_click, properties: ["button":"close"])
  42. })
  43. }
  44. }
  45. }
  46. func unlockBtnAction(){
  47. if let selectGood = QSLCountdownManager.shared.selectGood{
  48. let memberModel = QSLBaseManager.shared.userModel.memberModel
  49. if let subscriptionExpired = memberModel.subscriptionExpired, !subscriptionExpired {
  50. UIApplication.keyWindow?.toast(text: "你已经订阅了")
  51. return
  52. }
  53. QSLLoading.show()
  54. QSLVipManager.shared.startPay(goods: selectGood) { status, outTradeNo in
  55. QSLVipManager.shared.isPaying = false
  56. if status == .success {
  57. QSLLoading.success(text: "支付成功")
  58. gravityInstance?.track(QSLGravityConst.new_vip_result, properties: ["is_member":QSLBaseManager.shared.isVip(),"purchase_result": "success","pay_amount":Int32(selectGood.amount)])
  59. //支付成功埋点
  60. gravityInstance?.track(QSLGravityConst.vip_submit_success, properties: ["id": 01001])
  61. //弹出是否好评的弹窗
  62. //QSLGuideusersToCommentManager.commentShare.manageWhetherTriggerPopUpWindow(QSLGuideusersToCommentType.member)
  63. // 引力传递支付事件
  64. gravityInstance?.trackPayEvent(withAmount: Int32(selectGood.amount), withPayType: "CNY", withOrderId: outTradeNo, withPayReason: selectGood.name, withPayMethod: "apple")
  65. DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
  66. NotificationCenter.default.post(name: QSLNotification.QSLRefreshMember, object: nil)
  67. if(!QSLBaseManager.shared.isLogin()){
  68. QSLJumpManager.shared.pushToLogin(type: .member)
  69. }
  70. }
  71. } else if status == .cancel {
  72. gravityInstance?.track(QSLGravityConst.new_vip_result, properties: ["is_member":QSLBaseManager.shared.isVip(),"purchase_result": "cancel","pay_amount":Int32(selectGood.amount)])
  73. QSLLoading.error(text: "支付取消")
  74. } else if status == .fail {
  75. gravityInstance?.track(QSLGravityConst.new_vip_result, properties: ["is_member":QSLBaseManager.shared.isVip(),"purchase_result": "fail","pay_amount":Int32(selectGood.amount)])
  76. gravityInstance?.track(QSLGravityConst.vip_fail)
  77. QSLLoading.error(text: "支付失败")
  78. }
  79. }
  80. }
  81. }
  82. // 跳转到登录页面
  83. func pushToLogin(type: QSLLoginJumpType) {
  84. let vc = QSLLoginViewController()
  85. vc.type = type
  86. self.rootViewController()?.pushVC(vc: vc)
  87. }
  88. // 跳转到紧急联系人页面
  89. func pushToContact(type: QSLContactJumpPage) {
  90. let vc = QSLContactController()
  91. vc.type = type
  92. self.rootViewController()?.pushVC(vc: vc)
  93. }
  94. // 跳转到轨迹页面
  95. func pushToRoad(type: QSLRoadJumpType, model: QSLUserModel) {
  96. let vc = QSLRoadController(userModel: model)
  97. vc.type = type
  98. self.rootViewController()?.pushVC(vc: vc)
  99. }
  100. // 跳转到添加好友页面
  101. func pushToAdd(type: QSLAddJumpType) {
  102. let vc = QSLAddController()
  103. vc.type = type
  104. self.rootViewController()?.pushVC(vc: vc)
  105. }
  106. }