기본 클래스
클래스
클래스 | 설명 |
---|---|
인앱제품 | 스토어에 등록된 제품입니다. |
인앱스토어 | 인앱 구매를 관리하기 위한 주요 진입점입니다. |
인앱 거래 | 외부 앱스토어의 거래에 대한 정보를 포함합니다. |
인앱 구매 백엔드 | 외부 스토어와 통신합니다. |
인앱프로덕트
인앱스토어에 등록되어 존재가 확인된 후 외부 스토어에 제품을 캡슐화합니다. 외부 스토어에 있는 제품의 식별자와 일치하는 식별자, 외부 스토어에서 검색된 가격, 제품 유형이 있습니다.
제품 유형은 Consumable
또는 Unlockable
입니다. 소모성 제품은 애플리케이션에서 각 거래가 명시적으로 완료되는 한 여러 번 구매할 수 있습니다. 잠금 해제 가능한 유형은 한 번만 구매할 수 있습니다.
인앱상품에는 price
, title
, description
identifier
, productType
등 5개의 반환 가능한 변수가 있습니다. 제품 유형을 제외하고 모두 QString 를 반환합니다.
제품 유형은 열거형이며 소모품인 경우 0
, 잠금 해제 가능한 경우 1
을 반환합니다.
enum ProductType { Consumable, Unlockable };
안드로이드용 AndroidInAppProduct
및 iOS용 IosInAppProduct
파생 클래스를 확인하세요.
인앱스토어
인앱 구매를 관리하기 위한 주요 진입점입니다. AndroidInAppProduct
및 IosInAppProduct
의 베이스 클래스입니다.
InAppStore는 크로스 플랫폼 방식으로 애플리케이션의 인앱 구매를 관리하는 데 사용됩니다. 컴파일러에 따라 InAppStore는 Macros
를 사용하여 사용 가능한 플랫폼을 확인합니다.
void InAppStore::setupBackend() { #ifdef Q_OS_ANDROID d->backend = new AndroidInAppPurchaseBackend; #endif #ifdef Q_OS_IOS d->backend = new IosInAppPurchaseBackend; #endif d->backend->setStore(this); ...
스토어 초기화
데모의 스토어 페이지로 이동하면 InAppStore는 setupBackend() 함수에서 모든 신호를 관련 슬롯에 연결합니다. 그런 다음 registerProduct() 함수를 사용하여 외부 스토어에 등록된 각 제품의 제품 ID와 제품 유형을 QHash 등록된제품에 등록합니다.
제품 등록은 비동기식이며, 외부 스토어에서 제품이 발견되면 어느 시점에 productRegistered() 신호를 생성합니다.
void InAppStore::registerProduct(InAppProduct *product) { d->registeredProducts[product->identifier()] = product; emit productRegistered(product); }
구매 완료
스토어에 상품이 성공적으로 등록되면 사용자는 앱 스토어 페이지에서 해당 상품을 눌러 구매할 수 있습니다. QML은 안드로이드인앱프로덕트 또는 IosInAppProduct
에서 product.purchase() 함수를 호출하여 외부 스토어의 구매 플로우를 엽니다.
구매 성공 여부와 관계없이 구매가 완료되면 트랜잭션이 완료되었음을 알리기 위해 트랜잭션Redy 신호가 InAppProductQmlType
로 전송되어 QML이 트랜잭션을 마무리하도록 알립니다.
구매 복원
데모에서는 잠금 해제된 구매가 앱 스토리지에 저장됩니다. 저장소를 지우면 사용자는 잠금 해제 가능한 구매를 잃게 되며 외부 스토어에 따라 이미 소유하고 있으므로 다시 구매할 수 없습니다.
앱 스토어 페이지의 restore purchases
버튼을 사용하여 잠금 해제 가능한 구매를 복원할 수 있습니다. 구매 복원 버튼은 restorePurchases() 함수를 호출하고 외부 스토어에서 이미 소유한 구매가 있는지 확인합니다. 이 함수는 구매를 완료하고 복원하기 위해 transactionRedy() 신호를 전송합니다.
인앱스토어에는 파생 클래스가 없습니다.
인앱트랜잭션
InAppTransaction은 외부 앱스토어의 트랜잭션에 대한 정보를 포함하며, 일반적으로 InAppProduct::purchase()를 호출한 결과로 제공됩니다. 사용자가 구매 흐름을 완료하면(예: 비밀번호 입력 등 구매 확인), 제품이 포함된 InAppStore 인스턴스는 거래에 대한 데이터와 함께 InAppStore::transactionReady() 신호를 발산합니다.
status() 함수는 거래가 성공했는지 여부에 대한 정보를 제공합니다. 성공했다면 애플리케이션은 적절한 조치를 취해야 합니다. 필요한 조치가 수행되면 finalize()를 호출해야 합니다. finalize() 함수는 트랜잭션의 상태와 관계없이 호출되어야 합니다.
안드로이드의 경우 AndroidInAppTransaction
, iOS의 경우 IosInAppTransaction
에서 파생 클래스를 확인하세요.
InAppPurchaseBackend
InAppPurchaseBackend
는 AndroidInAppPurchaseBackend
와 IosInAppPurchaseBackend
에 대한 파생 클래스를 생성하는 데 사용됩니다.
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.