Биллинг Android - он говорит, что функция checkBillingSupported() устарела. Что я должен использовать вместо этого?

В документации Android сказано, что этот метод устарел, но я не вижу, что еще можно использовать вместо него.

В принципе, я пытаюсь сделать что-то вроде этого:

if (mBillingService.requestPurchase(issueProductIdPsych, Consts.ITEM_TYPE_INAPP ,  null)) 
{
   // Check what happened? Did the person finish the purchase? did they cance?
   if(mBillingService.checkBillingSupported(Consts.ITEM_TYPE_INAPP))
   {

   }                              

    //BillingHelper.requestPurchase(mContext, "android.test.purchased");
    // android.test.purchased or android.test.canceled or android.test.refunded
}

Каков правильный способ проверки того, чем был конец запроса на покупку?

У меня есть кнопка купить, как это:

        buy.setOnClickListener(new Button.OnClickListener() 
        {  
           public void onClick(View v) 
           {

Но мне не совсем понятно, что нужно делать дальше.

Спасибо!


person Genadinik    schedule 24.07.2012    source источник


Ответы (1)


Хотелось бы проще просто заменить код на нужный, но видимо гугл описывает альтернативный вариант. Вам нужно будет реализовать интерфейс MarketBillingService. Так что это просто небольшая поправка в дизайне. К счастью, они показывают вам, как это сделать.

http://developer.android.com/guide/google/play/billing/billing_integrate.html

Спуститесь в тему, где написано "Создание локальной службы". Подкатегории:

  • Привязка к MarketBillingService
  • Отправка запросов на выставление счетов в MarketBillingService
  • Проверка поддержки биллинга в приложении (CHECK_BILLING_SUPPPORTED)
  • Создание запроса на покупку (REQUEST_PURCHASE)

Перефразируя написанное, я просто опишу это здесь:

В категории: «Проверка поддержки биллинга в приложении (CHECK_BILLING_SUPPPORTED)» они просят вас использовать метод sendBillingRequest(). Это позволяет отправлять пять различных типов запросов на выставление счетов:

  • CHECK_BILLING_SUPPORTED — проверяет, поддерживает ли приложение Google Play выставление счетов в приложении, а также доступную версию API выставления счетов в приложении.
  • REQUEST_PURCHASE — отправляет запрос на покупку товара в приложении.
  • GET_PURCHASE_INFORMATION — извлекает информацию о транзакции для покупки или возврата.
  • CONFIRM_NOTIFICATIONS — подтверждает, что вы получили информацию о транзакции для покупки или возврата средств.
  • RESTORE_TRANSACTIONS — извлекает историю транзакций пользователя для управляемых покупок.

Говорит, что вы должны создать пакет, прежде чем выполнять запрос.

Вот пример того, как выполнить подтверждение:

Bundle request = makeRequestBundle("CONFIRM_NOTIFICATIONS");
request.putStringArray(NOTIFY_IDS, mNotifyIds);
Bundle response = mService.sendBillingRequest(request);

Как только вы получите ответ, проверьте содержимое в пакете, там будет три ключевых элемента: RESPONSE_CODE, PURCHASE_INTENT и REQUEST_ID. Ключ RESPONSE_CODE предоставляет вам статус запроса, а ключ REQUEST_ID предоставляет вам уникальный идентификатор запроса для запроса. Ключ PURCHASE_INTENT предоставляет вам PendingIntent, который вы можете использовать для запуска пользовательского интерфейса оформления заказа.

person sksallaj    schedule 24.07.2012
comment
да, я читал эту документацию, но не уверен, что именно делать. Вы сделали это при создании пакета? В своем примере с подземельями они делают это так, как будто у меня есть код. Когда и как я могу отправить BillingRequest? Спасибо! - person Genadinik; 25.07.2012
comment
Да, пакет используется как запрос и ответ, это делает код намного проще в использовании и управлении. Ответ сообщит вам, был ли запрос успешным. - person sksallaj; 25.07.2012
comment
извините, пришлось отойти от компа. Я до сих пор не совсем уверен, как этот код будет работать с моей настройкой. Какие шаги необходимо выполнить после нажатия кнопки «Купить»? - person Genadinik; 25.07.2012
comment
Я пытался переключиться на предложенный вами дизайн, но немного застрял. Есть шанс, что вы узнаете ответ на мой вопрос здесь: stackoverflow.com/questions/11651557/ - person Genadinik; 25.07.2012
comment
После того, как все настроили, в кнопке купить смотрите Binding to the MarketBillingService. Документ говорит вам создать локальную службу в вашем файле манифеста, привязать ее к MarketBillingService, проверить, подключено ли, отправить запрос на выставление счетов, получить его, подтвердить его и обработать pendingIntent после подтверждения. Существует также рекомендуемый способ тестирования, поскольку вы не можете протестировать его на эмуляторе: developer.android.com/guide/google/play/billing/ - person sksallaj; 25.07.2012
comment
да, теперь я достаточно хорошо понимаю эти шаги на высоком уровне, но проблема в том, что когда я пытаюсь его построить, я вижу несколько подходов, и я продолжаю путаться в том, каким должен быть точный код. Есть ли способ опубликовать еще код того, как он у вас есть? - person Genadinik; 25.07.2012
comment
Вы ставите запрос Bundles и ответ при нажатии на кнопку. Часть mService интерфейса MarketBillingService, которая должна быть частью вашего пакета, если вы все правильно привязали. Вы устанавливаете его, когда используете add onServiceConnected, который неявно вызывается системой Android при подключении к MarketBillingService (после того, как ваша программа завершает выполнение строки запроса Bundle). mService устанавливается во время выполнения. Я предполагаю, что это асинхронный обратный вызов, с чем у вас возникли проблемы с пониманием. - person sksallaj; 26.07.2012
comment
Дело в том, что вам не нужно воссоздавать услугу (изобретать велосипед), когда она уже предоставлена ​​вам. Он включает в себя: mService и onServiceConnected (для которых вы заполняете определение). Настоящая проблема - это часть тестирования, поскольку ваш эмулятор не будет подключен к рынку, и тестирование асинхронных обратных вызовов. Таким образом, вы должны тестировать ПОСЛЕ того, как вы закончите кодировать все, что может быть проблемой. - person sksallaj; 26.07.2012