Spec-Zone.ru › Qt 5.12

Класс QInAppStore

Основная точка входа для управления покупками в приложении. Подробнее...

Заголовок: #include <QInAppStore>
Наследует: QObject
  • Список всех членов, включая унаследованные
  • Устаревшие члены

Открытые функции

QInAppStore(QObject *parent = nullptr)
virtual ~QInAppStore()
void registerProduct(QInAppProduct::ProductType productType, const QString &identifier)
QInAppProduct * registeredProduct(const QString &identifier) const
void restorePurchases()
void setPlatformProperty(const QString &propertyName, const QString &value)
  • 31 открытая функция унаследованная от QObject

Сигналы

void productRegistered(QInAppProduct *product)
void productUnknown(QInAppProduct::ProductType productType, const QString &identifier)
void transactionReady(QInAppTransaction *transaction)
  • 2 сигнала унаследованных от QObject

Статические открытые члены

const QMetaObject staticMetaObject
  • 9 статических открытых членов унаследованных от QObject

Дополнительные унаследованные члены

  • 1 свойство унаследованное от QObject
  • 1 открытый слот унаследованный от QObject
  • 9 защищённых функций унаследованных от QObject

Подробное описание

Основная точка входа для управления покупками в приложении.

QInAppStore используется для управления покупками в приложении кроссплатформенно.

Использование QInAppStore

В целом, есть два шага для завершения покупки в приложении с помощью API:

Инициализация магазина

При запуске приложения подключите все сигналы в QInAppStore к соответствующим слотам в вашем собственном QObject. Затем используйте функцию registerProduct(), чтобы зарегистрировать идентификатор каждого продукта, который вы ожидаете найти в внешнем магазине, а также его тип.

Регистрация продукта асинхронная и в какой-то момент генерирует один из двух сигналов: 1. productRegistered() если продукт был найден во внешнем магазине с соответствующим типом. 2. productUnknown() если продукт не был найден во внешнем магазине с указанным типом.

Кроме того, может быть послан сигнал transactionReady() для любой существующей транзакции, которая еще не завершена. В этом случае вы должны проверить, была ли транзакция зарегистрирована ранее. Если нет, зарегистрируйте ее сразу. Наконец, вызовите QInAppTransaction::finalize() для транзакции.

Завершение покупки

После успешной регистрации товаров в магазине вы можете их приобрести. Получите предварительно зарегистрированный QInAppProduct с помощью registeredProduct() и вызовите QInAppProduct::purchase(). Этот вызов также асинхронный.

В какой-то момент позже будет послан сигнал transactionReady() для покупки. Проверьте QInAppTransaction::status(), чтобы увидеть, была ли покупка успешно завершена. Если это так, то вы должны сохранить информацию о покупке безопасным способом, чтобы приложение могло восстановить ее позже.

Когда закончите, вызовите QInAppTransaction::finalize(), независимо от ее состояния. Транзакции, которые не завершены, будут повторно генерированы в следующий раз, когда ваше приложение вызовет registerProduct() для того же продукта.

Примечание: Обратите внимание, что QInAppStore не сохраняет для вас состояние приобретения товаров в магазине. Приложение должно сохранить эту информацию безопасным способом после получения сигнала transactionReady(), прежде чем вызывать QInAppTransaction::finalize().

Типы покупок

Есть два типа покупок, поддерживаемые QInAppStore: QInAppProduct::Consumable и QInAppProduct::Unlockable. Первый будет использован, когда транзакция завершится, и вызов QInAppTransaction::finalize() будет выполнен, что означает, что его можно купить снова любое количество раз. Разблокируемые предметы можно приобрести только один раз.

Потребляемые продукты временные и могут быть приобретены многократно. Примерами могут быть однодневный билет на автобус или волшебный меч в компьютерной игре. Обратите внимание, что при многократной покупке одного и того же продукта вы должны вызвать QInAppTransaction::finalize() для каждой транзакции, прежде чем вы сможете снова приобрести тот же продукт.

Разблокируемые продукты — это продукты, которые пользователь покупает один раз, и покупка этих элементов будет постоянной. Обычно они могут использоваться для разблокировки контента или функциональности в приложении.

Восстановление покупок

Если в вашем приложении есть разблокируемые продукты и вы не сохраняете состояние покупки этих продуктов таким образом, что позволяет восстановить их при повторной установке приложения, вы должны предоставить пользователю способ вручную восстановить покупки.

Вызовите функцию restorePurchases(), чтобы начать этот процесс. В зависимости от поддержки удалённого магазина, вы в какой-то момент получите transactionReady() для каждого разблокируемого элемента, который был ранее приобретён текущим пользователем.

