KMNewUserGiftManager.swift 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. //
  2. // KMNewUserGiftManager.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by User-Tangchao on 2025/1/8.
  6. //
  7. import Cocoa
  8. //@objc enum KMWindowShowState: UInt {
  9. // case undetermined
  10. // case no
  11. // case yes
  12. //}
  13. @objcMembers class KMNewUserGiftManager: NSObject {
  14. static let `default` = KMNewUserGiftManager()
  15. // 登陆进度状态
  16. var loginProgressState: KMProgressState = .none
  17. // 获取凭证进度状态
  18. var fetchReceiptProgressState: KMProgressState = .none
  19. var iapProductLoadProgressState: KMProgressState = .none
  20. var advertisementProgressState: KMProgressState = .none
  21. var hasTopRightAdvertisement = false
  22. var progressState: KMProgressState {
  23. get {
  24. if loginProgressState == .none {
  25. return .none
  26. }
  27. if fetchReceiptProgressState == .none {
  28. return .none
  29. }
  30. if advertisementProgressState == .none {
  31. return .none
  32. }
  33. #if VERSION_DMG
  34. #else
  35. if iapProductLoadProgressState == .none {
  36. return .none
  37. }
  38. if iapProductLoadProgressState == .failure {
  39. return .failure
  40. }
  41. #endif
  42. if loginProgressState == .failure {
  43. return .failure
  44. }
  45. if fetchReceiptProgressState == .failure {
  46. return .failure
  47. }
  48. if advertisementProgressState == .failure {
  49. return .failure
  50. }
  51. return .success
  52. }
  53. }
  54. // 是否需要显示新手礼
  55. func needShow() -> Bool {
  56. if self.progressState == .none {
  57. return false
  58. }
  59. if KMMemberInfo.shared.isMemberAllFunction { // 有权益 (本地 & 账号)
  60. return false
  61. }
  62. if hasTopRightAdvertisement { // 右上角有广告
  63. return false
  64. }
  65. #if VERSION_DMG
  66. return true
  67. #else
  68. // 是否能享受新手礼 【Apple ID】
  69. let man = IAPProductsManager.default()
  70. guard let model = man?.receiptModel else {
  71. return false
  72. }
  73. // 商品是否配置了新手礼
  74. guard let price = man?.fourDevicesAllAccessPackNew6Months_lite?.introPrice(), price.isEmpty == false else {
  75. return false
  76. }
  77. guard let groupId = man?.fourDevicesAllAccessPackNew12months_lite?.product?.subscriptionGroupIdentifier, groupId.isEmpty == false else {
  78. return false
  79. }
  80. return IAPReceiptTool.isNewUser(with: model, withGroupIdentifier: groupId)
  81. #endif
  82. }
  83. }