2012-04-30 17 views
10

Usando com.android.vending.licensing puede verificar si su aplicación tiene licencia o no. Hay una devolución de llamada, applicationError() que le informa si algo salió mal. ¡Hoy encontré el error ERROR_NOT_MARKET_MANAGED y no puedo entender cómo debo manejarlo!¿Cómo se maneja el código de error LicenseCheckerCallback.ERROR_NOT_MARKET_MANAGED?

Aquí es lo que hice:

  1. en Google Play, he añadido a mi dirección de correo electrónico como una cuenta de prueba.
  2. En Google Play, guardé mi aplicación (sin publicar) con versionCode="10".
  3. En mi máquina, cambié a versionCode="11".
  4. La verificación de licencia ahora falla con el código de error ERROR_NOT_MARKET_MANAGED.

La pregunta es; ¿Debería manejar este error o es este un escenario poco realista?

Respuesta

30

ERROR_NOT_MARKET_MANAGED: el nombre realmente dice todo sobre sí mismo, la aplicación no está administrada por Android Market (ahora se llama Google Play). Más específicamente, la versión 11 de su aplicación no se carga ni se publica en Google Play.

debo manejar este error o este es un escenario poco realista?

Lo consideraría un escenario poco realista. No necesita hacer nada especial en el código siempre que cargue la nueva versión de la aplicación en Google Play. ERROR_NOT_MARKET_MANAGED es más como una advertencia de desarrollo de LVL que ayuda al desarrollador a implementar correctamente el código de verificación de licencia y a seguir el procedimiento correcto para probar la verificación de licencia en el momento de compilación del proyecto. ver los comentarios en LVL código de ejemplo:

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); 
    } 
} 

El objetivo de la integración de LVL en su aplicación es el uso de Google Play publicar la aplicación, y el uso de Google Play descarga de aplicaciones cliente e instalar su aplicación (véase Requirements and Limitations sección de guía de desarrollo). No puedo ver cualquier punto que puede causar este ApplicationError en tiempo de ejecución en el dispositivo del usuario final si:

  1. desarrollador sigue el procedimiento correcto para cargar (por LVL pruebas) o publicar (para la liberación real) en Google Play.
  2. Uso del usuario final La compra de la aplicación cliente de Google Play, descarga e instala la aplicación.

Si un usuario final obtiene de alguna manera una copia de su aplicación (con LVL integrado y cargado/publicado en Google Play) de otro canal (no compra a través de Google Play) e intenta instalarlo en su dispositivo (con Google Play aplicación cliente instalada en ese dispositivo), en este caso, LicenseCheckerCallback irá a dontAllow() en lugar de applicationError (ApplicationErrorCode errorCode).

+1

¡Excelente respuesta! Gracias. – l33t

+0

Parece que este error no es obligatorio. He estado creando aplicaciones durante más de dos años y solo he visto este error al ejecutar mis aplicaciones en un SamsungGalaxy S2 con ICS. – slott

+0

Brillante responde esto, absolutamente brillante, muchos piensan. – Soham

13

No pruebe su aplicación inmediatamente después de cargarla en Google Play.

Espere un tiempo (15-20 minutos o probablemente más) antes de comenzar la prueba. Google play toma un tiempo para reconocer tu aplicación.

+4

Creo que esto es causado por los datos almacenados en caché de la aplicación Google Play Store en tu teléfono, al borrar datos y/o caché (Configuración - Aplicaciones - Google Play Store), puedo probar y obtener el cambio de estado de la licencia inmediatamente. – yorkw

+0

O mejor aún, obtenga un dispositivo de hardware, reinícielo a la fábrica y luego configure su cuenta de usuario principal en la cuenta de desarrollo a la que cargó el APK. – logray

+1

Para mí tomó más de una hora ... Pensé que estaba haciendo algo mal, pero parece que uno solo necesita ser paciente a veces. – neon1

1

Por el momento, 2014 de mayo, tengo que publicar la aplicación de prueba (no se carga la APK de producción) para probar el archivo APK cargado y la OBB de expansión en versión beta. De lo contrario, siempre recibí ERROR_NOT_MARKET_MANAGED al probar APKExpansionPolicy. Y 2 horas después de la publicación (el aviso en la página web decía "hasta 24 horas"), puedo obtener información sobre el archivo de expansión.

Nadie excepto los verificadores puede ver la aplicación publicada AFAIK.

2

29 de julio, he descubierto que, aunque mi aplicación está en pruebas alfa o beta, todo lo que obtengo es el error 3 o el error_Market_ ​​administrado. Esta es en realidad una respuesta del servidor. SO eso significa que estoy tocando el servidor y el código es bueno. Independientemente de lo que se establezca en la consola de desarrollador como respuesta, esta es la única respuesta que recibo.

Realmente he esperado 3 días y no hay cambios. ASÍ QUE no hay tiempo de espera que sea aceptable. Incluso borre y restablezca todo mi teléfono. Limpié la caché de Google Play y todos los otros trucos de magia. Ninguno de ellos fue la razón.

Actualicé una de mis aplicaciones ya publicadas con mi nuevo código de licencia de Google y obtuve la misma respuesta. Después de cambiar el código de la versión y luego subirlo para su publicación, unas 4 horas después, esa aplicación funcionaba normalmente y la verificación de la licencia de Google respondía con un código válido. Ahora, siempre y cuando esté completamente publicado, responde con el código que le digo.

SO la respuesta es que Google License no funcionará correctamente hasta que esté completamente publicado. Si su aplicación está en Alfa o Beta y está obteniendo el Error 3, entonces probablemente sea bueno. Simplemente comente el método de verificación de licencia hasta que esté listo para publicar.

+0

Si su aplicación tiene un 'versionCode' que no está presente (publicado o no) en Google Play, se deben descartar todos los errores. Mi pregunta original en realidad contiene la respuesta correcta; es un escenario poco realista. – l33t

+0

"Después de cambiar el código de la versión y luego subirlo para su publicación, unas 4 horas después, esa aplicación funcionaba normalmente", ¿tal vez es porque ha cambiado el código de la versión? Y tengo el mismo problema contigo, aunque todavía creo que la prueba beta debería estar bien. – Jacky

0

También puede suceder en dispositivos más antiguos. Estoy probando mi aplicación sin que se publique la versión real y funciona bien en mi Galaxy S8, pero recibo este mensaje en mi Galaxy S4. Lo que significa que también es una forma educada de decir que esto también puede ser un error de Google.

Cuestiones relacionadas