Google Play es, con diferencia, la tienda de aplicaciones más popular entre los usuarios de Android, pero algunos podrían argumentar que no se ha ganado el primer puesto de forma justa. Google ha sido objeto de un escrutinio por parte de agencias reguladoras y organismos legislativos de todo el mundo debido a la forma en que mantiene su dominio en la tienda de aplicaciones, y no hay indicios de que esta presión vaya a disminuir en un futuro próximo. Tal vez por eso Google está tomando la iniciativa de introducir nuevas funciones enAndroid 14que mejoren la experiencia de los usuarios de tiendas de aplicaciones de terceros.
La mayoría de las tiendas de aplicaciones de terceros en Android no son realmente competitivas con Google Play, y no es solo por su selección de aplicaciones. Si bien las tiendas de aplicaciones propias y preinstaladas siempre han tenido la capacidad de realizar actualizaciones automáticas de aplicaciones, las tiendas de aplicaciones de terceros solo recientemente han podido realizar actualizaciones sin supervisión. Google agregóuna API en Android 12que permite que las tiendas de aplicaciones de terceros actualicen las aplicaciones sin necesidad de la acción del usuario, lo que reduce la fricción deusar una tienda de aplicaciones de terceros.
Sin embargo, esto dejaba a las tiendas de aplicaciones de terceros en una gran desventaja en cuanto a funcionalidad, porque no podían saber fácilmentecuándosería seguro hacer una actualización automática. Eso es lo que Google está tratando de resolver en Android 14 con una nueva API que permite a las tiendas de aplicaciones de terceros realizar "actualizaciones suaves".
Actualizaciones suaves
Android 14 ha añadido una nueva API que permite a las tiendas de aplicaciones de terceros comprobar si se cumplen determinadas condiciones antes de proceder a actualizar automáticamente una aplicación. LaAPI PackageInstaller.InstallConstraints“puede ser utilizada por las tiendas de aplicaciones para ofrecer actualizaciones automáticas sin interrumpir la experiencia del usuario (lo que se conoce como actualización suave); por ejemplo, una tienda de aplicaciones puede retrasar las actualizaciones cuando descubre que la aplicación que se va a actualizar está interactuando con el usuario”.
Esta nueva API permite a las tiendas de aplicaciones de terceros comprobar si una aplicación que se preparan para actualizar tiene un servicio en primer plano activo (isRequireAppNotForeground), está interactuando con el usuario de alguna manera (isRequireAppNotInteracting) o está en la pantalla (isRequireAppNotTopVisible). Las tiendas de aplicaciones de terceros también pueden comprobar si el dispositivo está en modo de suspensión (isRequireDeviceIdle) o en una llamada telefónica (isRequireNotInCall).
Si bien la API permite especificar qué condiciones se deben verificar, la documentación recomienda utilizar las restricciones preestablecidas, ya que el "sistema sabe mejor cómo hacerlo". Esto es lógico, dado que Google ha tenido mucho tiempo para desarrollar la mejor manera de gestionar las actualizaciones automáticas en su propia tienda de aplicaciones. El uso de la configuración preestablecida también es beneficioso, como se indica en la documentación, ya que la precisión y la eficiencia de las actualizaciones suaves pueden mejorarse en futuras versiones si Google agrega más restricciones a la API.
Todas las condiciones que la API PackageInstaller.InstallConstaints permite comprobar ya se pueden comprobar a través de las API existentes, pero que el sistema se encargue de estas comprobaciones es mucho más fácil y menos intrusivo. Por ejemplo, las tiendas de aplicaciones de terceros que quieran comprobar si una aplicación que están actualizando está siendo utilizada activamente por el usuario tendrían que utilizar actualmente una API como UsageStats o AccessibilityService, ambas son permisos sensibles. Sin embargo, si utilizan esta nueva API de Android 14, no necesitarían estos permisos para hacer su trabajo.
Actualizar propiedad
La habilitación de "actualizaciones suaves" no es la única mejora en Android 14 para las tiendas de aplicaciones de terceros. También hay un nuevo mecanismo de "propiedad de la actualización" que permite que las tiendas de aplicaciones de terceros se conviertan en la fuente exclusiva de futuras actualizaciones automáticas de una aplicación que instalaron primero. Esto significa que si estás usando una tienda de aplicaciones de terceros porque las aplicaciones disponibles a través de ella están aprobadas por la comunidad, por ejemplo, entonces una actualización no aprobada que esté disponible a través de otras tiendas de aplicaciones no se enviará automáticamente a tu dispositivo.
En este momento, cuando instalas una aplicación a través de una tienda de aplicaciones de terceros, no hay nada que impida que una tienda de aplicaciones propia actualice esa aplicación. Si bien la API de actualizaciones desatendidas de Android 12 solo permite que las tiendas de aplicaciones de terceros actualicen de manera silenciosa las aplicaciones que instalaron primero, las tiendas de aplicaciones propias no se ven afectadas, ya que tienen el permiso privilegiadoINSTALL_PACKAGES .
Sin embargo , las tiendas de aplicaciones de terceros en Android 14 pueden usar el nuevo métodosetRequestUpdateOwnership enPackageInstaller.SessionParamspara indicarle al sistema que están reclamando la propiedad de la actualización sobre la aplicación que están a punto de instalar. Una vez que se habilita la aplicación de la propiedad de la actualización para una aplicación, todas las demás tiendas de aplicaciones (incluso aquellas con el permiso INSTALL_PACKAGES) necesitan una acción del usuario para actualizar la aplicación. La propiedad de la actualización solo se puede habilitar durante la instalación inicial de una aplicación, por lo que otra tienda de aplicaciones no podrá hacerse cargo de las actualizaciones a menos que la aplicación en cuestión se desinstale y se vuelva a instalar desde esa tienda. Las tiendas de aplicaciones pueden verificar si la propiedad de la actualización está habilitada para una aplicación y, de ser así, qué aplicación es la propietaria de la actualización, a través de la nueva APIInstallSourceInfo#getUpdateOwnerPackageName().
Las tiendas de aplicaciones de terceros deben tener el nuevo permisoENFORCE_UPDATE_OWNERSHIPpara usar la API de cumplimiento de propiedad de actualizaciones, pero dado que este permiso tiene un nivel de protección “normal”, el sistema lo otorgará en el momento de la instalación. Sin embargo, aún queda por ver si Google Play auditará el uso de este permiso/API.
Instalar aprobación previa
La última API nueva de Android 14 que quería destacar esPackageInstaller.Session#requestUserPreapproval. Esta API permite que las tiendas de aplicaciones de terceros soliciten la aprobación del usuario antes de confirmar una sesión de instalación. Imagino que esto será útil para las tiendas de aplicaciones de terceros que desean solicitarle intencionalmente al usuario la aprobación antes de actualizar una aplicación en segundo plano.
Por ejemplo, imaginemos que una tienda de aplicaciones centrada en la seguridad quiere informar a sus usuarios cuando una actualización de la aplicación añade nuevos permisos; en lugar de actualizar automáticamente esa aplicación, concediendo así automáticamente ese permiso si su nivel de protección es "normal", la tienda de aplicaciones podría avisar al usuario antes de realizar la actualización. Actualmente, si un usuario no está presente durante una actualización automática, la tienda de aplicaciones de terceros tendría que realizar un seguimiento de la sesión de instalación y avisarle más tarde. Esta API simplifica ese proceso.
Android 14 incorporará un montón de nuevas funciones y API cuando se lance al público a finales de este año. Si bien estas nuevas API no están ocultas como algunos de los otros cambios que detectamos, no hay garantía de que estén disponibles para los desarrolladores en la versión estable. Esto se debe a que la congelación de API no ocurrirá hasta que Android 14 alcance la "estabilidad de la plataforma" con Beta 3 en junio de 2023, y solo estamos en DP1 en este momento. Estaremos atentos a las futuras versiones DP y Beta de Android 14 para ver si estas API se mantienen o si se agregan nuevas API relevantes para las tiendas de aplicaciones de terceros.