О времени инициализации биллинга в приложении

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

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

Ваше здоровье.


person Notbad    schedule 29.04.2013    source источник
comment
Не уверен, что вы подразумеваете под инициализацией, вы имеете в виду привязку к службе? Я нахожу IAB V3 гораздо более отзывчивым, чем LVL, но я думаю, что это связано с внутренним кэшированием службы IAB. Лучше всего привязываться к службе только тогда, когда она вам нужна, чтобы Android мог эффективно управлять ресурсами.   -  person class stacker    schedule 29.04.2013
comment
Да, извините, я хотел сказать, когда привязать к сервису. Что касается вашего ответа, вы имеете в виду, что я должен привязывать / отвязывать каждый раз, когда мне нужно, и заканчивать работу с системой IAB? Извините, если все это кажется глупым вопросом, но я подумал, что делать более одной привязки/отвязки к сервису будет не очень хорошим вариантом.   -  person Notbad    schedule 29.04.2013
comment
Я подумал, что пришло время предоставить больше информации; см. мой ответ. Сейчас добавлю несколько ссылок.   -  person class stacker    schedule 29.04.2013


Ответы (2)


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

  • Вы привязываетесь/отвязываетесь от службы IAB, когда вам нужно выполнить транзакцию или получить информацию/закончить. Не нужно беспокоиться о производительности там, потому что это локальный сервис, который не обязательно подключается к серверам Google, когда вы к нему привязываетесь (единственное исключение: покупка, но это все равно займет некоторое время); он следует другой стратегии, чтобы решить, когда выходить в Интернет.
  • Это хорошая идея, чтобы синхронизировать внутреннее представление вашего приложения о том, чем владеет пользователь, с идеей IAB, как правильно говорит tjPark. Будет ли это при запуске вашего приложения или только после того, как пользователь сделает пару вариантов, зависит от вашего приложения. Если вам нужно знать для экрана-заставки, какие элементы IAB принадлежат пользователю, сделайте это в своем действии экрана-заставки. Если это становится актуальным только позже, имеет смысл обратиться к службе IAB позже.
  • Вы также должны тщательно продумать стратегию потребления, которая соответствует вашим потребностям, если ваши предметы IAB можно потреблять.
  • Всегда помните, что IAB V3 широко использует кэширование, поэтому даже синхронизация вашего приложения со службой IAB не обязательно даст вам самую свежую информацию. . Например. когда пользователь покупает продукт в приложении на устройстве 1 и хочет использовать его на устройстве 2, будет задержка, пока он не появится. Или, если вы отмените транзакцию в Google Checkout/Wallet, а устройство находится в автономном режиме, вы также не узнаете об этом сразу.
  • Не используйте пример кода Google, не доработав его для достижения зрелости продукта.
  • Знайте, что ответы службы IAB могут быть подвержены повторным атакам, потому что вы не можете предоставить одноразовый номер в своем запросе.
  • Знайте, что если у вас нет проверки на стороне сервера, тогда весь ваш код IAB может быть заменен фиктивным кодом, который просто возвращает положительные ответы.
person class stacker    schedule 29.04.2013
comment
Спасибо за четкий ответ. Насчёт последних 2-х пунктов они меня реально пугают :). Во всяком случае, я думаю, что не буду беспокоиться о них, потому что моя игра маленькая. Если люди взломают их, я почти уверен, что это будет потому, что он работает намного лучше, чем я ожидал :). Еще раз большое спасибо за хороший ответ. - person Notbad; 29.04.2013
comment
@Notbad Да, наверное, не о чем беспокоиться, хотя уже есть скрипт для удаления стандартных проверок LVL, а контрольные суммы apk можно подделать. Но это все еще требует некоторого опыта. В любом случае, удачи, и я надеюсь, что люди уважают вашу работу на этом шизофреническом рынке (приложения должны быть бесплатными, но я не хочу рекламы, и я заплачу больше за кофе, чем за хорошее приложение!). - person class stacker; 29.04.2013
comment
Да, полностью согласен. Вещи не так прекрасны, как они хотели, чтобы мы поверили. - person Notbad; 29.04.2013
comment
Ваш ответ дал мне кучу деталей. Спасибо! - person tjPark; 30.04.2013

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

сверху, гугл сказал, что

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

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

person tjPark    schedule 29.04.2013
comment
Вы имеете в виду проверку каждый раз, когда я собираюсь взаимодействовать с системой IAB, не так ли? Таким образом, я мог бы проверить все, прежде чем выполнять какую-либо транзакцию. - person Notbad; 29.04.2013
comment
Это не отвечает на вопрос, как должна быть реализована политика привязки/отвязки. - person class stacker; 29.04.2013
comment
Я имею в виду каждый раз, когда пользователь запускает приложение. Данные о покупке пользователя (и загружаемые данные с сервера) могут быть удалены пользователем (очистить данные) или чем-то еще в любое время. Кроме того, если ваш предмет является чем-то вроде разблокировки сценических вещей, это потребует немного больше усилий для взлома. - person tjPark; 29.04.2013