ios
storekit 공부하기
코코넛딩
2024. 12. 6. 15:53
Transaction
static var updates: Transaction.Transactions {get}
- 시스템이 앱 외부 또는 다른 장치에서 발생한 트랜잭션을 생성하거나 업데이트 할때마다 트랜잭션을 방출하는 비동기 시퀸스 입니다.
- 앱이 실행 중일 때 트랜잭션 업데이트를 통해 새로운 트랜잭션을 받을 수 있다.
- 이 시퀸스는 앱 외부에서 발생한 트랙잭션을 받습니다.
- 예
- Ask to Buy 트랜잭션 (부모가 자녀의 구매요청을 승인하는 경우)
- 구독 오퍼 코드가 사용되는 경우
- 앱 스토어에서 고객이 구매하는 경우의 트랜잭션
- 예
- 다른 장치에서 앱을 통해 완료한 트랜잭션도 방출됨
- 동일한 장치에서 인앱 구매가 성공적으로 완료되면 StoreKit는 해당 트랜잭션을 Product.PurchaseResult.success(_:) 통해 반환한다.
- 앱이 실행될 때 즉시 트랜잭션 업데이트를 수신하려면 Task를 생성하여 리스터에서 트랜잭션을 순차적으로 처리해야함
- 앱에 미완료된 트랜잭션이 있으면, 업데이트 리스너가 앱 실행 직후에 한 번만 그 트랜잭션을 수신한다.
- 트랜잭션을 수신하기 위한 Task가 없다면 앱은 그 트랜잭션을 놓칠수가 있다.
func finish() async
- 앱스토어에서 콘텐츠를 구매한 후 앱에서 update()로 구매 사실을 감지하여 구매한 콘텐츠를 제공하거나 서비스를 활성화 한 후, 트랜잭션을 완료했다고 앱 스토어에 알리는 메서드 입니다.
- 트랜잭션을 완료하기 위해 호출함
- 온디맨드 리소스(필요할 때 다운로드하는 리소스)의 경우
static var currentEntitlements: Transaction.Transactions { get }
- 인앱 구매와 구독을 한 고객에게 자격을 부여하는 최근 트랜잭션의 시퀸스이다.
- 현재 권한 시퀸스는 고객이 권한을 가지고 있는 각 제품에 대한 최신 거래를 내보낸다.
- 소모 불가능한 앱 내 구매에 대한 거래
- 자동 갱신 구독
- Product.SubscriptionInfo.RenewalState 상태가 subscribed(구독중) 또는 inGrace Period(유예기간 중)인 각 구독에 대해 가장 최근의 트랜잭션이 반환된다.
- 비 갱신 구독
- 종료된 것을 포함하여 각 구독에 대해 가장 최근의 트랜잭션이 반환된다.
- 다음 제품은 현재 자격에 나타나지 않는다.
- App Store에서 환불하거나 취소된 제품
- 소모성 In-App Purchase
- 미 완료된 소모성 상품의 트랜잭션을 확인하려면, Transactin의 unfinished 또는 all 시퀸스를 사용해야한다.
Product
static func products<Identifiers>(for identifiers: Identifiers) async throws -> [Product] where Identifiers : Collection, Identifiers.Element == String
- 앱 스토어에서 프로덕트 데이터를 요청한다.
- identifiers
- App Store Connect에서 이전에 구성한 고유한 인 앱 구매 제품 식별자의 컬렉션입니다.
- StoreKit은 컬렉션의 중복 식별자를 무시합니다.
- 반환 값
- App Store에서 반환된 다양한 제품
- 식별자가 잘못 되었거나 App Store에서 찾을 수 없는 경우 App Store는 반환 값에서 제외한다.
- 시스템 관련 오류를 반환 할 수 있다. StoreKit Error
@MainActor func purchase(options: Set<Product.PurchaseOption> = []) async throws -> Product.PurchaseResult
- 이 메서드는 App Store와 통신하여 구매를 시작하고, 시스템 확인창을 표시하는 역할을 한다.
- 매개변수 : options
- 구매와 관련된 추가 정보를 제공하는 옵션 세트
- 반환 값 : Product.PurchaseResult
- 구매 결과를 나타냄
- 사용 시점
- 사용자가 앱 내에서 구매를 시작하거나 App Store에서 프로모션된 인앱 구매를 선택한 경우 호출합니다.
- 이 메서드는 시스템 확인 창을 띄우며, 사용자는 구매를 확인하거나 취소할 수 있습니다.
- 예외
- Product.PurchaseError
- StoreKitError