From 28a9db04ab09bc9281d6a5217a5ea8e038dc4438 Mon Sep 17 00:00:00 2001 From: Junhui Chen Date: Wed, 20 Aug 2025 13:44:10 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E4=BF=AE=E6=94=B9=E6=96=87=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 92966 -> 94537 bytes .../xcshareddata/xcschemes/wake.xcscheme | 81 +++++++ .../xcdebugger/Breakpoints_v2.xcbkptlist | 18 -- .../xcschemes/xcschememanagement.plist | 8 + wake/ContentView.swift | 11 + wake/MemoWake.storekit | 215 ++++++++++++++++++ wake/Utils/IAPManager.swift | 125 ++++++++++ wake/View/Owner/SettingsView.swift | 31 +-- .../Subscribe/Components/PlanCompare.swift | 2 +- .../Components/SubscribeButton.swift | 44 ++-- wake/View/Subscribe/SubscribeView.swift | 67 ++++-- 11 files changed, 518 insertions(+), 84 deletions(-) create mode 100644 wake.xcodeproj/xcshareddata/xcschemes/wake.xcscheme create mode 100644 wake/MemoWake.storekit create mode 100644 wake/Utils/IAPManager.swift diff --git a/wake.xcodeproj/project.xcworkspace/xcuserdata/fairclip.xcuserdatad/UserInterfaceState.xcuserstate b/wake.xcodeproj/project.xcworkspace/xcuserdata/fairclip.xcuserdatad/UserInterfaceState.xcuserstate index b3d4d607bcfcef876e37ab1dcd0113b04865382f..754cc0d04fc0e5d0d5b0a9d730fadb02b7e5c7a0 100644 GIT binary patch literal 94537 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 literal 92966 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 diff --git a/wake.xcodeproj/xcshareddata/xcschemes/wake.xcscheme b/wake.xcodeproj/xcshareddata/xcschemes/wake.xcscheme new file mode 100644 index 0000000..13c5de3 --- /dev/null +++ b/wake.xcodeproj/xcshareddata/xcschemes/wake.xcscheme @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wake.xcodeproj/xcuserdata/fairclip.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/wake.xcodeproj/xcuserdata/fairclip.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index 0ff5029..0ed7045 100644 --- a/wake.xcodeproj/xcuserdata/fairclip.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/wake.xcodeproj/xcuserdata/fairclip.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -3,22 +3,4 @@ uuid = "55F37A93-4556-4005-B9BD-8F1A1D6A8474" type = "1" version = "2.0"> - - - - - - diff --git a/wake.xcodeproj/xcuserdata/fairclip.xcuserdatad/xcschemes/xcschememanagement.plist b/wake.xcodeproj/xcuserdata/fairclip.xcuserdatad/xcschemes/xcschememanagement.plist index a4c98a3..76572c9 100644 --- a/wake.xcodeproj/xcuserdata/fairclip.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/wake.xcodeproj/xcuserdata/fairclip.xcuserdatad/xcschemes/xcschememanagement.plist @@ -10,5 +10,13 @@ 0 + SuppressBuildableAutocreation + + ABB4E2072E4B75D900660198 + + primary + + + diff --git a/wake/ContentView.swift b/wake/ContentView.swift index 976c126..2d9ecaf 100644 --- a/wake/ContentView.swift +++ b/wake/ContentView.swift @@ -79,6 +79,17 @@ struct ContentView: View { .foregroundColor(.white) .cornerRadius(8) } + + // 订阅测试按钮 + NavigationLink(destination: SubscribeView()) { + Text("Subscribe") + .font(.subheadline) + .padding(.horizontal, 12) + .padding(.vertical, 6) + .background(Color.orange) + .foregroundColor(.white) + .cornerRadius(8) + } .padding(.trailing) } diff --git a/wake/MemoWake.storekit b/wake/MemoWake.storekit new file mode 100644 index 0000000..1434950 --- /dev/null +++ b/wake/MemoWake.storekit @@ -0,0 +1,215 @@ +{ + "appPolicies" : { + "eula" : "", + "policies" : [ + { + "locale" : "en_US", + "policyText" : "", + "policyURL" : "" + } + ] + }, + "identifier" : "C75471B9", + "nonRenewingSubscriptions" : [ + + ], + "products" : [ + + ], + "settings" : { + "_applicationInternalID" : "6748205761", + "_developerTeamID" : "392N3QB7XR", + "_failTransactionsEnabled" : false, + "_lastSynchronizedDate" : 777364219.49411595, + "_locale" : "en_US", + "_storefront" : "USA", + "_storeKitErrors" : [ + { + "current" : null, + "enabled" : false, + "name" : "Load Products" + }, + { + "current" : null, + "enabled" : false, + "name" : "Purchase" + }, + { + "current" : null, + "enabled" : false, + "name" : "Verification" + }, + { + "current" : null, + "enabled" : false, + "name" : "App Store Sync" + }, + { + "current" : null, + "enabled" : false, + "name" : "Subscription Status" + }, + { + "current" : null, + "enabled" : false, + "name" : "App Transaction" + }, + { + "current" : null, + "enabled" : false, + "name" : "Manage Subscriptions Sheet" + }, + { + "current" : null, + "enabled" : false, + "name" : "Refund Request Sheet" + }, + { + "current" : null, + "enabled" : false, + "name" : "Offer Code Redeem Sheet" + } + ] + }, + "subscriptionGroups" : [ + { + "id" : "21759571", + "localizations" : [ + + ], + "name" : "Membership", + "subscriptions" : [ + { + "adHocOffers" : [ + + ], + "codeOffers" : [ + + ], + "displayPrice" : "0.99", + "familyShareable" : false, + "groupNumber" : 1, + "internalID" : "6751260055", + "introductoryOffer" : null, + "localizations" : [ + { + "description" : "The Pioneer Plan unlocks many restrictions.", + "displayName" : "Pioneer Plan", + "locale" : "en_US" + }, + { + "description" : "先锋计划用户,不限制盲盒购买数量,不限制回忆上传数量,每天免费获取500积分", + "displayName" : "先锋计划", + "locale" : "zh_Hans" + } + ], + "productID" : "MEMBERSHIP_PIONEER_MONTHLY", + "recurringSubscriptionPeriod" : "P1M", + "referenceName" : "Pioneer计划", + "subscriptionGroupID" : "21759571", + "type" : "RecurringSubscription", + "winbackOffers" : [ + + ] + } + ] + }, + { + "id" : "21740727", + "localizations" : [ + + ], + "name" : "Pro会员", + "subscriptions" : [ + { + "adHocOffers" : [ + + ], + "codeOffers" : [ + + ], + "displayPrice" : "12.99", + "familyShareable" : false, + "groupNumber" : 1, + "internalID" : "6749133482", + "introductoryOffer" : null, + "localizations" : [ + { + "description" : "Pro会员每月有更高的存储空间与积分数量", + "displayName" : "季度Pro会员", + "locale" : "zh_Hans" + } + ], + "productID" : "MEMBERSHIP_PRO_QUARTERLY", + "recurringSubscriptionPeriod" : "P3M", + "referenceName" : "季度Pro会员", + "subscriptionGroupID" : "21740727", + "type" : "RecurringSubscription", + "winbackOffers" : [ + + ] + }, + { + "adHocOffers" : [ + + ], + "codeOffers" : [ + + ], + "displayPrice" : "59.99", + "familyShareable" : false, + "groupNumber" : 2, + "internalID" : "6749229999", + "introductoryOffer" : null, + "localizations" : [ + { + "description" : "Pro会员每月有更高的存储空间与积分数量", + "displayName" : "年度Pro会员", + "locale" : "zh_Hans" + } + ], + "productID" : "MEMBERSHIP_PRO_YEARLY", + "recurringSubscriptionPeriod" : "P1Y", + "referenceName" : "年度Pro会员", + "subscriptionGroupID" : "21740727", + "type" : "RecurringSubscription", + "winbackOffers" : [ + + ] + }, + { + "adHocOffers" : [ + + ], + "codeOffers" : [ + + ], + "displayPrice" : "3.99", + "familyShareable" : false, + "groupNumber" : 3, + "internalID" : "6749230171", + "introductoryOffer" : null, + "localizations" : [ + { + "description" : "Pro会员每月有更高的存储空间与积分数量", + "displayName" : "月度Pro会员", + "locale" : "zh_Hans" + } + ], + "productID" : "MEMBERSHIP_PRO_MONTH", + "recurringSubscriptionPeriod" : "P1M", + "referenceName" : "月度Pro会员", + "subscriptionGroupID" : "21740727", + "type" : "RecurringSubscription", + "winbackOffers" : [ + + ] + } + ] + } + ], + "version" : { + "major" : 4, + "minor" : 0 + } +} diff --git a/wake/Utils/IAPManager.swift b/wake/Utils/IAPManager.swift new file mode 100644 index 0000000..27fb2c9 --- /dev/null +++ b/wake/Utils/IAPManager.swift @@ -0,0 +1,125 @@ +import Foundation +import StoreKit + +@MainActor +final class IAPManager: ObservableObject { + @Published var isPurchasing: Bool = false + @Published var pioneerProduct: Product? + @Published var errorMessage: String? + @Published var isSubscribed: Bool = false + @Published var subscriptionExpiry: Date? = nil + + // Product IDs from App Store Connect + private let productIDs: [String] = [ + "MEMBERSHIP_PIONEER_MONTHLY" + ] + + init() { + Task { await observeTransactions() } + } + + // Load products defined in App Store Connect + func loadProducts() async { + do { + let products = try await Product.products(for: productIDs) + // You can refine selection logic if you have multiple tiers + self.pioneerProduct = products.first + if products.isEmpty { + // No products found is a common setup issue (App Store Connect, StoreKit config, or bundle ID) + self.errorMessage = "No subscription products found. Please try again later." + } + } catch { + self.errorMessage = "Failed to load products: \(error.localizedDescription)" + } + } + + // Trigger App Store purchase sheet + func purchasePioneer() async { + guard !isPurchasing else { return } + guard let product = pioneerProduct else { + // Surface an actionable error so the UI can inform the user + self.errorMessage = "Subscription product unavailable. Please try again later." + return + } + isPurchasing = true + defer { isPurchasing = false } + + do { + let result = try await product.purchase() + switch result { + case .success(let verification): + switch verification { + case .unverified(_, let error): + self.errorMessage = "Purchase unverified: \(error.localizedDescription)" + case .verified(let transaction): + // Update entitlement for the purchased product + updateEntitlement(from: transaction) + await transaction.finish() + } + case .userCancelled: + break + case .pending: + break + @unknown default: + break + } + } catch { + self.errorMessage = "Purchase failed: \(error.localizedDescription)" + } + } + + // Restore purchases (sync entitlements) + func restorePurchases() async { + do { + try await AppStore.sync() + } catch { + self.errorMessage = "Restore failed: \(error.localizedDescription)" + } + } + + // Observe transaction updates for entitlement changes + private func observeTransactions() async { + for await result in Transaction.updates { + do { + let transaction: Transaction = try checkVerified(result) + // Update entitlement state for transaction.productID + updateEntitlement(from: transaction) + await transaction.finish() + } catch { + // Ignore unverified transactions + } + } + } + + // Check current entitlements (useful on launch) + func refreshEntitlements() async { + for await result in Transaction.currentEntitlements { + if case .verified(let transaction) = result, + productIDs.contains(transaction.productID) { + updateEntitlement(from: transaction) + } + } + } + + // Helper: verify + private func checkVerified(_ result: VerificationResult) throws -> T { + switch result { + case .unverified(_, let error): + throw error + case .verified(let safe): + return safe + } + } + + private func updateEntitlement(from transaction: Transaction) { + guard productIDs.contains(transaction.productID) else { return } + // For auto-renewable subs, use expirationDate and revocationDate + if transaction.revocationDate == nil { + self.isSubscribed = true + self.subscriptionExpiry = transaction.expirationDate + } else { + self.isSubscribed = false + self.subscriptionExpiry = nil + } + } +} diff --git a/wake/View/Owner/SettingsView.swift b/wake/View/Owner/SettingsView.swift index b068b2a..d2abf64 100644 --- a/wake/View/Owner/SettingsView.swift +++ b/wake/View/Owner/SettingsView.swift @@ -23,35 +23,12 @@ struct SettingsView: View { var body: some View { VStack(spacing: 0) { - // 自定义导航栏 - HStack { - // 返回按钮 - Button(action: { - withAnimation(animation) { - isPresented = false - } - }) { - HStack(spacing: 4) { - Image(systemName: "chevron.left") - .font(.system(size: 16, weight: .medium)) - .foregroundColor(.blue) - } + // 简洁导航头 + SimpleNaviHeader(title: "Setting") { + withAnimation(animation) { + isPresented = false } - - Spacer() - - // 标题 - Text("Setting") - .font(.headline) - - Spacer() - - // 用于平衡布局的透明视图 - Color.clear - .frame(width: 44, height: 44) } - .padding(.horizontal,16) - .padding(.vertical, 8) // 设置项列表 List { diff --git a/wake/View/Subscribe/Components/PlanCompare.swift b/wake/View/Subscribe/Components/PlanCompare.swift index 77fc88c..92b3380 100644 --- a/wake/View/Subscribe/Components/PlanCompare.swift +++ b/wake/View/Subscribe/Components/PlanCompare.swift @@ -25,7 +25,7 @@ struct PlanCompare: View { title: "Mystery Box Purchase:", subtitle: nil, freeValue: "3 /week", - pioneerValue: "Free", + pioneerValue: "Unlimited", icon: nil ), PlanFeature( diff --git a/wake/View/Subscribe/Components/SubscribeButton.swift b/wake/View/Subscribe/Components/SubscribeButton.swift index 307cdad..15ad9c7 100644 --- a/wake/View/Subscribe/Components/SubscribeButton.swift +++ b/wake/View/Subscribe/Components/SubscribeButton.swift @@ -5,15 +5,18 @@ struct SubscribeButton: View { let title: String let isLoading: Bool let action: () -> Void + let subscribed: Bool init( title: String = "Subscribe", isLoading: Bool, - action: @escaping () -> Void + subscribed: Bool, + action: @escaping () -> Void, ) { self.title = title self.isLoading = isLoading self.action = action + self.subscribed = subscribed } var body: some View { @@ -29,17 +32,25 @@ struct SubscribeButton: View { } VStack { - Spacer() - Spacer() - Text(title) - .font(Typography.font(for: .body, family: .quicksandBold)) - Spacer() - // Fixed subtitle text as requested - Text("And get 5,000 Permanent Credits") - .font(Typography.font(for: .caption, family: .quicksandRegular)) - .foregroundColor(Theme.Colors.textPrimary) - Spacer() - Spacer() + if subscribed { + Spacer() + Text("Subscribed") + .font(Typography.font(for: .body, family: .quicksandBold)) + Spacer() + } + else { + Spacer() + Spacer() + Text(title) + .font(Typography.font(for: .body, family: .quicksandBold)) + Spacer() + // Fixed subtitle text as requested + Text("And get 5,000 Permanent Credits") + .font(Typography.font(for: .caption, family: .quicksandRegular)) + .foregroundColor(Theme.Colors.textPrimary) + Spacer() + Spacer() + } } } .frame(height: 56) @@ -54,16 +65,17 @@ struct SubscribeButton: View { ) } .buttonStyle(.plain) - .disabled(isLoading) + .disabled(isLoading || subscribed) } } } #Preview("SubscribeButton") { VStack(spacing: Theme.Spacing.xl) { - SubscribeButton(isLoading: false) {} - SubscribeButton(isLoading: true) {} + SubscribeButton(isLoading: false, subscribed: false) {} + SubscribeButton(isLoading: true, subscribed: false) {} + SubscribeButton(isLoading: false, subscribed: true) {} } .padding() .background(Theme.Colors.background) -} \ No newline at end of file +} diff --git a/wake/View/Subscribe/SubscribeView.swift b/wake/View/Subscribe/SubscribeView.swift index d90c682..fb3966b 100644 --- a/wake/View/Subscribe/SubscribeView.swift +++ b/wake/View/Subscribe/SubscribeView.swift @@ -6,6 +6,7 @@ // import SwiftUI +import StoreKit // MARK: - 订阅计划枚举 enum SubscriptionPlan: String, CaseIterable { @@ -38,9 +39,13 @@ struct SubscriptionFeature { } struct SubscribeView: View { + @Environment(\.dismiss) private var dismiss + @StateObject private var store = IAPManager() @State private var selectedPlan: SubscriptionPlan? = .pioneer @State private var isLoading = false - @Environment(\.presentationMode) var presentationMode + @State private var showErrorAlert = false + @State private var errorText = "" + // 功能对比数据 private let features = [ @@ -50,12 +55,14 @@ struct SubscribeView: View { ] var body: some View { - NavigationView { + VStack(spacing: 0) { + // 自定义简洁导航头,统一风格 + SimpleNaviHeader(title: "Subscription") { + dismiss() + } + ScrollView { VStack(spacing: 0) { - // 导航栏 - navigationHeader - // 当前订阅状态卡片 currentSubscriptionCard @@ -88,21 +95,42 @@ struct SubscribeView: View { } } .background(Theme.Colors.background) - .navigationBarHidden(true) } - } - - // MARK: - 导航栏 - private var navigationHeader: some View { - NaviHeader(title: "Subscription") { - presentationMode.wrappedValue.dismiss() + .navigationBarHidden(true) + .task { + // Load products and refresh current entitlements on appear + await store.loadProducts() + await store.refreshEntitlements() + } + .onChange(of: store.isPurchasing) { newValue in + // Bind purchasing state to button loading + isLoading = newValue + } + .onChange(of: store.errorMessage) { newValue in + if let message = newValue, !message.isEmpty { + errorText = message + showErrorAlert = true + } + } + .alert("Purchase Error", isPresented: $showErrorAlert) { + Button("OK", role: .cancel) { store.errorMessage = nil } + } message: { + Text(errorText) } } // MARK: - 当前订阅状态卡片 private var currentSubscriptionCard: some View { - SubscriptionStatusBar( - status: .pioneer(expiryDate: Date()) , + let status: SubscriptionStatus = { + if store.isSubscribed { + return .pioneer(expiryDate: store.subscriptionExpiry ?? Date()) + } else { + return .free + } + }() + + return SubscriptionStatusBar( + status: status, onSubscribeTap: { // 订阅操作 handleSubscribe() @@ -182,6 +210,7 @@ struct SubscribeView: View { SubscribeButton( title: "Subscribe", isLoading: isLoading, + subscribed: store.isSubscribed, action: handleSubscribe ) } @@ -213,7 +242,7 @@ struct SubscribeView: View { .foregroundColor(.secondary) Button(action: { - // 恢复购买 + Task { await store.restorePurchases() } }) { Text("Restore Purchase") .underline() @@ -226,13 +255,7 @@ struct SubscribeView: View { // MARK: - 订阅处理 private func handleSubscribe() { - isLoading = true - - // 模拟订阅处理 - DispatchQueue.main.asyncAfter(deadline: .now() + 2) { - isLoading = false - // 处理订阅逻辑 - } + Task { await store.purchasePioneer() } } }