iOS App In-App Subscription Payment: Complete StoreKit Development Process
Contents
iOS App In-App Subscription Payment: Complete StoreKit Development Process
StoreKit is Apple’s official framework for in-app purchases and subscription payments. The following is the complete development process for implementing in-app subscription payment using StoreKit, suitable for Swift projects.
1. Backend Preparation
- Create App entry in App Store Connect.
- Create new subscription item, configure product ID, pricing, description, etc., and submit for review.
- Wait for subscription item review approval.
2. Project Configuration
- In Xcode project, ensure In-App Purchase capability is enabled (Target → Signing & Capabilities → +Capability → In-App Purchase).
- Ensure Bundle ID matches App Store Connect.
3. Integrate StoreKit
3.1 Import StoreKit
import StoreKit
3.2 Get Product Information
let productIDs: Set<String> = ["com.demoapp.subscription.monthly"]
let request = SKProductsRequest(productIdentifiers: productIDs)
request.delegate = self
request.start()
Implement delegate methods:
extension YourViewController: SKProductsRequestDelegate {
func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
let products = response.products
// Display subscription product information
}
}
3.3 Initiate Purchase
func buy(product: SKProduct) {
let payment = SKPayment(product: product)
SKPaymentQueue.default().add(payment)
}
3.4 Monitor Transaction Queue
class YourViewController: UIViewController, SKPaymentTransactionObserver {
override func viewDidLoad() {
super.viewDidLoad()
SKPaymentQueue.default().add(self)
}
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
for transaction in transactions {
switch transaction.transactionState {
case .purchased, .restored:
// Unlock subscription features
SKPaymentQueue.default().finishTransaction(transaction)
case .failed:
// Handle failure
SKPaymentQueue.default().finishTransaction(transaction)
default:
break
}
}
}
}
3.5 Restore Purchases
SKPaymentQueue.default().restoreCompletedTransactions()
4. Receipt Validation (Recommended)
- Get local receipt, upload to your own server, forward to Apple server for validation to prevent cracking and fraud.
5. Testing Process
- Add sandbox test accounts in App Store Connect.
- Install App on real device, log in with sandbox account, test subscription purchase, restore, and other processes.
6. Launch and Maintenance
- After passing Apple review, users can officially subscribe and pay.
- Regularly monitor subscription status, handle renewal, expiration, and other situations.
Summary
- Backend configuration of subscription items
- Enable In-App Purchase in Xcode
- Use StoreKit to get products, initiate purchases, monitor transactions
- Receipt validation enhances security
- Real device testing with sandbox accounts
- Launch and maintenance
Analogy: Like supermarket checkout, first stock new products (backend configuration), then scan and collect payment (StoreKit purchase), finally verify receipts (receipt validation), ensuring the process is secure and compliant.
If you need detailed code or encounter specific problems, feel free to continue asking!