В этой теме описывается, как обнаруживать и предоставлять внутриигровые продукты в вашей игре после того, как игроки приобретут их за баллы Play Points в приложении Google Play.
Как только пользователи обменяют свои баллы Play Points на внутриигровой продукт в приложении Google Play, эти товары должны быть немедленно добавлены в вашу игру. Ниже показано, как пользователь приобретает товары за баллы Play Points.
1. Нажмите «Игровые баллы» . | 1. Нажмите вкладку «Использовать» , чтобы просмотреть элементы. | 2. Выберите товар и нажмите «Использовать баллы», чтобы завершить покупку. | 3. Получите товар. |
![]() | ![]() | ![]() | ![]() |
В этом примере игра не запущена, пока продукт приобретён. Пользователи также могут обменивать баллы Play Points на продукты, даже если игра не установлена на их устройстве. В связи с этим необходимо разработать игру так, чтобы она поддерживала доставку внутриигровых предметов из-за пределов игрового магазина.
Прежде чем начать
Прежде чем обнаружить и предоставить продукт внутри приложения, необходимо создать продукт и рекламные акции Play Points .
Требования к доставке
При предоставлении внутриигровых продуктов в вашей игре с использованием акции Play Points вы должны соблюдать требования, изложенные в этом разделе.
Сроки доставки
Когда игрок обменивает игровые баллы на внутриигровой товар, вы должны немедленно доставить его, не требуя от него перезапуска игры. В случаях, когда игровой контент необходимо завершить заранее, например, пройти обучение, товар должен быть доставлен сразу после этого.
Сообщение о доставке
Когда пользователь возвращается в игру после покупки внутриигрового товара вне её, вы должны отобразить подтверждение того, что товар был успешно предоставлен в игре. Это сообщение должно появляться в виде всплывающего диалогового окна или внутриигрового сообщения. Пользователям не должно требоваться никаких дополнительных действий для получения товара.
Вот требуемый формат сообщения:
Явное сообщение о том, что товар получен.
Четко называйте название товара и упоминайте «Play Points», чтобы пользователи могли отличить его от другого получаемого ими контента.
Наименование товара также должно включать правильное наименование товара, если имеются аналогичные товары с несколькими наименованиями.
Всплывающее диалоговое окно, сообщение или внутриигровое уведомление должно быть видно пользователю до тех пор, пока он не нажмёт кнопку подтверждения, например, «Продолжить» или «ОК» . Кнопки отмены быть не должно, поскольку это сообщение предназначено только для уведомления пользователей о получении предмета в игре. Если кнопки подтверждения нет, сообщение должно быть видно пользователям не менее 3 секунд, прежде чем исчезнуть, чтобы они знали, что получили предмет.
Вот пример сообщения:
«Предмет получен! Вы только что получили 100 самоцветов с игровыми баллами. Продолжить».
Пользователи должны увидеть анимацию или визуальное подтверждение, отображающее увеличение баланса игровой валюты. Если предмет является предметом длительного пользования или расходуемым внутриигровым предметом, пользователи должны быть направлены туда, где он был разблокирован или доступен в игре.
Обнаружение предметов, полученных вне игры
Если ваша игра использует библиотеку Google Play Billing Library , внесите следующие изменения, чтобы обнаружить внутриигровые продукты, полученные вне игры.
В обратном вызове
onResume()
вашей игры вызовите методqueryPurchases()
, чтобы получить список предметов, чтобы вы могли определить, какие из них не подтверждены.Если в вашей игре есть сервер, мы настоятельно рекомендуем вам подтвердить покупку с вашего сервера, используя API подписок и покупок внутри приложения .
Если имеются приобретенные, но неподтвержденные товары, подтвердите покупку с помощью
consumeAsync()
для расходуемых товаров или с помощьюacknowledgePurchase()
для нерасходуемых товаров.Предоставить право на купленный предмет внутри игры.
Обнаружение элементов, полученных в режиме разделенного экрана
Если ваша игра поддерживает многооконный режим , пользователи смогут использовать баллы Play Points и получать предметы, одновременно запуская приложение Play Store и вашу игру. На этом снимке экрана показан пример:
Чтобы реализовать этот сценарий с помощью Google Play Billing Library, выполните следующие действия:
Google Play вызывает метод
onPurchasesUpdated()
, чтобы уведомить игру о наличии нового ожидающего предмета.Если в вашей игре есть сервер, мы настоятельно рекомендуем вам подтвердить покупку с вашего сервера, используя API подписок и покупок внутри приложения .
Подтвердите покупку с помощью
consumeAsync()
для расходных товаров или с помощьюacknowledgePurchase()
для нерасходных товаров.Предоставить право на купленный предмет внутри игры.
Отобразить подтверждение доставки
Когда пользователи используют баллы Play Points и получают предмет для обмена, они ожидают, что игра покажет внутриигровое сообщение или какое-либо уведомление, чтобы сообщить им, что игра корректно получила и обработала предмет. Вот несколько вариантов подтверждения доставки:
Показывать всплывающее окно в игре.
Отправьте сообщение в игровое окно сообщений и четко укажите, что в нем есть новое сообщение.
Используйте уведомление ОС.
Игра может находиться в любом состоянии на момент получения акционного товара, в том числе не установленной на устройстве. Вы должны распознавать акционные товары независимо от состояния игры на момент получения товара. Однако существуют некоторые исключения, когда может быть приемлемо не уведомлять пользователя о получении товара сразу. Например:
Во время игрового действия, когда отображение сообщения может отвлекать пользователя. В этом случае необходимо уведомить пользователя после завершения действия.
Во время кат-сцен, где отображение сообщения может отвлекать пользователя. В этом случае необходимо уведомить пользователя после окончания кат-сцены.
Во время начального обучения и настройки пользователя в игре. Мы рекомендуем сообщать новым пользователям о награде сразу после запуска игры или во время настройки. Однако допустимо дождаться выхода основной игровой последовательности, чтобы уведомить пользователя.
Если в вашем приложении есть несколько персонажей или учетных записей, к которым может быть применен элемент, мы рекомендуем вам предложить пользователю выбрать, к какой учетной записи он получит рекламные предметы.
Учитывайте пожелания пользователей, решая, когда и как уведомлять их о промоакциях. Если пользователь не получит уведомление немедленно, он может растеряться, прекратить игру, обратиться в службу поддержки или пожаловаться в социальных сетях.
Обновления для определенных игровых движков
Вот некоторые соображения, которые следует учитывать при выборе конкретных игровых движков:
Если ваша игра создана на Unity, мы рекомендуем вам проверить, поддерживает ли используемая вами реализация IAP акции Play Points.
Если ваша игра создана с использованием Cocos2d-x или Unreal Engine (C/C++), вам, скорее всего, потребуется написать код JNI, который вызывает API Java из вашего кода C/C++.
Лучшие практики на стороне сервера
В этом разделе содержатся рекомендации по использованию серверной части для акций Play Points:
Если вы вызываете
Purchases.products: get
на своем сервере, проверьте, нужно ли вам обрабатывать предметы обмена Play Rewards и другие внутриигровые продукты отдельно на основе значенийproductId
.Если вы используете
Inappproducts: list
на своем сервере, проверьте, нужно ли вам отделять предметы обмена Play Rewards от других продуктов внутри приложения по значениямproductId
.Ознакомьтесь со следующими рекомендациями, чтобы проверить, нужно ли вносить дополнительные изменения:
- Ссылка:
- Реализовать проверку подписи на стороне сервера.
- Убедитесь, что значения
purchaseToken
иorderId
уникальны и не использовались ранее.
Поиск неисправностей
В этом разделе содержатся рекомендации по сценариям, которые могут привести к обращениям клиентов.
Несколько учетных записей пользователей
Если у пользователя на устройстве несколько аккаунтов Google, и он использует баллы Play Points не в том аккаунте, Google не сможет перенести товары на другие аккаунты. Аналогично, ваше приложение не сможет перенести товар, вызвав метод getPurchases()
. В этом случае рассмотрите возможность вручную предоставить пользователю товары из приложения, используя службу поддержки клиентов.
Задержанные или отсутствующие предметы
Если игроки столкнулись с задержкой получения или отсутствием наград, см. руководство по устранению неполадок с покупками внутри приложения в справочной документации Google Play.