Развязка с биллинга в приложении

Все обучающие программы, которые я могу найти на Android In-App-Billing V3, предполагают, что у вас есть одно действие, которое обрабатывает все связанные с биллингом. В моем случае есть несколько видов деятельности, которые нуждаются в доступе к биллингу. Как я мог бы обработать такую ​​вещь наиболее элегантно?

Одна примерная проблема, на которую я наткнулся: При работе с классами Google для выставления счетов вы всегда передаете текущую активность в качестве параметра. В этот вызов вызываются обратные вызовы (например, onActivityResult). Но что, если активная активность меняется все время? Должен ли я отключать и повторно инициализировать выставление счетов все время?

Ответ 1

Но что, если активная активность меняется все время? Должен ли я выключать и повторно инициализировать биллинг все время?

В этом нет ничего плохого. Подключение к службе очень быстро. Самое главное - иметь возможность обрабатывать обратный вызов onActivityResult(), когда активность начинается снова.

Как я могу обработать такую ​​вещь наиболее элегантно?

Я не уверен, какое приложение вы пишете. Если это игра, то, скорее всего, она состоит из одного действия, и в любом случае нет никаких проблем. Если это другое приложение с несколькими действиями, то, на мой взгляд, неплохо иметь одно действие, когда пользователь может видеть все продукты в приложении (купленные и покупаемые). Это похоже на активность "внутреннего магазина". Эта деятельность может подключаться к биллинговой службе. Другие действия должны отправляться в "внутренний магазин", где пользователь может больше узнать о продукте в приложении и принять решение о его покупке. Мне это очень удобно.

Другим подходом было бы реализовать логику биллинга в Фрагменте, которая может быть повторно использована во всех действиях. Вам просто нужно переопределить onActivityResult() и перенести результат на этот фрагмент. Вот как я реализовал его в своем приложении.

Надеюсь, что это поможет.

Ответ 2

Подумайте немного за пределами примера. Это не связано только с вашей проблемой, но является общим.

Я бы использовал систему уведомлений, потому что у вас есть 1 издатель и много слушателей (ваш случай 2). Один, самый уродливый метод может быть (но быстрее всего писать):

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

5-й по-прежнему, если помогло:)