¿Está bien comprobar la legalidad de instalar la aplicación android pagada comprobando getInstallerPackageName?
Para asegurarme de que mi aplicación Android pagada se instaló legalmente desde la tienda, escribo esto:
String installer = getPackageManager().getInstallerPackageName( "com.example.myapp"); if (installer == null) { // app was illegally downloaded from unknown source. // dear user, please re-install it from market } else { // app was probably installed legally // (also it's good to check actual installer name) }
¿Está bien? ¿Existe alguna posibilidad de que la aplicación legalmente comprada e instalada desde el mercado obtenga el nombre del paquete del instalador vacío y no se realice en esta prueba?
- Envío de aplicaciones a Google Play
- Android: ID de producto en la aplicación
- ¿Hay algún generador "Feature Graphic" para Google Play?
- Caché de dispositivos múltiples de Google IAB V3
- Compras en la aplicación con varias cuentas
Entiendo que el usuario puede ejecutar adb -i com.fake.installer myapp.apk
y pasar esta comprobación, pero es más importante si los usuarios legales obtendrán problemas potenciales o no.
- ¿Existe una lista o una descripción exhaustiva de los parámetros de referencia que la aplicación de Android Market envía a la intención de referencia?
- Subiste un APK que se firmó en modo de depuración. Necesita firmar su APK en el error de modo de liberación
- Autenticación necesaria para la aplicación publicada de Google Play
- API para obtener comentarios de android google play (obtener nombre de dispositivo y la versión de la aplicación)
- Comprueba si la aplicación está disponible en Android Market
- ¿Cuál es la diferencia entre las instalaciones totales y las instalaciones activas en el mercado de Android?
- Cambio de nombre de programador de Android
- Subiste un APK debugable. Por razones de seguridad, debes desactivar la depuración antes de publicarla en Google Play-Upload apk para google play
No debe utilizar PackageManager#getInstallerPackageName
para comprobar si la aplicación se ha instalado desde Google Play o para fines de licencia por las siguientes razones:
1) El nombre de paquete del instalador puede cambiar en el futuro. Por ejemplo, el nombre del paquete de instalador es "com.google.android.feedback"
(ver aquí ) y ahora es "com.android.vending"
.
2) Comprobar el nombre de paquete del instalador por razones de piratería es equivalente a usar Base64 para cifrar contraseñas – es simplemente mala práctica.
3) Los usuarios que compraron legalmente la aplicación pueden cargar el APK de lado o restaurarlo desde otra aplicación de copia de seguridad que no establece el nombre de paquete de instalación correcto y obtiene un error de comprobación de licencia. Esto conducirá muy probablemente a revisiones malas.
4) Como usted mencionó, los piratas pueden fijar simplemente el nombre de paquete del instalador al instalar el APK.
Debe utilizar Licencias de aplicaciones o cambiar a Facturación integrada en la aplicación .
Mientras que getInstallerPackage("com.example.mypackagename")
hace el truco y es básicamente un poco más difícil para los "hackers" todavía hacer uso de su aplicación de pago sin realmente pagar por ello, es cierto que no es el mejor método para no Deja que esto suceda.
¿Qué puedes hacer en su lugar?
- Puedes agregar una licencia a tu aplicación.
Esto básicamente garantiza que la aplicación ha sido comprada por el usuario utilizando el teléfono.
- Otra cosa que puedes hacer es hacer que tu aplicación sea gratuita y añadirle las compras de aplicaciones. En tu caso, solo UNO en la compra de aplicaciones, una suscripción única. Esto, en mi opinión, es la mejor solución a este problema, por dos razones:
- Resuelve su problema original, no permitiendo que los usuarios usen sus funcionalidades premium a menos que realmente las compren.
- Hace que tu aplicación sea más amigable para descargar. Los usuarios pueden probarlo antes de comprarlo, y esto siempre es una ventaja cuando se trata de ganar más usuarios.
Por supuesto, hay un inconveniente en esto: usted tiene un montón de trabajo si la arquitectura de su aplicación no se construyó en torno a esta idea. Sin embargo, creo que vale la pena.
- ¿Cómo puedo agregar los tonos de llamada personalizados de mi aplicación en la carpeta res / raw a un ringtonepreference
- Android AOSP – Definición de intervalo de exploración y escanear ventana en código fuente android