Spec-Zone.ru › Qt 5.11

Класс 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)
  • 34 открытых функции унаследованы от QObject

Сигналы

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

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

  • 1 свойство унаследовано от QObject
  • 1 открытый слот унаследован от QObject
  • 1 открытая переменная унаследована от QObject
  • 10 статические открытые члены унаследованы от QObject
  • 9 защищённые функции унаследованы от QObject
  • 2 защищённые переменные унаследованы от 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 поддерживают восстановление разблокируемых продуктов.

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

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)

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

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

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

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

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

Примечание: Эта функция может вызываться через систему метаобъектов и из 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)

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

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

Spec-Zone.ru

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