2013-02-28 10 views
8

mam płatną aplikację w Google Play dzisiaj, że chcę, aby przejść do bezpłatnej aplikacji z 3 zakupy w aplikacji. Problem polega na tym, jak "dać" zakup w aplikacji istniejącym klientom, już zapłaconym za aplikację.Zmiana listy zapłacił Android App, aby uwolnić z In App Billing - pierwszeństwa historycznego dotychczasowych klientów

miałem tylko myśl - może licencjonowanie rade?

Dotychczasowy opłacony aplikacja używa licencji Google, ale to nie powinno być konieczne więcej, gdy wszystkie funkcje są kupowane za zakupy w aplikacji - prawda? Wszyscy dotychczasowi klienci mają licencję, a wszyscy nowi klienci jej nie potrzebują.

Byłoby możliwe do sprawdzenia licencji, aw przypadku, gdy znalazł udzielić użytkownikowi dostęp do tych samych funkcji, co 3 zakupy w aplikacji dadzą dostęp?

Odpowiedz

2

O ile mi wiadomo, nie ma dobrego sposobu, aby dać użytkownikowi zakupu w aplikacji za darmo, gdy nabycie nie jest już wolny (np poprzez kupon).

Jest dyskusja na niektórych możliwych sposobów, aby to zrobić w How can I use the paid version of my app as a “key” to the free version?

Jednym ze sposobów, aby to zrobić byłoby mieć jakiś kod, który sprawdza „użytkowników starszych” (ci, którzy mają stare płatną aplikację zainstalowany), i ustawić preferencje na swoim urządzeniu, które oznaczą je jako mające płatną aplikację.

Będziesz napotkasz problemy, jeśli użytkownik przełączy telefon lub odinstalowuje następnie ponowne zainstalowanie aplikacji. Można to obejść, dodając drugi zestaw produktów w aplikacji dla starszych użytkowników, którzy są wolni, ale są dostępne tylko dla użytkowników, którzy mają zainstalowaną starą aplikację. Po zakupie bezpłatnych starszych wersji mogą odinstalować starą aplikację. Następnie za każdym razem, gdy sprawdzasz zakupione produkty, sprawdzasz produkty starsze lub nowe.

1

Myślę, że możesz zrobić coś takiego, aby sprawdzić, czy aplikacja "pro" jest dostępna i jest podpisana tym samym podpisem.

public boolean isProAppPresent() 
{ 
    try 
    { 
     PackageInfo info = context.getPackageManager().getPackageInfo("x.x.x.pro", 
       PackageManager.GET_META_DATA); 
     Log.d(TAG, "Pro app is installed: " + info.applicationInfo.name); 
     return context.getPackageManager().checkSignatures("x.x.x", 
       "x.x.x.pro") == PackageManager.SIGNATURE_MATCH; 
    } 
    catch (NameNotFoundException e) 
    { 
     return false; 
    } 
} 

Jest to łatwe do zrobienia, ale nie jestem pewien, czy jest to pełna ochrona.

Powiązane problemy