5

Istnieją aplikacje (takie jak https://play.google.com/store/apps/details?id=com.teslacoilsw.launcher), które są wolne, ale którego wypłacane funkcje można włączyć poprzez zakup innej aplikacji (w tym przypadku, to jeden https://play.google.com/store/apps/details?id=com.teslacoilsw.launcher.prime)Jak działa kupowanie aplikacji, aby włączyć płatne funkcje innej aplikacji?

Jak to działa?

Domyślam się, że darmowe aplikacje uruchamiają wyraźne intencje i mogą wykryć, czy aplikacja jest dostępna za pośrednictwem struktury try/catch. Minusem tego jest to, że może to łatwo zostać wykorzystane przez kogoś, kto tworzy aplikację o tej samej nazwie pakietu i określa wszystkie możliwe filtry Intent.

Czy to działa, czy jest to jakiś inny sposób?

Odpowiedz

0

Najprostszym sposobem jest użycie startActivityForResult(...) z aplikacji A na działanie aplikacji B, która musi być skonfigurowana z filtrem IntentFilter w celu użycia z zewnętrznej aplikacji. W ramach aktywności nazywanej B możesz także sprawdzić, kto dzwoni pod numerem getCallingActivity(). Możesz znaleźć przykład here.

Przed rozpoczęciem działania można sprawdzić, czy pakiet B jest zainstalowany (przy użyciu menedżera pakietów) lub można po prostu rozpocząć działanie i przechwycić wyjątek.

W wywołanej aktywności można sprawdzić podpis wywołującego pakietu za pomocą metody the PackageManager.checkSignature(String,String). Przekaż nazwę pakietu A i B, a jeśli podpis się zgadza, wykonaj logikę.

+0

Czy można to obejść, jeśli utworzę aplikację o tej samej nazwie pakietu, która odpowiada temu samemu celowi? Nie publikować, ale po prostu zainstalować lokalnie, aby włączyć funkcje innych aplikacji. – zundi

+0

Zaktualizowano odpowiedź: –

+0

'PakietyManager.checkSignature()' było tym, czego szukałem. Zwróci "true", jeśli oba są podpisane tym samym certyfikatem, co oznacza, że ​​nie można go łatwo obejść, nawet jeśli masz kod źródłowy innej aplikacji. Dzięki – zundi

2

Jest na to wiele sposobów. Jednym ze sposobów jest wysłanie zapytania do dostawcy treści, który będzie chroniony za pomocą specjalnego pozwolenia.

Niedawno opublikowałem na Github bibliotekę, która pomaga: Android Unlocker Library.

To dobra opcja, jeśli masz do czynienia z urządzeniami spoza ekosystemu Google, jednak z doświadczenia programisty wynika, że ​​zakupy w aplikacji oferują o wiele lepszą wygodę użytkowania (a tym samym większą sprzedaż) według mnie.

+0

Jakie specjalne pozwolenie? – zundi

Powiązane problemy