10

Wszystkie samouczki, które można znaleźć na Androidzie w aplikacji Billing V3 zakłada, że ​​masz jedno pojedyncze działanie, które obsługuje wszystkie związane z tym płatności. W moim przypadku istnieje wiele działań, które będą wymagały dostępu do fakturowania. Jak poradziłbym sobie z czymś tak elegancko?Rozłączenie rozliczeń między aplikacjami z działania

Jeden z przykładowych problemów, na które natknąłem się: Podczas pracy z klasami pomocników rozliczeń Google zawsze przekazujesz bieżącą czynność jako parametr. Późniejsze wywołania zwrotne (na przykład onActivityResult) są wywoływane w tym działaniu. Ale co, jeśli aktywna aktywność zmienia się cały czas? Czy muszę się wyłączać i ponownie inicjować fakturowanie przez cały czas?

Odpowiedz

4

Ale co, jeśli aktywna aktywność zmienia się cały czas? Czy muszę zamknąć i ponownie zainicjować fakturowanie przez cały czas?

Nie ma w tym nic złego. Łączenie się z usługą jest bardzo szybkie. Najważniejsze jest, aby móc obsłużyć wywołanie zwrotne onActivityResult(), gdy aktywność zaczyna się od nowa.

Jak poradziłbym sobie z czymś tak elegancko?

Nie jestem pewien, jaki rodzaj aplikacji piszesz. Jeśli jest to gra, najprawdopodobniej składa się z pojedynczego działania i nie ma problemu. Jeśli jest to inny rodzaj aplikacji z wieloma czynnościami, to według mnie dobrym pomysłem jest posiadanie pojedynczego działania, w którym użytkownik może zobaczyć wszystkie produkty w aplikacji (kupione i kupione). To jest jak aktywność "sklepu wewnętrznego". Ta aktywność może połączyć się z usługą rozliczeniową. Inne działania powinny być przekazywane do "sklepu wewnętrznego", w którym użytkownik może przeczytać więcej o produkcie w aplikacji i zdecydować się na jego zakup. Uważam, że jest to bardzo wygodne.

Innym podejściem byłoby wdrożenie logiki rozliczeniowej w Fragmentie, który można ponownie wykorzystać w każdym działaniu. Musisz tylko przesłonić onActivityResult() i przekazać wynik do tego fragmentu. Tak zaimplementowałem to w mojej aplikacji.

Mam nadzieję, że to pomoże.

+0

Świetna informacja. Mam pytanie, jak uzyskać dostęp do kodu InAppBilling z innego działania? Nie mogę go uruchomić –

+0

Czy możesz opublikować swój przykład Fragment z fakturowaniem? Dzięki. – dragoon

+0

Szybkie połączenie z usługą, ok, ale co z wpływem na urządzenie? Czy wiąże się to z komunikacją z serwerem? –

0

Pomyśl nieco poza przykładowym polem. Nie jest to związane tylko z twoim problemem, ale jest ogólne.

Chciałbym użyć systemu powiadomień, ponieważ masz 1 wydawcy i wielu potrzebujących słuchaczy (twoja sprawa 2). One, najbrzydszy metoda może być (ale najszybciej napisać):

  1. zrobić fałszywy aktywność (nawet niewidoczne, cokolwiek)
  2. skopiować i wkleić kod przykładów, które tam pracuje
  3. siekać się trochę, że praca kod i dodaj słuchaczy, która odbywa parametry swojej aktywności realnej
  4. powiadomić w razie potrzeby instancji, gdy potrzebna

5th up-głos pomógł lub jeśli podobał :)

+0

Hm, tworzenie fałszywej działalności nie jest takie proste. Jedynym sposobem na utworzenie działania jest uruchomienie go w cyklu życia Androida, prawda? W takim przypadku aktywność nie byłaby już fałszywa, ale faktycznie na ekranie ;-) – Boris

+0

jak trudno jest zrobić niewidzialną działalność? –

+0

Myślę, że to pokonuje cel oddzielenia logiki biznesowej od widoku (działań). – Boris