Сохраните состояние покупки каждого продукта и вызовите QInAppTransaction::finalize() так же, как и для обычной покупки.

Поскольку вызов restorePurchases() может на некоторых платформах заставить пользователя ввести пароль, его обычно следует вызывать в ответ на ввод пользователя. Например, приложения могут иметь кнопку в пользовательском интерфейсе, которая будет вызывать restorePurchases(), и которую пользователи могут нажать вручную, если они переустановили приложение (или установили его на новое устройство) и им нужно разблокировать функции, за которые они ранее заплатили.

Примечание: Это зависит от поддержки этой функциональности в удаленном магазине. Если удаленный магазин не сохраняет состояние покупки разблокируемых продуктов за вас, вызов не даст сигналов transactionReady(), как если бы продукты не были приобретены. Как Android, так и OS X/iOS бэкэнды поддерживают восстановление разблокируемых продуктов.

Документация по функциям-членам

[virtual] QInAppStore::QInAppStore(QObject *parent = nullptr)

Создаёт QInAppStore с заданным parent.

[virtual] QInAppStore::~QInAppStore()

Удаляет QInAppStore.

[signal] void QInAppStore::productRegistered(QInAppProduct *product)

Этот сигнал генерируется, когда информация о product была собрана из удалённого магазина. Он генерируется в ответ на вызов registerProduct() для того же продукта.

См. также productUnknown().

[signal] void QInAppStore::productUnknown(QInAppProduct::ProductType productType, const QString &identifier)

Этот сигнал генерируется, когда продукт с именем identifier был зарегистрирован с помощью registerProduct() и соответствующая информация не могла быть предоставлена удалённым магазином. productType соответствует типу продукта, который изначально был передан в registerProduct().

См. также productRegistered().

void QInAppStore::registerProduct(QInAppProduct::ProductType productType, const QString &identifier)

Регистрирует продукт, идентифицированный по идентификатору и с заданным типом продукта. Идентификатор должен совпадать с идентификатором продукта в удалённом магазине. Если удалённый магазин различает потребляемые и разблокируемые продукты, то тип продукта также должен соответствовать этому.

Вызов этой функции асинхронно генерирует либо сигнал productRegistered(), либо сигнал productUnknown(). Также может быть сгенерирован сигнал transactionReady(), если для продукта имеется ожидающая транзакция, которая ещё не завершена.

Примечание: Эту функцию можно вызвать через систему метаобъектов и из QML. См. Q_INVOKABLE.

QInAppProduct *QInAppStore::registeredProduct(const QString &identifier) const

Возвращает ранее зарегистрированный продукт, уникально определяемый по идентификатору.

Примечание: Эту функцию можно вызвать через систему метаобъектов и из QML. См. Q_INVOKABLE.

void QInAppStore::restorePurchases()

Запрашивает существующие покупки разблокируемых элементов и генерирует сигнал transactionReady() для каждого разблокируемого продукта, который удалённый магазин подтверждает как ранее приобретённый текущим пользователем.

Обычно эта функция используется для восстановления разблокируемых продуктов, когда приложение переустановлено и потеряло сохранённые состояния покупок.

Примечание: Вызов этой функции может запросить пароль пользователя на некоторых платформах.

Примечание: Эту функцию можно вызвать через систему метаобъектов и из QML. См. Q_INVOKABLE.

void QInAppStore::setPlatformProperty(const QString &propertyName, const QString &value)

Устанавливает платформенно-специфическое свойство, заданное propertyName, в значение value. Это может быть использовано для передачи информации в реализацию платформы. Свойства будут проигнорированы на других платформах.

В настоящее время поддерживается только платформное свойство "AndroidPublicKey", используемое Android-бекендом для проверки покупок. Если оно не установлено, покупки будут приняты без проверки. (Вы также можете выполнить проверку вручную, получив подпись из объекта QInAppTransaction для покупки). Для получения дополнительной информации см. документацию Android по безопасности платежей.

Примечание: Эту функцию можно вызвать через систему метаобъектов и из QML. См. Q_INVOKABLE.

[signal] void QInAppStore::transactionReady(QInAppTransaction *transaction)

Этот сигнал испускается всякий раз, когда имеется транзакция, которая требует завершения. Он испускается либо при запросе покупки продукта, либо когда была вызвана функция restorePurchases() и продукт был ранее куплен, либо когда функция registerProduct() была вызвана для продукта и для него была ожидающая транзакция, которая ещё не была завершена.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qinappstore.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API