2013-04-29 2 views
0

Я добавляю iab к моему приложению в эти дни, но после прочтения всех документов в Google и выполнения некоторых тестов у меня есть сомнения. Когда я должен начать сервис? Хорошо ли это сделать при инициализации приложения? Должен ли я запускать систему каждый раз, когда пользователь хочет купить продукт?О Включение времени инициализации биллинга

Как вы справляетесь с этим?

Cheers.

+1

Не знаете, что вы подразумеваете под «инициализацией», вы имеете в виду «привязать к сервису»? Я нахожу IAB V3 гораздо более отзывчивым, чем LVL, но я предполагаю, что это связано с внутренним кэшированием IAB. Лучше всего привязываться к сервису только тогда, когда вам это нужно, чтобы Android мог эффективно управлять ресурсами. –

+0

Да, извините, я хотел сказать, когда нужно привязываться к сервису. О вашем ответе, вы имеете в виду, что я должен связывать/развязывать каждый раз, когда мне нужно, и заканчивать работу с системой IAB?Извините, если это все кажется глупым вопросом, но я думал, что делать больше, чем один bind/unbind для обслуживания, не будет хорошим вариантом. – Notbad

+0

Я думал, что пришло время предоставить больше информации; см. мой ответ. Добавит некоторые ссылки сейчас. –

ответ

2

Хорошо, так что пришло время для ароматного ответа, я думаю.

  • Вы связываете/отсоединяете службу IAB, когда вам нужно выполнить транзакцию или получить информацию/завершены. Не нужно беспокоиться о производительности там, потому что это локальная служба, которая не обязательно подключается к серверам Google при привязке к ней (только исключение: покупка, но это займет какое-то время); следует другая стратегия, чтобы решить, когда выходить в Интернет.
  • Это хорошая идея, чтобы синхронизировать внутреннюю идею вашего приложения о том, что пользователь владеет идеей IAB, как справедливо говорит tjPark. Будет ли это при запуске вашего приложения или только после того, как пользователь сделает несколько вариантов, зависит от вашего приложения. Если вам нужно знать, для вашего экрана заставки какие элементы IAB принадлежит пользователю, сделайте это в своем заставке. Если это становится актуальным позже, имеет смысл позже запрашивать службу IAB.
  • Вы также должны тщательно подумать о стратегии потребления, которая соответствует вашим потребностям, если ваши предметы IAB могут быть использованы.
  • Всегда помните, что IAB V3 uses caching extensively, поэтому даже синхронизация вашего приложения с услугой IAB не обязательно даст вам самую последнюю информацию. Например. когда пользователь покупает продукт на устройстве на устройстве 1 и хочет использовать его на устройстве 2, будет задержка до тех пор, пока он не появится. Если вы отмените транзакцию в Google Checkout/Wallet и устройство отключено, вы также не будете знать сразу.
  • Don't use Google example code without refining it to achieve product maturity.
  • Знайте, что ответы службы IAB могут подвергаться повторным атакам, потому что вы не можете предоставить запрос без ответа.
  • Знайте, что если у вас нет server-side validation, то весь ваш код IAB может быть заменен на фиктивный код, который просто возвращает положительные ответы.
+0

Спасибо за четкий ответ. О последних двух очках они действительно пугают меня :). Во всяком случае, я думаю, я не буду беспокоиться о них, потому что моя игра маленькая. Если люди его взломают, я почти уверен, что это будет потому, что он работает намного лучше, чем я ожидал :). Большое спасибо за хороший ответ. – Notbad

+0

@Notbad Да, возможно, не о чем беспокоиться, хотя уже есть сценарий для удаления стандартных латвийских чеков, а контрольные суммы apk могут быть фальшивыми. Но это все еще требует немного опыта. В любом случае, удачи, и я надеюсь, что люди будут уважать вашу работу на этом рынке шизофреников («приложения должны быть бесплатными, но я не хочу рекламы, и я собираюсь платить больше за кофе, чем за хорошее приложение!»). –

+0

Да, полностью согласен. Все не так красиво, как «они» хотели, чтобы мы верили. – Notbad

1

http://developer.android.com/google/play/billing/api.html,

сверху, говорит Google, что

Когда ваш запуск приложения или пользователь входит в системе, это хорошая практика, чтобы проверить с помощью Google Play, чтобы определить, какие элементы принадлежат пользователю. Чтобы запросить покупки пользователя в приложении, отправьте запрос getPurchases. Если запрос выполнен успешно, Google Play возвращает пакет, содержащий список идентификаторов продуктов купленных товаров, список отдельных деталей покупки и список подписей для покупок.

Проверки на каждом INIT бы дать более высокий уровень защиты для ваших продуктов я думаю

+0

Вы имеете в виду проверку каждый раз, когда я собираюсь взаимодействовать с системой IAB, не так ли? Таким образом, я мог бы проверить все перед выполнением любой транзакции. – Notbad

+0

Это не отвечает на вопрос о том, как должна быть реализована политика bind/unbind. –

+0

Я имею в виду каждый раз, когда пользователь запускает приложение. Данные о покупке пользователя (и загружаемые данные с сервера) могут быть удалены пользователем (чистые данные) или что-то еще в любое время. Кроме того, если ваш предмет является своего рода разблокировкой, он даст немного больше бремени для взлома. – tjPark