Acciones de la aplicación
En este artículo se describe cómo puedes usar la interfaz IAppActions de .NET Multi-platform App UI (.NET MAUI), que permite crear y responder a los accesos directos de la aplicación. Los accesos directos de la aplicación son útiles para los usuarios, ya que permiten, como desarrollador de la aplicación, presentarlos con formas adicionales de iniciar tu aplicación. Por ejemplo, si desarrollaste un correo electrónico y una aplicación de calendario, podrías presentar dos acciones de aplicación diferentes, una para abrir la aplicación directamente el día actual del calendario y otra para abrirla en la carpeta bandeja de entrada de correo electrónico.
La implementación predeterminada de la interfaz IAppActions
está disponible a través de la propiedad AppActions.Current. Tanto la interfaz IAppActions
como la clase AppActions
están contenidas en el espacio de nombres Microsoft.Maui.ApplicationModel
.
Introducción
Para acceder a la funcionalidad de AppActions
, se requiere la siguiente configuración específica para la plataforma.
En el archivo Platforms/Android/MainActivity.cs, agrega las invalidaciones OnResume
y OnNewIntent
a la clase MainActivity
y el atributo IntentFilter
siguiente:
[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
[IntentFilter(new[] { Platform.Intent.ActionAppAction },
Categories = new[] { global::Android.Content.Intent.CategoryDefault })]
public class MainActivity : MauiAppCompatActivity {
protected override void OnResume()
{
base.OnResume();
Platform.OnResume(this);
}
protected override void OnNewIntent(Android.Content.Intent intent)
{
base.OnNewIntent(intent);
Platform.OnNewIntent(intent);
}
}
Creación de acciones
Las acciones de aplicación se pueden crear en cualquier momento, pero se crean a menudo cuando se inicia una aplicación. Para configurar acciones de aplicación, invoca el método ConfigureEssentials(MauiAppBuilder, Action<IEssentialsBuilder>) en el objeto MauiAppBuilder en el archivo MauiProgram.cs. Hay dos métodos a los que debe llamar en el objeto IEssentialsBuilder para habilitar una acción de aplicación:
-
Este método crea una acción. Toma una cadena
id
para identificar de forma única la acción y una cadenatitle
que se muestra al usuario. Opcionalmente puedes proporcionar un elemento subtitle y un elemento icon. -
Se llama al delegado pasado a este método cuando el usuario invoca una acción de aplicación, siempre que se proporcione la instancia de acción de la aplicación. Compruebe la propiedad
Id
de la acción para determinar qué acción de aplicación inició el usuario.
En el código siguiente se muestra cómo configurar las acciones de la aplicación en el inicio de la aplicación:
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
})
.ConfigureEssentials(essentials =>
{
essentials
.AddAppAction("app_info", "App Info", icon: "app_info_action_icon")
.AddAppAction("battery_info", "Battery Info")
.OnAppAction(App.HandleAppActions);
});
return builder.Build();
}
Respuesta a acciones
Una vez configuradas las acciones de la aplicación, se llama al método OnAppAction
para todas las acciones de aplicación invocadas por el usuario. Usa la propiedad Id
para diferenciarlas. En el código siguiente se muestra cómo controlar una acción de la aplicación:
public static void HandleAppActions(AppAction appAction)
{
App.Current.Dispatcher.Dispatch(async () =>
{
var page = appAction.Id switch
{
"battery_info" => new SensorsPage(),
"app_info" => new AppModelPage(),
_ => default(Page)
};
if (page != null)
{
// Assume an app with a single window.
await Application.Current.Windows[0].Page.Navigation.PopToRootAsync();
await Application.Current.Windows[0].Page.Navigation.PushAsync(page);
}
});
}
Comprobación de compatibilidad de las acciones de la aplicación
Al crear una acción de aplicación, ya sea durante el inicio de la aplicación o mientras se usa la aplicación, comprueba si las acciones de la aplicación son compatibles con la lectura de la propiedad AppActions.Current.IsSupported
.
Creación de una acción de la aplicación fuera del arranque de inicio
Para crear acciones de aplicación, llama al método SetAsync:
if (AppActions.Current.IsSupported)
{
await AppActions.Current.SetAsync(new[] { new AppAction("app_info", "App Info", icon: "app_info_action_icon"),
new AppAction("battery_info", "Battery Info") });
}
Más información sobre las acciones de la aplicación
Si las acciones de la aplicación no son compatibles con la versión específica del sistema operativo, se producirá un elemento FeatureNotSupportedException.
Usa el constructor AppAction(String, String, String, String) para establecer los siguientes aspectos de una acción de aplicación:
- Id: identificador único que se usa para responder a la acción pulsar.
- Title: el elemento title visible que se va a mostrar.
- Subtitle: si se admite un elemento subtitle para mostrar bajo el elemento title.
- Icon: debe coincidir con los iconos del directorio de recursos correspondiente en cada plataforma.
Lista de acciones
Se puede obtener la lista actual de las acciones de la aplicación mediante una llamada a AppActions.Current.GetAsync
.