Untitled
unknown
swift
3 years ago
5.8 kB
15
Indexable
//
// PaywallView.swift
// CustomTextsLockScreen
//
// Created by Doğancan Mavideniz on 25.09.2022.
//
import SwiftUI
import RevenueCat
struct PaywallView: View {
@State var currentOffering: Offering?
@Binding var isPremiumView: Bool
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
var body: some View {
ZStack {
Color.black
.ignoresSafeArea()
ScrollView {
VStack(alignment: .leading) {
HStack {
Text("Upgrade Premium").font(.custom("Figtree-bold", size: 42)).foregroundColor(.white)
Spacer()
Button {
presentationMode.wrappedValue.dismiss()
} label: {
Image(systemName: "multiply")
.resizable()
.frame(width: 25, height: 25)
.foregroundColor(.white)
}
}
Text("\nUnlock all features!").font(.custom("Figtree-bold", size: 34)).foregroundColor(.white)
Text("\nUnlock all features including special fonts, emoji & symbol features, and supports the developer. Also remove all ad.").font(.custom("Figtree-bold", size: 16)).foregroundColor(.white)
if currentOffering != nil {
ForEach(currentOffering!.availablePackages) { pkg in
Button {
Purchases.shared.purchase(package: pkg) { (transaction, customerInfo, error, userCancelled) in
if customerInfo?.entitlements.all["pro"]?.isActive == true {
// Unlock that great "pro" content
isPremiumView = true
presentationMode.wrappedValue.dismiss()
}
}
} label: {
ZStack {
Rectangle()
.cornerRadius(20)
.foregroundColor(.white)
HStack {
Text("\(pkg.storeProduct.subscriptionPeriod!.periodTitle)")
.font(.custom("Figtree-Bold", size: 25)).foregroundColor(.black)
Spacer()
Text("\(pkg.storeProduct.localizedPriceString)")
.font(.custom("Figtree-Bold", size: 35)).foregroundColor(.black)
}.padding()
}.frame(height: UIScreen.main.bounds.height * 0.11).padding()
}
}
}
HStack {
Spacer()
Button {
Purchases.shared.restorePurchases { (customerInfo, error) in
//... check customerInfo to see if entitlement is now active
isPremiumView = customerInfo?.entitlements.all["pro"]?.isActive == true
}
} label: {
Text("Restore purchases").foregroundColor(.gray).font(.caption2)
}
Spacer()
}
HStack(spacing: 20) {
Spacer()
Link("Privacy Policy", destination: URL(string: "https://docs.google.com/document/d/1YPf27zlxIVGL4C5PEmXXhHvPd_1_oYwIOHaSy6BVrs0/edit?usp=sharing")!)
Link("Terms & Conditions", destination: URL(string: "https://docs.google.com/document/d/1roOcpR1-BrJoUEeOImWwyFjwCoz4PM_600LUrQAvYck/edit?usp=sharing")!)
Spacer()
}.font(.system(size: 10)).foregroundColor(.gray).padding()
VStack {
Text("Payment will be charged to your iTunes account at confirmation of purchase. Subscriptions will automatically renew unless auto-renew is turned off at least 24 hours before the end of current period. Your account will be charged according to your plan for renewal within 24 hours prior to the end of the current period. You can manage or turn off auto-renew in your Apple ID account settings at any time after purchase.").font(.system(size: 12))
.multilineTextAlignment(.center)
.padding(.leading, 30).padding(.trailing, 30)
Spacer(minLength: 50)
}.foregroundColor(.gray)
}.padding()
}
}.navigationBarBackButtonHidden(true)
.onAppear() {
Purchases.shared.getOfferings { offerings, error in
if let offer = offerings?.current, error == nil {
currentOffering = offer
}
}
}
}
}
extension SubscriptionPeriod {
var durationTitle: String {
switch self.unit {
case .day: return "day"
case .week: return "week"
case .month: return "month"
case .year: return "year"
@unknown default: return "Unknown"
}
}
var periodTitle: String {
let periodString = "\(self.value) \(self.durationTitle)"
let pluralized = self.value > 1 ? periodString + "s" : periodString
return pluralized
}
}
Editor is loading...