RevenueCat Subscription
Subscription management with RevenueCat integration

Preview

Code
1import SwiftUI2import RevenueCat34struct SubscriptionView: View {5 @State private var subscriptionStatus: SubscriptionStatus = .free6 @State private var isLoading = false7 8 var body: some View {9 VStack(spacing: 24) {10 VStack(spacing: 12) {11 Image(systemName: "crown.fill")12 .font(.system(size: 40))13 .foregroundColor(.yellow)14 15 Text("Premium Features")16 .font(.title2)17 .fontWeight(.bold)18 19 Text("Unlock unlimited access to all features")20 .font(.caption)21 .foregroundColor(.secondary)22 .multilineTextAlignment(.center)23 }24 25 VStack(spacing: 16) {26 FeatureRow(icon: "checkmark.circle", text: "Unlimited projects")27 FeatureRow(icon: "checkmark.circle", text: "Advanced analytics")28 FeatureRow(icon: "checkmark.circle", text: "Priority support")29 }30 31 Button(action: {32 purchaseSubscription()33 }) {34 HStack {35 if isLoading {36 ProgressView()37 .scaleEffect(0.8)38 }39 Text(isLoading ? "Processing..." : "Start Free Trial")40 }41 .frame(maxWidth: .infinity)42 .padding()43 .background(Color.blue)44 .foregroundColor(.white)45 .cornerRadius(8)46 }47 .disabled(isLoading)48 }49 .padding(24)50 .background(Color(.systemBackground))51 .cornerRadius(16)52 .shadow(radius: 8)53 }54 55 func purchaseSubscription() {56 isLoading = true57 // RevenueCat purchase logic here58 DispatchQueue.main.asyncAfter(deadline: .now() + 1.5) {59 isLoading = false60 subscriptionStatus = .premium61 }62 }63}6465struct FeatureRow: View {66 let icon: String67 let text: String68 69 var body: some View {70 HStack {71 Image(systemName: icon)72 .foregroundColor(.green)73 Text(text)74 .font(.body)75 Spacer()76 }77 }78}7980enum SubscriptionStatus {81 case free, premium82}8384struct SubscriptionView_Previews: PreviewProvider {85 static var previews: some View {86 SubscriptionView()87 }88}