Usa la Verificación de aplicaciones para proteger el SDK de Navigation para Android
La Verificación de aplicaciones de Firebase protege las llamadas de tu app a Google Maps Platform, ya que bloquea el tráfico que proviene de fuentes que no son tus apps legítimas. Para ello, solicita una evaluación de la autenticidad de la app o del dispositivo a un proveedor de certificación, como Play Integrity. Cuando integras tu app en la Verificación de aplicaciones, agregas protección contra solicitudes maliciosas y no autorizadas, lo que, a su vez, protege tu facturación de cargos no autorizados. La Verificación de aplicaciones también mejora significativamente los informes de interrupciones en tiempo real en el ecosistema de apps de tu flota, lo que beneficia a todos los conductores que usan tu app. Para obtener más información, consulta Informes de interrupciones.
¿Por qué usar la Verificación de aplicaciones?
La Verificación de aplicaciones protege dos áreas distintas del SDK de Navigation para Android: la funcionalidad de navegación principal y los informes de interrupciones.
Navegación
La Verificación de aplicaciones ayuda a bloquear las solicitudes principales del SDK de Navigation para Android que provienen de fuentes maliciosas o no autorizadas. Esto te beneficia directamente, ya que protege tu proyecto contra el fraude de facturación y el agotamiento de la cuota.
Informes de interrupciones
Se recomienda usar la Verificación de aplicaciones si tu app admite funciones de votación y de informes de interrupciones en tiempo real. Habilitar la Verificación de aplicaciones garantiza que tus conductores reciban las rutas más precisas, teniendo en cuenta todos los comentarios en tiempo real.
Por qué la Verificación de aplicaciones es importante para los informes:
- El alto nivel de confianza para los cierres: Los eventos que afectan las rutas, como las rutas cerradas, pueden alterar significativamente el comportamiento de la planificación de ruta para todos los conductores. Para proteger el mapa de posibles actos de vandalismo, spam o informes imprecisos, la infraestructura de moderación de Google para las interrupciones por rutas cerradas se basa en indicadores sólidos de integridad del dispositivo y de la app.
- Cómo la Verificación de aplicaciones valida los informes: Los informes y votos de los usuarios que se envían desde el SDK de Navigation para Android incluyen el token de la Verificación de aplicaciones, que el backend de Google usa para validar la legitimidad de los comentarios, lo que aumenta su nivel de confianza y permite que se evalúe su impacto en el mapa publicado.
- El impacto de omitir la Verificación de aplicaciones: Los informes que se envían sin un token válido de Verificación de aplicaciones se evalúan con un modelo de menor confianza y es posible que se procesen solo como indicadores silenciosos. Esto significa que, si bien tus usuarios aún pueden enviar avisos y votar, es menos probable que sus avisos aparezcan en el mapa o afecten las rutas de otros conductores, y requerirán una validación adicional.
¿La Verificación de aplicaciones es adecuada para mí?
Se recomienda la Verificación de aplicaciones en la mayoría de los casos. Sin embargo, no es necesaria ni compatible en las siguientes situaciones:
- Apps privadas o experimentales: Si tu app no es de acceso público, no se necesita la Verificación de aplicaciones.
- Dispositivos comprometidos: Los proveedores de certificación recomendados evitan que el SDK de Navigation para Android se ejecute en dispositivos no confiables, como teléfonos con jailbreak o con permisos de administrador. Para admitir estos dispositivos, implementa un proveedor de certificación personalizado.
- Dispositivos Android que no son GMS: Los dispositivos Android deben ejecutar los Servicios de Google para dispositivos móviles (GMS) para Play Integrity. Si planeas admitir dispositivos Android que no sean de GMS, implementa un proveedor de certificación personalizado.
Descripción general de los pasos de implementación
En términos generales, seguirás estos pasos para integrar tu app en la Verificación de aplicaciones:
- Agrega Firebase a tu app.
- Agrega la biblioteca de Verificación de aplicaciones y, luego, inicializa la función.
- Agrega un proveedor de tokens. En este paso, se invoca al proveedor de certificación que elijas para verificar la integridad del dispositivo o de la app.
- Inicializa las APIs de Navigation y Verificación de aplicaciones.
- Habilita la depuración. Esto es útil durante el desarrollo o en entornos de integración continua (CI).
- Supervisa las solicitudes de tu app antes de habilitar la aplicación de medidas por incumplimiento. De esta manera, aplicas la Verificación de aplicaciones sin problemas y sin interrumpir a los usuarios.
Consideraciones para planificar una integración de la Verificación de aplicaciones
- Cuotas del proveedor de certificación: El proveedor de certificación que recomendamos, Play Integrity, tiene un límite de llamadas diarias para su nivel de uso de la API estándar. Para obtener más información sobre los límites de llamadas, consulta la página Configuración en la documentación para desarrolladores de Google Play Integrity.
- Latencia de inicio: En la mayoría de las situaciones, los usuarios no experimentarán latencia durante el uso habitual, ya que los tokens de la Verificación de aplicaciones se almacenan en caché en el dispositivo. El sistema actualiza automáticamente los tokens de Verificación de aplicaciones en segundo plano antes de que venzan para mantener un rendimiento sin interrupciones. Sin embargo, si no hay un token de Verificación de aplicaciones válido, los usuarios de tu app experimentarán cierta latencia durante el inicio. Por ejemplo, esta latencia se produce durante los inicios en frío cuando un token almacenado en caché venció o no está presente.
- TTL del token: El tiempo de actividad (TTL) determina la cantidad de tiempo durante la cual el token de Verificación de aplicaciones es válido antes de que se deba actualizar. Puedes configurar esta duración de 30 minutos a 7 días en Firebase console. Se recomienda una duración de 1 hora como referencia segura, pero el SDK intenta automáticamente realizar actualizaciones en segundo plano aproximadamente a la mitad de la duración del TTL. Para obtener instrucciones paso a paso sobre la consola, consulta la documentación de la Verificación de aplicaciones de Firebase.
Integra tu app en la Verificación de aplicaciones
Requisitos previos y requisitos
- Una app con el SDK de Navigation para Android, versión 7.9 o posterior, instalado
- La huella digital del certificado SHA-256 de tu app
- Es el nombre del paquete de tu app.
- Debes ser el propietario de la app en la consola de Google Cloud.
- Es el ID del proyecto de tu app de la consola de Google Cloud.
Paso 1: Agrega Firebase a tu app
Sigue las instrucciones de la documentación para desarrolladores de Firebase para agregar Firebase a tu app. Agrega tu archivo google-services.json al directorio de nivel de app de tu proyecto.
Paso 2: Agrega la biblioteca de Verificación de aplicaciones y, luego, inicializa la función
Agrega la dependencia de la Verificación de aplicaciones al archivo build.gradle de tu app:
Groovy (build.gradle)
dependencies { // Import the Firebase BoM implementation platform('com.google.firebase:firebase-bom:34.17.0') // Add the dependency for the App Check library with Play Integrity implementation 'com.google.firebase:firebase-appcheck-playintegrity' }
Inicializa la Verificación de aplicaciones en tu clase Application o actividad principal:
Java
import com.google.firebase.FirebaseApp; import com.google.firebase.appcheck.FirebaseAppCheck; import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory; // Initialize Firebase App FirebaseApp.initializeApp(/* context= */ this); // Initialize App Check FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance());
Kotlin
import com.google.firebase.Firebase import com.google.firebase.appcheck.appCheck import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory import com.google.firebase.initialize // Initialize Firebase App Firebase.initialize(context = this) // Initialize App Check Firebase.appCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance(), )
Paso 3: Agrega el proveedor de tokens
Crea una implementación de la interfaz MapsAppCheckTokenProvider. Este proveedor recupera de forma asíncrona los tokens de la Verificación de aplicaciones de Firebase y los pasa a la pila de red del SDK de Navigation para Android con el MapsAppCheckTokenCallback:
Java
import com.google.android.gms.maps.MapsAppCheckTokenCallback; import com.google.android.gms.maps.MapsAppCheckTokenProvider; import com.google.firebase.appcheck.FirebaseAppCheck; public class NavigationTokenProvider implements MapsAppCheckTokenProvider { @Override public void fetchToken(MapsAppCheckTokenCallback callback) { FirebaseAppCheck.getInstance() .getAppCheckToken(false) // forcingRefresh = false .addOnSuccessListener( tokenResult -> { String token = tokenResult.getToken(); callback.onSuccess(token); }) .addOnFailureListener( e -> { callback.onFailure(); }); } }
Kotlin
import com.google.android.gms.maps.MapsAppCheckTokenCallback import com.google.android.gms.maps.MapsAppCheckTokenProvider import com.google.firebase.appcheck.FirebaseAppCheck class NavigationTokenProvider : MapsAppCheckTokenProvider { override fun fetchToken(callback: MapsAppCheckTokenCallback) { FirebaseAppCheck.getInstance() .getAppCheckToken(false) .addOnSuccessListener { tokenResult -> callback.onSuccess(tokenResult.token) } .addOnFailureListener { callback.onFailure() } } }
Paso 4: Inicializa las APIs de Navigation y Verificación de aplicaciones
Inicializa el SDK de Navigation para Android y registra tu instancia de proveedor de tokens unificado con MapsApiSettings.setAppCheckTokenProvider():
Java
import com.google.android.gms.maps.MapsApiSettings; // Register your App Check token provider before initializing Navigation SDK for Android MapsApiSettings.setAppCheckTokenProvider(context, new NavigationTokenProvider());
Kotlin
import com.google.android.gms.maps.MapsApiSettings // Register your App Check token provider before initializing Navigation SDK for Android MapsApiSettings.setAppCheckTokenProvider(context, NavigationTokenProvider())
Paso 5: Habilita la depuración (opcional)
Después de que se aplique la Verificación de aplicaciones para el SDK de Navigation para Android, las funciones de tu app que dependen del SDK de Navigation para Android no se ejecutarán en un simulador ni en un entorno de integración continua (CI), ya que estos entornos no califican como dispositivos válidos. Para ejecutar tu app en estos entornos durante el desarrollo y las pruebas, debes crear una compilación de depuración de la app que use el proveedor de depuración de la Verificación de aplicaciones en vez de un proveedor de certificación de producción.
- Agrega la dependencia del proveedor de depuración al archivo
build.gradlede tu app:Groovy (build.gradle)
dependencies { implementation 'com.google.firebase:firebase-appcheck-debug' }
- Configura la Verificación de aplicaciones para que use la fábrica de proveedores de depuración en tus compilaciones de depuración:
Java
import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory; import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory; if (BuildConfig.DEBUG) { firebaseAppCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance() ); } else { firebaseAppCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance() ); }
Kotlin
import com.google.firebase.Firebase import com.google.firebase.appcheck.appCheck import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory if (BuildConfig.DEBUG) { Firebase.appCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance(), ) } else { Firebase.appCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance(), ) }
- Inicia tu app en un emulador o dispositivo de depuración. La Verificación de aplicaciones imprimirá un token de depuración local en el resultado de logcat.
- Copia y registra este token de depuración en Firebase console. Para obtener más detalles, consulta la documentación del proveedor de depuración de la Verificación de aplicaciones de Firebase.
Paso 6: Supervisa las solicitudes de tu app y decide si aplicar medidas por incumplimiento
Antes de habilitar la aplicación de medidas por incumplimiento, supervisa las solicitudes de tu app para asegurarte de que no interrumpirás a los usuarios legítimos.
- Visita la pantalla de métricas de Verificación de aplicaciones en Firebase console para ver el porcentaje de tráfico verificado en comparación con el no verificado.
- Una vez que te asegures de que la mayoría de tu tráfico está verificado y de que los usuarios legítimos actualizaron la app a una versión que contiene tu implementación de la Verificación de aplicaciones, habilita la aplicación de la política.
- Una vez que se active la aplicación de medidas por incumplimiento, la Verificación de aplicaciones rechazará todo el tráfico que no tenga un token válido de Verificación de aplicaciones.