環境
- .NET 7
- VisualStudio 2022 Version 17.5.0 Preview 6.0
- CommunityToolkit.Maui 4.0
ライブラリ
NuGetで “CommunityToolkit.Maui” を検索し、インストールしてください。
Toast表示
まずはソース
using CommunityToolkit.Maui.Alerts;
using CommunityToolkit.Maui.Core;
namespace ToastTest;
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private async void OnCounterClicked(object sender, EventArgs e)
{
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
string text = "表示メッセージ";
ToastDuration duration = ToastDuration.Short; // or ToastDuration.Long
double fontSize = 24;
var toast = Toast.Make(text, duration, fontSize);
await toast.Show(cancellationTokenSource.Token);
// Toast.Make(text)でも可。その場合durationはShort, fontSizeは14がデフォルトで設定される
// var toast = Toast.Make(text);
// await toast.Show();
}
}
文字列、表示期間、フォントサイズを指定してトースト表示していきます。
AndroidとWindowsでは多少動作が異なるので以下にまとめます。
表示期間
Windowsの場合はまちまちで表示期間が定まっていない感じでした。
Android | Windows | |
ToastDuration.Short | 2秒 | まちまち |
ToastDuration.Long | 3.5秒 | まちまち |
フォントサイズ
Windowsでは一定のフォントサイズになりました。
Android | Windows | |
fontSize | 反映される | 反映されない |
その他
Androidではトースト表示をタッチしてももちろん何も起こりませんが、Windowsで通知をクリックするとアプリがもう1つ起動されるようです。
何かしら制御が必要そうではありますが、今のところよくわかってないです。
WindowsでToastを実行するとエラーが出る
{“Could not load file or assembly ‘Microsoft.Windows.AppNotifications.Builder.Projection, Version=1.2.0.0, Culture=neutral, PublicKeyToken=null’. The system cannot find the file specified.”:”Microsoft.Windows.AppNotifications.Builder.Projection, Version=1.2.0.0, Culture=neutral, PublicKeyToken=null”}
このようなエラーが出る場合は NuGet パッケージの管理 で Microsoft.WindowsAppSDK のバージョンを確認してください。
これが1.2以上でなければ上記のエラーになります。
私の場合はMicrosoft.WindowsAppSDKが1.1.5となっていたのでバージョンが合っていないのはわかったのですが、NuGet パッケージの管理 で変更することができませんでした。
こちらで https://github.com/CommunityToolkit/Maui/issues/946 やり取りされててcsprojを直接編集とか以下のコマンド実行したりとやってみましたが結局エラーは解消できませんでした。
PM> NuGet\Install-Package Microsoft.WindowsAppSDK -Version 1.2.230118.102
C:\Users\XXX\source\repos\ToastTest\ToastTest\ToastTest.csproj のパッケージを復元しています...
NuGet パッケージ Microsoft.WindowsAppSDK 1.2.230118.102 をインストールしています。
MSBuild ファイル C:\Users\XXX\source\repos\ToastTest\ToastTest\obj\ToastTest.csproj.nuget.g.props を生成しています。
MSBuild ファイル C:\Users\XXX\source\repos\ToastTest\ToastTest\obj\ToastTest.csproj.nuget.g.targets を生成しています。
アセット ファイルをディスクに書き込んでいます。パス: C:\Users\XXX\source\repos\ToastTest\ToastTest\obj\project.assets.json
C:\Users\XXX\source\repos\ToastTest\ToastTest\ToastTest.csproj を復元しました (489 ミリ秒)。
'Microsoft.WindowsAppSDK 1.1.5' が ToastTest から正常にアンインストールされました
'Microsoft.WindowsAppSDK 1.2.230118.102' が ToastTest に正常にインストールされました
NuGet の操作の実行に 343 ミリ秒 かかりました
経過した時間: 00:00:00.9347393
で、結局どうしたかというとVisual Studioのバージョンを更新したら Microsoft.WindowsAppSDK のバージョンがデフォルトで 1.2.221209.1 になり、WindowsでもToastが実行できるようになりました。
ちなみにVisual Studioのバージョンは 17.5.0 Preview 1.0(2022/11/08) -> 17.5.0 Preview 6.0(2023/02/07) に更新しました。
上手くいかない場合はVisual Studioのバージョンアップを試してみてください。
ヘルプ – 更新プログラムの確認からバージョンアップできます。
コメント