2012-04-30 14 views
10

Za pomocą com.android.vending.licensing możesz sprawdzić, czy Twoja aplikacja jest licencjonowana, czy nie. Jest wywołanie zwrotne, applicationError(), które mówi, czy coś poszło nie tak. Dzisiaj napotkałem błąd ERROR_NOT_MARKET_MANAGED i nie mogę wymyślić, jak powinienem sobie z tym poradzić!Jak radzisz sobie z kodem błędu LicenseCheckerCallback.ERROR_NOT_MARKET_MANAGED?

Oto co zrobiłem:

  1. w Google Play, dodałam mój adres e-mail jako konta testowego.
  2. W Google Play zapisałem moją aplikację (niepublikowaną) pod numerem versionCode="10".
  3. Na moim komputerze zmieniono na versionCode="11".
  4. Sprawdzenie licencji kończy się niepowodzeniem z kodem błędu ERROR_NOT_MARKET_MANAGED.

Pytanie brzmi; czy powinienem obsłużyć ten błąd, czy jest to nierealistyczny scenariusz?

Odpowiedz

30

ERROR_NOT_MARKET_MANAGED: nazwa naprawdę wszystko mówi sama o sobie, aplikacja nie jest zarządzana przez Android Market (obecnie Google Play). Dokładniej, wersja 11 Twojej aplikacji nie jest przesyłana ani publikowana w Google Play.

Czy powinienem obsłużyć ten błąd, czy jest to nierealistyczny scenariusz?

Uznaliby to za nierealistyczny scenariusz. Nie musisz robić nic specjalnego w kodzie, dopóki przesyłasz nową wersję aplikacji w Google Play. ERROR_NOT_MARKET_MANAGED przypomina ostrzeżenie o rozwoju LVL, które pomaga programistom odpowiednio zaimplementować kod sprawdzania licencji i wykonać poprawnĘ ... procedurę testowania sprawdzania licencji w czasie budowania projektu. sprawdź komentarze w LVL przykładowy kod:

private class MyLicenseCheckerCallback implements LicenseCheckerCallback { 

    ... ... 

    public void applicationError(ApplicationErrorCode errorCode) { 
     if (isFinishing()) { 
      // Don't update UI if Activity is finishing. 
      return; 
     } 
     // This is a polite way of saying the developer made a mistake 
     // while setting up or calling the license checker library. 
     // Please examine the error code and fix the error. 
     //String result = String.format(getString(R.string.application_error), errorCode); 
     //String result = "Error"; 
     //handleLicensingResult(result); 
    } 
} 

Istotą integracji LVL do aplikacji jest użycie Google Play opublikować swoją aplikację i korzystać z Google Play aplikacji klienta należy pobrać i zainstalować aplikację (patrz Requirements and Limitations sekcję przewodnik dev). Nie widzę żadnego punktu, który może być przyczyną tego ApplicationError w czasie wykonywania na urządzeniu użytkownika końcowego, jeżeli:

  1. Twórca wykonaj odpowiednią procedurę przesłać (do testowania LVL) lub opublikować (na prawdziwe uwolnienie) w Google Play.
  2. Użytkownik końcowy korzysta z aplikacji klienckiej Google Play, pobiera i instaluje aplikację.

Jeżeli użytkownik końcowy jakoś dostać kopię aplikacji (z LVL zintegrowanego i przesłanych/opublikowane w Google Play) z innego kanału (nie nabyć za pośrednictwem Google Play) i próbuje zainstalować go na swoim urządzeniu (z Google Odtwórz aplikację kliencką zainstalowaną na tym urządzeniu), w tym przypadku LicenseCheckerCallback przejdzie do dontAllow(), a nie applicationError (ApplicationErrorCode errorCode).

+1

Doskonała odpowiedź! Dzięki. – l33t

+0

Wygląda na to, że ten błąd nie jest obowiązkowy. Robiłem aplikacje od ponad dwóch lat i widziałem ten błąd tylko podczas uruchamiania aplikacji na SamsungGalaxy S2 z ICS. – slott

+0

Znakomita odpowiedź na to pytanie, absolutnie genialna, wiele myśli. – Soham

13

