アプリの操作
この記事では、アプリのショートカットを作成して応答できるようにする .NET マルチプラットフォーム アプリ UI (.NET MAUI) IAppActions インターフェイスの使用方法について説明します。 アプリのショートカットは、アプリ開発者としてアプリを起動する追加の方法をユーザーに提供できるため、ユーザーにとって役立ちます。 たとえば、メールと予定表アプリを開発している場合は、2 つの異なるアプリ アクションを表示できます。1 つはアプリを予定表の現在の日に直接開き、もう 1 つはメールの受信トレイ フォルダーを開くアクションです。
IAppActions
インターフェイスの既定の実装は、AppActions.Current プロパティを通じて利用できます。 IAppActions
インターフェイスと AppActions
クラスはどちらも Microsoft.Maui.ApplicationModel
名前空間に含まれています。
作業の開始
AppActions
機能にアクセスするには、次のプラットフォーム固有の設定が必要です。
Platforms/Android/MainActivity.cs ファイルで、OnResume
と OnNewIntent
のオーバーライドを MainActivity
クラスに追加し、次の IntentFilter
属性を追加します。
[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);
}
}
アクションを作成する
アプリ アクションはいつでも作成可能ですが、多くの場合、アプリの起動時に作成されます。 アプリ アクションを設定するには、MauiProgram.cs ファイル内の MauiAppBuilder オブジェクトに対して ConfigureEssentials(MauiAppBuilder, Action<IEssentialsBuilder>) メソッドを呼び出します。 アプリ アクションを有効にするには、IEssentialsBuilder オブジェクトで呼び出す必要があるメソッドが 2 つあります。
-
このメソッドは、アクションを作成します。 アクションを一意に識別するための
id
文字列と、ユーザーに表示されるtitle
文字列が必要です。 必要に応じて、サブタイトルとアイコンを指定できます。 -
このメソッドに渡されたデリゲートは、ユーザーがアプリのアクションを呼び出すときに呼び出され、アプリ アクションのインスタンスが提供されます。 アクションの
Id
プロパティを確認して、ユーザーがどのアプリ アクションを開始したかを確認します。
次のコードは、アプリの起動時にアプリ アクションを構成する方法を示しています。
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();
}
アクションに応答する
アプリ アクションが設定された後、ユーザーが呼び出すすべてのアプリ アクションに対して OnAppAction
メソッドが呼び出されます。 それらを区別するには、Id
プロパティを使用します。 次のコードは、アプリ アクションの処理を示しています。
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);
}
});
}
アプリ アクションがサポートされているかどうかを確認する
アプリの起動時またはアプリの使用中にアプリ アクションを作成するときは、AppActions.Current.IsSupported
プロパティを読み取ってアプリ アクションがサポートされているかどうかを確認してください。
起動ブートストラップの外側にアプリ アクションを作成する
アプリ アクションを作成するには、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") });
}
アプリのアクションに関する詳細情報
アプリ アクションが特定のバージョンのオペレーティング システムでサポートされていない場合は、FeatureNotSupportedException がスローされます。
AppAction(String, String, String, String) コンストラクターを使用して、アプリ アクションの次の側面を設定します。
- Id: アクションのタップに応答するために使用される一意の識別子。
- Title: 表示するタイトル。
- Subtitle: タイトルの下に表示するサブタイトルがサポートされている場合。
- Icon: 各プラットフォームで対応するリソース ディレクトリのアイコンと一致している必要があります。
ホーム画面上のアプリ アクション
Get アクション
AppActions.Current.GetAsync
を呼び出すことによって、現在のアプリ アクションの一覧を取得できます。
.NET MAUI