2011-01-26 24 views
20

¿Podría alguien describirme una solución para implementar un complemento dentro de una aplicación de Android y cómo podría venderse en Android Market?¿Cómo liberar el complemento de la aplicación utilizando Android Market?

Normalmente, creas un juego cuyos 4 primeros niveles son gratuitos. Luego, el usuario debe comprar algo usando Android Market para desbloquear niveles adicionales.

Una solución podría ser enumerar los paquetes configurados en el teléfono que se denominan com.company.myApp.additionalLevelSet1 pero no parece seguro en absoluto. (un usuario puede configurar manualmente los paquetes de complementos y así desbloquear funciones adicionales libremente)

En iPhone, puede usar InAppPurchase para comprar productos no consumibles o consumibles.

Cualquier ayuda o sugerencia sería apreciada. ¡Gracias!

+0

Google ha anunciado recientemente que la compra integrada en la aplicación llegará al mercado en breve. – tamasd

Respuesta

27

Es bastante simple en su caso, ya que no necesita ninguna lógica extra, pero solo más niveles, así que me atengo a este caso específico:

Puede (o probablemente ya lo hace) tener sus niveles de juego guardados como recursos en su .apk, por lo que un complemento puede ser un archivo .apk estándar, eso no aparecerá en la lista de usuarios-aplicaciones. Para evitar que aparezca, simplemente no declarar la categoría-lanzador:

<intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 

Una vez que el fragmento anterior hace NO aparecen en AndroidManifest de su plug-in, no va a ser directamente accesible para el usuario.

Cuando comience la actividad principal del juego, debe verificar la existencia de complementos, puede hacerlo, llamando al PackageManager.queryIntentActivities.Y la consulta para un propósito específico que declara en el archivo AndroidManifest de su plugin, por ejemplo:

<intent-filter> 
    <action android:name="com.your.package.name.LEVEL_PACK" /> 
</intent-filter> 

El código de consulta sería entonces:

PackageManager packageManager = getPackageManager(); 
Intent levelsIntent = new Intent("com.your.package.name.LEVEL_PACK"); 
List<ResolveInfo> levelPacks = packageManager.queryIntentActivities(levelsIntent, 0); 

Hay más maneras de hacer esto, pero esto es bastante trivial y directo.

El último paso es acceder a los niveles desde los paquetes de nivel instalados. Puede hacer esto llamando al: PackageManager.getResourcesForActivity y cargar los recursos relevantes y usarlos como lo desee.

+0

Gracias por su respuesta que se borra sobre el proceso. Sin embargo, ¿sabe si existe una solución para contrarrestar a un usuario que encontraría el complemento APK, instálelo manualmente y luego obtenga los niveles adicionales libremente? Tal vez es una pregunta estúpida ... – Sly

+0

Esta es una pregunta mucho más genérica: por lo que sé, no hay ningún juego/aplicación que sea "imposible de descifrar", la forma más segura es tener tu propio servidor y la aplicación se comparará si los niveles instalados ... Y cada paquete de niveles instalado debe informar al servidor ... Gran exageración, por supuesto :) – Devenv

+1

@Lior: ¿Puede enumerar otras formas para el problema anterior? – kAnNaN

0

Lo que he visto hasta ahora en Android Market es una versión completamente diferente de las aplicaciones de forma gratuita en comparación con el contenido pago de la misma aplicación.

No he examinado aún los complementos, así que no sé si esta característica está disponible, pero si no puede encontrarla, una solución podría ser iniciar aplicaciones y ocultarlas de la aplicación de agregar a menú de inicio y/o menú contextual y simplemente agregue un enlace dentro de la aplicación principal.

Otra solución es tratar a su contenido additionnal como bibliotecas de contenidos de pago y simplemente bloquear el acceso a nivel si el recurso no es accesible. Pero debe verificar si tiene derecho a tener librairies privadas que estén separadas de su aplicación.

Básicamente lo que estás buscando que hacer es exactamente lo que los hosters de contenido como Apple y Android están tratando de evitar o controlar ya que permitirá transmitir nuevos contenidos a su aplicación sin el host de contenido sabiendo que es en realidad nueva contenido para otra aplicación.

le sugiero que lea esto para entender por qué una aplicación para la aplicación múltiple no es obvio en Android: Android Security

Cuestiones relacionadas