Nie testuj aplikacji natychmiast po przesłaniu jej do Google Play.

Zaczekaj chwilę (15-20 minut lub prawdopodobnie dłużej), zanim zaczniesz testować. Gra Google zajmuje trochę czasu, aby rozpoznać Twoją aplikację.

+4

Myślę, że jest to spowodowane przechowywaniem danych w pamięci podręcznej Sklepu Google Play w Twoim telefonie, Czyszcząc dane i/lub pamięć podręczną (Ustawienia - Aplikacje - Sklep Google Play), mogę natychmiast przetestować i zmienić status licencji. – yorkw

+0

Albo jeszcze lepiej, zdobądź urządzenie sprzętowe, zresetuj je do fabryki, a następnie ustaw jego główne konto użytkownika na konto dev, na które przesłałeś plik APK. – logray

+1

Dla mnie zajęło to ponad godzinę ... Myślałem, że robię coś złego, ale wydaje się, że czasami trzeba być cierpliwym. – neon1

1

Na dzień dzisiejszy, 2014 maja, muszę opublikować aplikację testową (bez przesłanego APK), aby przetestować przesłany APK i rozszerzenie OBB w wersji beta. W przeciwnym razie zawsze miałem ERROR_NOT_MARKET_MANAGED podczas testowania APKExpansionPolicy. I 2 godziny po opublikowaniu (zawiadomienie na stronie mówi "do 24 godzin"), mogę uzyskać informacje o pliku ekspansji.

Nikt prócz testerów nie widzi opublikowanej aplikacji AFAIK.

2

29 lipca Odkryłem, że podczas gdy moja aplikacja jest w wersji alfa lub beta, zawsze otrzymuję błąd 3 lub error_Not_Market_Managed. To jest właściwie odpowiedź od serwera. TO oznacza, że ​​dotykam serwera, a kod jest dobry. Niezależnie od tego, co jest ustawione w Konsoli programisty jako odpowiedź, jest to jedyna odpowiedź, którą otrzymuję.

Tak naprawdę czekałem 3 dni i nie ma zmian. W związku z tym nie ma czasu oczekiwania, który jest akceptowalny. Nawet wyczyściłem i zresetowałem cały mój telefon. Usunąłem pamięć podręczną Google Play i wszystkie inne magiczne sztuczki. Żaden z nich nie był powodem.

Zaktualizowałem jedną z moich już opublikowanych aplikacji za pomocą mojego nowego kodu licencji Google i otrzymałem dokładnie tę samą odpowiedź. Po zmianie kodu wersji, a następnie przesłaniu go do opublikowania, około 4 godziny później, aplikacja działała normalnie, a kontrola licencji Google odpowiedziała prawidłowym poprawnym kodem. Dopóki jest on w pełni opublikowany, odpowiada na to, co kiedykolwiek koduję.

WIĘC, odpowiedź brzmi: Licencja Google nie będzie działać prawidłowo, dopóki nie zostanie w pełni opublikowana. Jeśli Twoja aplikacja jest w wersji alfa lub beta, a otrzymujesz błąd 3, prawdopodobnie jesteś dobry. Po prostu skomentuj metodę sprawdzania licencji, aż będziesz gotowy do opublikowania.

+0

Jeśli Twoja aplikacja ma "versionCode", który nie jest dostępny (opublikowany lub niepublikowany) w Google Play, wszystkie błędy powinny zostać odrzucone. Moje oryginalne pytanie zawiera właściwie odpowiedź; to nierealistyczny scenariusz. – l33t

+0

"Po zmianie kodu wersji, a następnie przesłaniu go do opublikowania, około 4 godziny później, aplikacja działała normalnie", może to dlatego, że zmieniłeś kod wersji? I mam ten sam problem z tobą, podczas gdy wciąż uważam, że test beta powinien być w porządku. – Jacky

0

Może się również zdarzyć w starszych urządzeniach. Testuję swoją aplikację bez publikowania aktualnej wersji i działa dobrze na moim Galaxy S8, ale otrzymuję tę wiadomość na mojej Galaxy S4. Co oznacza, że ​​jest to również uprzejmy sposób na stwierdzenie, że może to być również pomyłka Google.

Powiązane problemy