Android In-app Billing, как подтвердить, что продукт был загружен - PullRequest
3 голосов
/ 16 декабря 2011

Я пытаюсь использовать пример Dungeons в своем приложении.В руководстве по разработке Android написано, что я должен подтвердить доставку продукта пользователю, отправляющему CONFIRM_NOTIFICATIONS на рынок, но я не вижу его в качестве примера или я не прав?Должен ли я подтвердить загрузку, и мое приложение должно помнить, если контент был успешно доставлен?

Где лучше всего запускать загрузку, при работе с AsyncTask, в классе ResponseHandler или по-другому?

Ответы [ 2 ]

1 голос
/ 16 декабря 2011

Это то, что мне тоже интересно сегодня.Из того, что я вижу, в примере Dungeons, когда вызывается BillingService#purchaseStateChanged, он автоматически подтверждает все уведомления после проверки покупок.

См. Строки 506-509 в примере BillingService.java:

if (!notifyList.isEmpty()) {
    String[] notifyIds = notifyList.toArray(new String[notifyList.size()]);
    confirmNotifications(startId, notifyIds);
}

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

Я планирую удалить этот код и сделать BillingService#confirmNotificationspublic, так что я могу вызвать его из моей PurchaseObserver реализации, когда я доставлю свой контент.

Я обновлю результаты, но, похоже, это хорошая отправная точка.

0 голосов
/ 16 декабря 2011

Я надеюсь, что следующий код поможет вам.

@Override
    public void onPurchaseStateChange(PurchaseState purchaseState, String itemId,
            int quantity, long purchaseTime, String developerPayload) {
        if (Consts.DEBUG) {
            Log.i(TAG, "onPurchaseStateChange() itemId: " + itemId + " " + purchaseState);
        }

        if (developerPayload == null) {
            logProductActivity(itemId, purchaseState.toString());
        } else {
            logProductActivity(itemId, purchaseState + "\n\t" + developerPayload);
        }

        if (purchaseState == PurchaseState.PURCHASED) {
            mOwnedItems.add(itemId);

            Log.v("log_tag", "Item Purchased");

        }
        mCatalogAdapter.setOwnedItems(mOwnedItems);
        mOwnedItemsCursor.requery();
    }

В журнале, если вы получили «Купленный предмет», это означает, что вы успешно загрузили этот предмет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...