2013-07-17 3 views
0

Пытается внедрить покупку в приложении в моем приложении Android Amazon. Нашел учебникAmazon In app purchase

http://www.techotopia.com/index.php/A_Simple_Amazon_In-App_Purchasing_Example_Application#Creating_the_Example_Application

И вот что я реализовал

Существует деятельность называется PurchaseActivity в моем приложении с кнопкой разблокировки в нем.

Во-первых, я обновил свой манифест и добавил код приемника.

Далее создан класс InAppObserver.java в моем src, который расширяет PurchaseActivity.

Далее, внутри PurchaseActivity добавлены onstart и onresume методы. (Что дает ошибку в соответствии с LogCat)

Добавлен consumable_sku строка в strings.xml

Обновленный OnStart метод с помощью следующего кода:

Set<String>skuList = new HashSet<String>(1); 
skuList.add(getResources().getString(R.string.consumable_sku)); 
PurchasingManager.initiateItemDataRequest(skuList); 

Добавлен ItemDataResponse код в InAppObserver.java класса I создано.

Добавлена ​​функция makePurchase в PurchaseActivity, которая вызывается нажатием кнопки разблокировки.

Окончательно Добавлен метод PurchaseResponse в классе InAppObserver.java.

Однако, мое приложение падает перед началом PurchaseActivity даяния следующей ошибки: java.lang.NoClassDefFoundError на com.xyz.xyz.InAppObserver

Я пытаюсь это в первый раз, извините за плохим английский и длина вопроса.

ответ

0

Я не могу точно сказать, в чем проблема. Я думаю, вам, скорее всего, придется опубликовать больше кода. Тем не менее, вот пара вопросов (ни одна из которых, я думаю, не вызвала проблему, но, возможно, стоит попробовать).

  • Вы говорите, что InAppObserver расширяет PurchaseActivity. Опечатка? Он должен расширять PurchaseObserver или BasePurchasingObserver
  • Вы вызываете itemGetDataRequest сразу в onStart. Лучше последовательность
    • OnStart называет registerObserver
    • (наблюдатель) onSdkAvailable вызовы initiateGetUserIdRequest
    • (наблюдатель) onGetUserIdResponse называет initiatePurchaseUpdatesRequest - вы называете это?
    • (наблюдатель) purchaseUpdatesResponse называет initiateItemDataRequest, если обновление не было уже закуплено

В целом, я не так впечатлен с учебником вы связаны - могу просто использовать документы Amazon ,

+0

Спасибо DrC. Это действительно помогло. Теперь у меня есть еще один вопрос. Как проверить, куплено ли приложение или нет при втором посещении. Какую функцию я использую? – Bhaijaan

+0

Я предполагаю, что вы имеете в виду, как вы определяете, было ли приобретено обновление. Вызов initiatePurchaseUpdatesRequest сообщает вам, была ли она приобретена учетной записью на другом компьютере. Однако, правильно закодированный, он только скажет вам один раз, поэтому вам нужно где-то сохранить эту информацию. Теоретически вы можете просто вызвать initiateUpdatesRequest с начальным смещением каждый раз. Я не уверен, считается ли это приемлемым или имеет другие, плохие, побочные эффекты. Я сохраняю информацию с некоторыми попытками ввода токенов в безопасности. – DrC