스트리밍은 대부분의 브라우저와
Developer 앱에서 사용할 수 있습니다.
-
StoreKit 및 앱 내 구입의 새로운 기능
App Store의 앱 내 구입 시스템을 사용하여 향상된 구입 경험을 만들고 제공하는 방법을 알아보세요. 구독 맞춤 설정 향상을 위한 새로운 StoreKit 뷰 제어기 스타일과 API를 살펴보고, 거래별 정보의 새로운 필드를 소개하고, Xcode의 새로운 테스트 기능을 알아봅니다. StoreKit의 중요한 지원 중단 사항에 대해서도 자세히 알아보세요.
챕터
- 0:00 - Introduction
- 0:36 - Core API enhancements
- 3:12 - Merchandise using SwiftUI
- 15:35 - Test in Xcode
- 21:06 - Update to StoreKit 2
리소스
- Forum: App Store Distribution & Marketing
- In-App Purchase
- Introducing StoreKit 2
- Message
- Original API for In-App Purchase
- Product.SubscriptionInfo.RenewalInfo
- Setting up StoreKit Testing in Xcode
- StoreKit views
- Testing in-app purchases with StoreKit transaction manager in Xcode
- Transaction properties
관련 비디오
WWDC24
WWDC23
WWDC22
WWDC21
WWDC20
-
다운로드Array
-
-
4:26 - Destination Video Shop
import StoreKit import SwiftUI struct DestinationVideoShop: View { var body: some View { SubscriptionStoreView(groupID: Self.subscriptionGroupID) { SubscriptionOptionGroupSet { product in StreamingPassLevel(product) } label: { streamingPassLevel in Text(streamingPassLevel.localizedTitle) } marketingContent: { streamingPassLevel in StreamingPassMarketingContent(level: streamingPassLevel) StreamingPassFeatures(level: streamingPassLevel) } } .subscriptionStoreControlStyle(.compactPicker, placement: .bottomBar) } }
-
9:06 - Subscription Option Groups - Tabs style
SubscriptionStoreView(groupID: Self.subscriptionGroupID) { SubscriptionOptionGroupSet { product in StreamingPassLevel(product) } label: { streamingPassLevel in Text(streamingPassLevel.localizedTitle) } marketingContent: { _ in StreamingPassMarketingContent() } } .subscriptionStoreControlStyle(.compactPicker, placement: .bottomBar) .subscriptionStoreOptionGroupStyle(.tabs)
-
9:20 - Subscription Option Groups - Links style
SubscriptionStoreView(groupID: Self.subscriptionGroupID) { SubscriptionOptionGroupSet { product in StreamingPassLevel(product) } label: { streamingPassLevel in Text(streamingPassLevel.localizedTitle) } marketingContent: { _ in StreamingPassMarketingContent() } } .subscriptionStoreControlStyle(.compactPicker, placement: .bottomBar) .subscriptionStoreOptionGroupStyle(.links)
-
13:41 - Custom control style implementation
import StoreKit import SwiftUI struct BadgedPickerControlStyle: SubscriptionStoreControlStyle { func makeBody(configuration: Configuration) -> some View { SubscriptionPicker(configuration) { pickerOption in HStack(alignment: .top) { VStack(alignment: .leading) { Text(pickerOption.displayName) .font(title2.bold()) Text(priceDisplay(for: pickerOption)) if pickerOption.isFamilyShareable { FamilyShareableBadge() } Text(pickerOption.description) } Spacer() SelectionIndicator(pickerOption.isSelected) } } confirmation: { option in SubscribeButton(option) } } } struct DestinationVideoShop: View { var body: some View { SubscriptionStoreView(groupID: Self.subscriptionGroupID) { SubscriptionPeriodGroupSet { _ in StreamingPassMarketingContent() } } .subscriptionStoreControlStyle(BadgedPickerControlStyle()) } }
-
-
찾고 계신 콘텐츠가 있나요? 위에 주제를 입력하고 원하는 내용을 바로 검색해 보세요.
쿼리를 제출하는 중에 오류가 발생했습니다. 인터넷 연결을 확인하고 다시 시도해 주세요.