-
Apple 앱 내 구입의 새로운 기능
12개월 약정 월간 구독으로 더 경제적인 구독 결제 옵션을 제공하고 장기적인 약정을 확보하는 방법을 알아보세요. App Store Connect, 다양한 StoreKit API, Xcode 테스트 등을 사용하여 이 새로운 결제 옵션을 구성하고 테스트하는 방법을 살펴보세요. 또한 특가 코드 사용 API 관련 개선 사항과 앱 심사 제출 경험 관련 기능 향상에 대해 알아보세요.
챕터
- 0:01 - Introduction
- 0:51 - Overview of monthly subscriptions with a 12-month commitment
- 1:42 - Set up in App Store Connect
- 2:28 - Merchandise with StoreKit
- 6:55 - Monitor subscriptions with App Store Server APIs
- 8:50 - Bundles and Suites
- 9:26 - Offer code redemption
- 10:35 - Enhanced submission experience
- 12:38 - Next steps
리소스
- In-App Purchase types
- Managing the life cycle of monthly subscriptions with a 12-month commitment
- Supporting monthly subscriptions with a 12-month commitment
- App Store Server Notifications V2
- Supporting offer codes in your app
- Implementing a store in your app using the StoreKit API
관련 비디오
WWDC26
WWDC24
WWDC23
WWDC22
-
비디오 검색…
-
-
3:29 - Merchandise pricing terms with StoreKit views
// Merchandise pricing terms with StoreKit views import StoreKit import SwiftUI struct SubscriptionStore: View { var body: some View { SubscriptionStoreView(groupID: "3F19ED53") { // Custom marketing content } .preferredSubscriptionPricingTerms {_, subscriptionInfo in subscriptionInfo.pricingTerms.first { $0.billingPlanType == .monthly } } } } -
4:02 - Get subscription pricing terms and make a purchase
// Get subscription pricing terms and make a purchase import StoreKit var product: Product? // Fetch and assign product // Get the monthly billing plan's pricing terms for merchandising let pricingTerms = product?.subscription?.pricingTerms .first(where: {$0.billingPlanType == .monthly }) if let pricingTerms { let monthlyPrice = pricingTerms.billingDisplayPrice let totalCommitmentPrice = pricingTerms.commitmentInfo.price // Display both monthly and total commitment price to the customer } let result = try? await product?.purchase(options: [.billingPlanType(.monthly)]) switch result { // Verify the transaction, give the customer access to // the purchased content, and then finish the transaction } -
5:05 - Sheet to manage subscriptions by subscriptionGroupID
// Sheet to manage subscriptions by subscriptionGroupID import SwiftUI import StoreKit struct ManageSubscriptionsButton: View { let subscriptionGroupID: String @State var presentingManageSubscriptionsSheet: Bool = false var body: some View { Button("Manage Subscriptions") { presentingManageSubscriptionsSheet = true } .manageSubscriptionsSheet( isPresented: $presentingManageSubscriptionsSheet, subscriptionGroupID: subscriptionGroupID ) } } -
7:45 - JWSTransaction (decoded) for a monthly subscription with a 12-month commitment
// JWSTransaction (decoded) for a monthly subscription with a 12-month commitment { // … "expiresDate": 1783503660000, // for this billing period "price": 10990, // for this billing period "productId": "plus.pro.annual", "purchaseDate": 1780911660000, "type": "Auto-Renewable Subscription", "billingPlanType": "MONTHLY", "commitmentInfo": { "billingPeriodNumber": 1, "totalBillingPeriods": 12, "commitmentExpiresDate": 1812447660000, "commitmentPrice": 131880, } } -
7:59 - JWSRenewalInfo (decoded) for a monthly subscription with a 12-month commitment
// JWSRenewalInfo (decoded) for a monthly subscription with a 12-month commitment { // … "renewalBillingPlanType": "MONTHLY", "commitmentInfo": { "commitmentAutoRenewProductId": “plus.standard.annual”, "commitmentAutoRenewStatus": 0, "commitmentRenewalDate": 1812447660000, "commitmentRenewalPrice": 10990, "commitmentRenewalBillingPlanType": "BILLED_UPFRONT" } } -
9:58 - Sheet to redeem an offer code
// Sheet to redeem an offer code struct OfferCodeRedemption: View { @State var presentingOfferCodeSheet: Bool = false var body: some View { Button("Redeem Offer Code") { presentingOfferCodeSheet = true } .offerCodeRedemption(options: [], isPresented: $presentingOfferCodeSheet) {result in switch result { case .success(let verificationResult): switch verificationResult { // Verify the transaction, give the customer access to // the purchased content, and then finish the transaction } case .failure(let error): // Handle error } } } }
-
-
- 0:01 - Introduction
Learn how to merchandise products and grow your business with expanded subscription pricing options, updates to the offer code redemption API, and an enhanced App Store Connect submission experience.
- 0:51 - Overview of monthly subscriptions with a 12-month commitment
Monthly subscriptions with a 12-month commitment is a new pricing option that lets customers pay monthly for an annual subscription; can be added to new or existing one-year subscriptions in App Store Connect to reach a wider customer base.
- 1:42 - Set up in App Store Connect
Configure monthly subscriptions with a 12-month commitment in App Store Connect. Set up pricing, offers, and availability.
- 2:28 - Merchandise with StoreKit
Learn how SKDemo merchandises monthly subscriptions with a 12-month commitment using StoreKit and learn how to test with StoreKit Testing in Xcode.
- 6:55 - Monitor subscriptions with App Store Server APIs
New fields in App Store Server APIs to manage the subscription lifecycle of monthly subscriptions with a 12-month commitment.
- 8:50 - Bundles and Suites
Offering subscription Bundles and Suites is another way to provide customers with more value in their subscriptions across apps.
- 9:26 - Offer code redemption
The offer code redemption API is extended to take in a set of RedeemOption values and returns a VerificationResult.
- 10:35 - Enhanced submission experience
When you’re ready to submit an app to the App Store, you can utilize our enhanced submission experience for In-App Purchases in App Store Connect.
- 12:38 - Next steps
Utilize the new features; adopt the expanded subscription pricing, update offer code redemption call sites, test in Xcode 27 and sandbox, and submit through the enhanced App Review experience.