基本类

描述
InAppProduct已注册到商店的产品。
InAppStore管理内购的主要入口点。
InAppTransaction包含关于外部应用商店中交易的详细信息。
InAppPurchaseBackend与外部商店通信。

InAppProduct

InAppProduct封装了在InAppStore中注册并确认存在的外部商店中的产品。它有一个标识符,与外部商店中产品的标识符相匹配,有一个价格是从外部商店检索的,并且有一个产品类型。

产品类型可以是可消耗可解锁。只要每次交易由应用程序明确完成,即可无限次购买可消耗产品。可解锁类型只能购买一次。

InAppProduct有5个可返回变量pricetitledescription identifierproductType。所有返回QString,除了productType。

ProductType是一个枚举类型,如果它是可消耗的,则返回0;如果是可解锁的,则返回1

enum ProductType
{
   Consumable,
   Unlockable
};

请检查派生类AndroidInAppProduct(适用于Android)和IosInAppProduct(适用于iOS)。

InAppStore

管理内购的主要入口点。它是AndroidInAppProductIosInAppProduct的基类。

InAppStore用于以跨平台方式管理应用程序中的内购。根据编译器,InAppStore使用检查可用的平台。

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 registeredProducts中。

注册产品是异步的,并且最终将找到来自外部商店的产品时,将发出productRegistered()信号。

void InAppStore::registerProduct(InAppProduct *product)
{
   d->registeredProducts[product->identifier()] = product;
   emit productRegistered(product);
}

完成购买

在商店中成功注册项目后,用户可以通过按应用商店页面上的产品之一来购买它们。QML将调用AndroidInAppProduct或IosInAppProduct中的product.purchase()函数,这将在外部商店中打开购买流程。

无论购买成功与否,一旦完成购买,都会将transactionReady信号发送到InAppProductQmlType,通知QML开始完成交易。

恢复购买

在演示中,可解锁的购买将保存在应用的存储中。通过清除存储,用户将丢失可解锁的购买,并且无法再次购买,因为根据外部存储,它已经被拥有。

您可以在应用的商店页面上使用 恢复购买 按钮来恢复您可解锁的购买。恢复购买按钮调用 restorePurchases() 函数,并将检查外部存储中是否已拥有的购买。它发出 transactionRedy() 信号以最终完成和恢复购买。

InAppStore 没有派生类。

InAppTransaction

InAppTransaction 包含关于外部应用商店中交易的信息,通常是通过调用 InAppProduct::purchase() 得到的结果。当用户完成购买流程(例如,通过输入他们的密码确认购买)时,包含该产品的 InAppStore 实例将发出 InAppStore::transactionReady() 信号,其中包含有关交易的数据。

status() 函数提供有关交易是否成功的详细信息。如果成功,则应用应采取适当的行动。当执行必要的操作后,应调用 finalize()。无论交易状态如何,都应调用 finalize() 函数。

检查为安卓的 AndroidInAppTransaction 和为 iOS 的 IosInAppTransaction 设计的派生类。

InAppPurchaseBackend

InAppPurchaseBackend 用于为 AndroidInAppPurchaseBackendIosInAppPurchaseBackend 创建派生类。

© 2024 The Qt Company Ltd。此处包含的文档贡献是各自所有者的版权。此处提供的文档是根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 条款许可的。Qt 和相关标志是 The Qt Company Ltd. 在芬兰和/或世界其他国家的商标。所有其他商标均为各自所有者的财产。