Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
A partir de Windows 10, versión 1607 (compilación 14393), Windows 10 permite a los desarrolladores garantizar más garantías en torno a las actualizaciones de aplicaciones de la Tienda. Esto requiere algunas API sencillas, crea una experiencia de usuario coherente y predecible y permite a los desarrolladores centrarse en lo que mejor hacen, al tiempo que permiten a Windows hacer el trabajo pesado.
Hay dos formas fundamentales de administrar las actualizaciones de aplicaciones. En ambos casos, el resultado neto de estos métodos es el mismo: se aplica la actualización. Sin embargo, en un caso, puede optar por permitir que el sistema realice todo el trabajo mientras, en el otro caso, podría querer tener un nivel más profundo de control sobre la experiencia del usuario.
Actualizaciones sencillas
En primer lugar, es la llamada API muy sencilla que indica al sistema que busque actualizaciones, descárguelos y, a continuación, solicite permiso al usuario para instalarlas. Empezarás usando la clase StoreContext para obtener objetos StorePackageUpdate , descargarlos e instalarlos.
using Windows.Services.Store;
private async void GetEasyUpdates()
{
StoreContext updateManager = StoreContext.GetDefault();
IReadOnlyList<StorePackageUpdate> updates = await updateManager.GetAppAndOptionalStorePackageUpdatesAsync();
if (updates.Count > 0)
{
IAsyncOperationWithProgress<StorePackageUpdateResult, StorePackageUpdateStatus> downloadOperation =
updateManager.RequestDownloadAndInstallStorePackageUpdatesAsync(updates);
StorePackageUpdateResult result = await downloadOperation.AsTask();
}
}
En este momento, el usuario tiene dos opciones entre las que puede elegir: aplicar la actualización ahora o aplazar la actualización. Sea cual sea la elección que realice el usuario, se devolverá a través del StorePackageUpdateResult
objeto , lo que permite a los desarrolladores realizar más acciones, como cerrar la aplicación si la actualización es necesaria para continuar o simplemente intentarlo más tarde.
Actualizaciones finamente controladas
Para los desarrolladores que desean tener una experiencia completamente personalizada, se proporcionan API adicionales que permiten un mayor control sobre el proceso de actualización. La plataforma le permite hacer lo siguiente:
- Obtiene eventos de progreso en una descarga de paquete individual o en toda la actualización.
- Aplique actualizaciones en la comodidad del usuario y de la aplicación en lugar de una u otra.
Los desarrolladores pueden descargar actualizaciones en segundo plano (mientras la aplicación está en uso) luego solicitar las actualizaciones de instalación del usuario, si rechazan, puede deshabilitar las funcionalidades afectadas por la actualización si elige.
Descargar actualizaciones
private async void DownloadUpdatesAsync()
{
StoreContext updateManager = StoreContext.GetDefault();
IReadOnlyList<StorePackageUpdate> updates = await updateManager.GetAppAndOptionalStorePackageUpdatesAsync();
if (updates.Count > 0)
{
IAsyncOperationWithProgress<StorePackageUpdateResult, StorePackageUpdateStatus> downloadOperation =
updateManager.RequestDownloadStorePackageUpdatesAsync(updates);
downloadOperation.Progress = async (asyncInfo, progress) =>
{
// Show progress UI
};
StorePackageUpdateResult result = await downloadOperation.AsTask();
if (result.OverallState == StorePackageUpdateState.Completed)
{
// Update was downloaded, add logic to request install
}
}
}
Instale actualizaciones
private async void InstallUpdatesAsync()
{
StoreContext updateManager = StoreContext.GetDefault();
IReadOnlyList<StorePackageUpdate> updates = await updateManager.GetAppAndOptionalStorePackageUpdatesAsync();
// Save app state here
IAsyncOperationWithProgress<StorePackageUpdateResult, StorePackageUpdateStatus> installOperation =
updateManager.RequestDownloadAndInstallStorePackageUpdatesAsync(updates);
StorePackageUpdateResult result = await installOperation.AsTask();
// Under normal circumstances, app will terminate here
// Handle error cases here using StorePackageUpdateResult from above
}
Hacer que las actualizaciones sean obligatorias
En algunos casos, podría ser conveniente tener una actualización que se debe instalar en el dispositivo de un usuario, lo que lo convierte en verdaderamente obligatorio (por ejemplo, una corrección crítica para una aplicación que no puede esperar). En estos casos, hay medidas adicionales que puede tomar para que la actualización sea obligatoria.
- Implemente la lógica de actualización obligatoria en el código de la aplicación (tendría que realizarse antes de actualizarse obligatoriamente).
- Durante el envío al Centro de desarrollo, asegúrese de que está seleccionado el cuadro Hacer que esta actualización sea obligatoria .
Implementación del código de la aplicación
Para aprovechar al máximo las actualizaciones obligatorias, deberá realizar algunas modificaciones leves en el código anterior. Tendrás que usar el objeto StorePackageUpdate para determinar si la actualización es obligatoria.
private async bool CheckForMandatoryUpdates()
{
StoreContext updateManager = StoreContext.GetDefault();
IReadOnlyList<StorePackageUpdate> updates = await updateManager.GetAppAndOptionalStorePackageUpdatesAsync();
if (updates.Count > 0)
{
foreach (StorePackageUpdate u in updates)
{
if (u.Mandatory)
return true;
}
}
return false;
}
A continuación, deberá crear un cuadro de diálogo personalizado en la aplicación para informar al usuario de que hay una actualización obligatoria y que debe instalarla para continuar con el uso completo de la aplicación. Si el usuario rechaza la actualización, la aplicación podría degradar la funcionalidad (por ejemplo, impedir el acceso en línea) o finalizar completamente (por ejemplo, juegos solo en línea).
Centro de socios
Para asegurarte de que StorePackageUpdate muestra true para una actualización obligatoria, tendrá que marcar la actualización como obligatoria en el Centro de partners de la página Paquetes.
Un par de cosas que se deben tener en cuenta:
- Si un dispositivo vuelve a estar en línea después de que se haya reemplazado una actualización obligatoria con otra actualización no obligatoria, la actualización no obligatoria seguirá apareciendo en el dispositivo como obligatoria dada la actualización perdida antes de que fuera obligatoria.
- Actualmente, las actualizaciones controladas por el desarrollador y las actualizaciones obligatorias están limitadas a la Tienda.