Развязка с биллинга в приложении
Все обучающие программы, которые я могу найти на Android In-App-Billing V3, предполагают, что у вас есть одно действие, которое обрабатывает все связанные с биллингом. В моем случае есть несколько видов деятельности, которые нуждаются в доступе к биллингу.
Как я мог бы обработать такую вещь наиболее элегантно?
Одна примерная проблема, на которую я наткнулся:
При работе с классами Google для выставления счетов вы всегда передаете текущую активность в качестве параметра. В этот вызов вызываются обратные вызовы (например, onActivityResult). Но что, если активная активность меняется все время? Должен ли я отключать и повторно инициализировать выставление счетов все время?
Ответы
Ответ 1
Но что, если активная активность меняется все время? Должен ли я выключать и повторно инициализировать биллинг все время?
В этом нет ничего плохого. Подключение к службе очень быстро. Самое главное - иметь возможность обрабатывать обратный вызов onActivityResult(), когда активность начинается снова.
Как я могу обработать такую вещь наиболее элегантно?
Я не уверен, какое приложение вы пишете. Если это игра, то, скорее всего, она состоит из одного действия, и в любом случае нет никаких проблем. Если это другое приложение с несколькими действиями, то, на мой взгляд, неплохо иметь одно действие, когда пользователь может видеть все продукты в приложении (купленные и покупаемые). Это похоже на активность "внутреннего магазина". Эта деятельность может подключаться к биллинговой службе. Другие действия должны отправляться в "внутренний магазин", где пользователь может больше узнать о продукте в приложении и принять решение о его покупке. Мне это очень удобно.
Другим подходом было бы реализовать логику биллинга в Фрагменте, которая может быть повторно использована во всех действиях. Вам просто нужно переопределить onActivityResult()
и перенести результат на этот фрагмент. Вот как я реализовал его в своем приложении.
Надеюсь, что это поможет.
Ответ 2
Подумайте немного за пределами примера. Это не связано только с вашей проблемой, но является общим.
Я бы использовал систему уведомлений, потому что у вас есть 1 издатель и много слушателей (ваш случай 2).
Один, самый уродливый метод может быть (но быстрее всего писать):
- сделать поддельную деятельность (даже невидимую, что угодно)
- скопировать-вставить код примеров, который работает там
- немного взломайте рабочий код и добавьте слушателей, который принимает параметры в качестве вашей реальной активности.
- уведомлять при необходимости ваши экземпляры, когда это необходимо
5-й по-прежнему, если помогло:)