Share via


アプリの操作

Browse sample. サンプルを参照する

この記事では、アプリのショートカットを作成して応答できるようにする .NET マルチプラットフォーム アプリ UI (.NET MAUI) IAppActions インターフェイスの使用方法について説明します。 アプリのショートカットは、アプリ開発者としてアプリを起動する追加の方法をユーザーに提供できるため、ユーザーにとって役立ちます。 たとえば、メールと予定表アプリを開発している場合は、2 つの異なるアプリ アクションを表示できます。1 つはアプリを予定表の現在の日に直接開き、もう 1 つはメールの受信トレイ フォルダーを開くアクションです。

IAppActions インターフェイスの既定の実装は、AppActions.Current プロパティを通じて利用できます。 IAppActions インターフェイスと AppActions クラスはどちらも Microsoft.Maui.ApplicationModel 名前空間に含まれています。

作業の開始

AppActions 機能にアクセスするには、次のプラットフォーム固有の設定が必要です。

Platforms/Android/MainActivity.cs ファイルで、OnResumeOnNewIntent のオーバーライドを 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 つあります。

  1. AddAppAction

    このメソッドは、アクションを作成します。 アクションを一意に識別するための id 文字列と、ユーザーに表示される title 文字列が必要です。 必要に応じて、サブタイトルとアイコンを指定できます。

  2. OnAppAction

    このメソッドに渡されたデリゲートは、ユーザーがアプリのアクションを呼び出すときに呼び出され、アプリ アクションのインスタンスが提供されます。 アクションの 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)
        {
            await Application.Current.MainPage.Navigation.PopToRootAsync();
            await Application.Current.MainPage.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: 各プラットフォームで対応するリソース ディレクトリのアイコンと一致している必要があります。

App actions on home screen.

Get アクション

AppActions.Current.GetAsync を呼び出すことによって、現在のアプリ アクションの一覧を取得できます。