Doako proba bat eskaintzea modu bikaina da erabiltzaileak zure aplikazioaren premium funtzioak probatzera animatzeko, haiek ordainpeko harpidedun bihurtzeko aukerak areagotuz. StoreKit 2-rekin, Apple-k tresna hobetuak sartu ditu erabiltzaileak aurkezpen-eskaintzak jasotzeko duen eskubidea egiaztatzen laguntzeko. Artikulu honetan, zure aplikazioan doako probak ezartzen lagunduko dizugu, kode-zatiekin osatuta erabiltzailea egokia den egiaztatzeko. Erabiltzaile hautagarrientzako eta ez-prestagarrientzako proba-egoerak ere landuko ditugu. Ziurtatu artikuluan zehar sakabanatuta dauden " Pro Aholkuak " kontutan hartzen dituzula, non nire esperientziatik jasotako ikuspegi pertsonal batzuk partekatzen ditudan!
Kodetzen hasi aurretik, ziurtatu aplikazioko erosketa ezarpenak App Store Connect-en konfiguratzen dituzula:
Hau erraztuko dut kode zatia erakutsita, erabiltzailearen probarako hautagarritasuna nola kalkulatu nahi duzun jakiteko.
Sortu SwiftUI ikuspegia doako probaren eskaintza bistaratzeko eta erabiltzaileen interakzioak kudeatzeko. Kode zatian iruzkin asko utziko ditut zu ibiltzeko.
import StoreKit2 // StoreManager is responsible to communicate with Storekit Framework provided by Apple for monetization class StoreManager: ObservableObject { @Published var message: String = "" // We will use this property to display the right message to the user @Published var products: [Product] = [] // This will be responsible to store the products fetched that we defined // in App Store Connect // Fetch products from the App Store func fetchProducts() { Task { do { // product_id is the id that you would have defined in App Store Connect. let storeProducts = try await Product.products(for: ["product_id"]) products = storeProducts } catch { message = "Failed to fetch products: \(error.localizedDescription)" } } } // Initiate purchase func purchase() { guard let product = products.first else { // There is a possibility of products not being fetched from App Store Connect. // Pro Tip: From experience, even though we defined the products on App Store Connect, it is possible // that the products are not found post attempting to fetch. So, it is important to handle this case. message = "No product available." return } Task { do { let result = try await product.purchase() switch result { case .success(let verification): switch verification { case .verified: message = "Purchase successful!" case .unverified: message = "Could not verify the purchase." } case .userCancelled: message = "Purchase cancelled." case .pending: message = "Purchase is pending." @unknown default: message = "Unknown result." } } catch { message = "Purchase failed: \(error.localizedDescription)" } } } // Check if the user is eligible for a free trial func checkTrialEligibility() async -> Bool { guard let product = products.first else { return false } do { // So when you define a auto renewable subscriptions, there are usually bond in a group. The group can again be // found in App Store Connect let eligibility = try await product.subscription?.isEligibleForIntroOffer(for groupID: 111111) return eligibility ?? false } catch { message = "Error checking trial eligibility: \(error.localizedDescription)" return false } } }
import SwiftUI import StoreKit struct SubscriptionView: View { @StateObject private var storeManager = StoreManager() @State private var isEligibleForFreeTrial = false var body: some View { VStack { Text("Unlock Premium Features") .font(.title) .padding() Text("Get a 7-day free trial of our premium subscription.") .multilineTextAlignment(.center) .padding() Button(action: { storeManager.purchase() }) { // Based on user status, we can display the text Text(isEligibleForFreeTrial ? "Start Free Trial" : "Start Subscription") .bold() .frame(width: 200, height: 50) .background(Color.blue) .foregroundColor(.white) .cornerRadius(10) } Text(storeManager.message) .padding() } .onAppear { storeManager.fetchProducts() checkTrialEligibility() } } private func checkTrialEligibility() { Task { isEligibleForFreeTrial = await storeManager.checkTrialEligibility() } } }
Apple-k tresna sendoak eskaintzen ditu erabiltzaile-egoera desberdinak probatzeko (adibidez, doako probarako eskubidea edo eza) StoreKit Testing Xcode-n erabiliz:
Joan Fitxategia > Berria > Fitxategia... > StoreKit konfigurazio fitxategia Xcode-n.
Konfiguratu harpidetza-produktuak, proba-aldiak eta hautagarritasun-egoerak barne.
Pro Aholkua : konfigurazio fitxategi berri bat ere sor dezakezu App Store Connect-etik konfigurazio fitxategia sinkronizatzeko eta horrela ez dituzu produktu guztiak konfiguratu behar.
Simulatu eszenatoki desberdinak:
Doako probarako eskubidea:
Doako probako erabiltzaile bat simulatzeko, ziurtatu transakzio-kudeatzailean ez duzula transakziorik.
Transakzio-kudeatzailea ikusteko. Joan Araztu → StoreKit → Kudeatu transakzioak
Doako probarako eskubidea ez:
Doako probarako eskubidea ez duen erabiltzailea simulatzeko. Transakzio-kudeatzailearen harpidetza eskuz gehi dezakezu transakzio-kudeatzailean. Transakzio-kudeatzailearen pantailako gehitu botoia sakatu dezakezu eta, ondoren, gehitu nahi duzun transakzioa hauta dezakezu. Hemen, erabiltzailearen hileroko harpidetza konfiguratzen saiatzen ari naiz. Transakzio hori gehitu eta aplikazioa berriro exekutatu ondoren, probaren hautagarritasuna faltsu gisa markatuta ikusi beharko zenuke.
Pro Aholkua: UUID bat ere sar dezakezu erosketarekin, eremu hau erabiliz erabiltzailearen IDa gordetzeko. Horrela ziurtatu dezakezu zein erabiltzailek egin duen erosketa zure aplikazioan. Informazio hori geroago erabiltzailearen transakzio-historiatik atera daiteke.
Sandbox-en probak aplikazioaren barneko erosketak eta harpidetzak probatzeko aukera ematen dizu App Store ekoizpen-ingurunea imitatzen duen ingurune batean, eta, aldi berean, ertz-kasu pare bat iseka egiteko askatasuna ematen dizu, hala nola erosketak eten, familia partekatzea eta kanpoan egindako erosketak simulatzeko. aplikazioa edo beste gailu batean. Gainera, aukera ematen dizu
Baina ezer baino lehen, hona hemen sandbox probak nola konfiguratu eta nola erabili:
Sortu Sandbox Tester kontu bat:
Hasi saioa Sandbox Tester kontuarekin:
Exekutatu zure aplikazioa Sandbox moduan:
Probatu eszenatoki desberdinak:
Pro Aholkua: Apple kontu batek ezin du harpidetza aktibo anitz izan, beraz, bi erabiltzaile ezberdin ezin dira aplikazioan erosketa bereizirik egin Apple ID bera erabiliz. Ziurtatu zure aplikazioa egiaztatzea erabiltzaile kasu honetarako.
https://developer.apple.com/documentation/storekit
https://developer.apple.com/documentation/xcode/setting-up-storekit-testing-in-xcode/
https://developer.apple.com/app-store-connect/