バッジ
開発者は Badge
API を使用して、ホーム画面にアプリ アイコンのバッジ番号を設定できます。
Badge
API を使用するには、次の前提条件が必要になります。
Android デバイスをサポートするために必要な追加の構成。 以下の「Android」のセクションを参照してください。
構文
C#
Badge
API は、C# では次のように使用できます。
void SetCount(uint value)
{
Badge.Default.SetCount(value);
}
メソッド
メソッド | 説明 |
---|---|
SetCount | バッジ数を設定します。 |
依存関係の登録
.NET MAUI 内の組み込みの依存関係挿入レイヤーを使用する場合は、まず、MauiProgram
内に Badge
実装を登録する必要があります。
次の変更で MauiProgram.cs
を更新します。
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.UseMauiCommunityToolkit();
builder.Services.AddSingleton<IBadge>(Badge.Default);
return builder.Build();
}
}
これで、次のようにサービスを挿入できます。
public partial class MainPage : ContentPage
{
private readonly IBadge badge;
public MainPage(IBadge badge)
{
InitializeComponent();
this.badge = badge;
}
public void SetCount(uint value)
{
badge.SetCount(value);
}
}
例
Badge
API の動作例は、.NET MAUI Community Toolkit サンプル アプリケーションにあります。
API
Badge
API のソース コードは、.NET MAUI Community Toolkit の GitHub リポジトリにあります。
Android
警告
Android デバイスの製造元やランチャーの状況が多様であるため、各種デバイスで想定外のさまざまな方法でアプリ バッジ数が表示されたり、表示されなかったりする場合があることに注意してください。
Android の世界では、すべてに対応できる万能な方法はめったにありません。 この原則は、アプリケーション バッジ数を設定する場合にも当てはまります。この機能のために Android システムが提供する標準化された API がないためです。
さまざまな Android ランチャーが、独自の方法でバッジ数を実装することを選択しました。 Nova Launcher や Microsoft Launcher などの人気のあるランチャーを含むほとんどのランチャーには、この機能を処理するための固有の方法があります。
そのため、アプリケーションのバッジ通知がこれらの多様なランチャー間で正しく表示されるようにするには、ランチャーごとに固有のコード実装をプログラミングする必要があります。 つまり、各ランチャーが持つ固有のバッジ数表示メカニズムの特定の要件にコードを適応させます。
これは、ユニバーサルなアプリケーション エクスペリエンスを実現するための道のりにおいて、開発者が克服しなければならないハードルと考えてください。 これは、多様性とカスタマイズを促進する Android の柔軟なエコシステムによるものです。
最も人気のある Android ランチャーに対応することは可能ですが、市場で利用可能なランチャーの膨大な数を考えると、すべてのランチャーに対応することはほとんど不可能であることに注意することが重要です。
CommunityToolkit を使用すれば、サポートしたいプロバイダーに独自のバッジ カウンター ロジックを実装できます。 これを行う方法を以下に示します。
CommunityToolkit.Maui.ApplicationModel.IBadgeProvider
インターフェイスを実装します。 例としてSamsungBadgeProvider
の実装 (SamsungBadgeProvider) を参照してください。- Android の
MainApplication
コンストラクターで、ランチャー識別子をIBadgeProvider
実装に設定します。 たとえば、Samsung ランチャーでは次のようになります。
public MainApplication(IntPtr handle, JniHandleOwnership ownership)
: base(handle, ownership)
{
var samsungProvider = new SamsungBadgeProvider();
BadgeFactory.SetBadgeProvider("com.sec.android.app.launcher", samsungProvider);
BadgeFactory.SetBadgeProvider("com.sec.android.app.twlauncher", samsungProvider);
}
- 必須のアクセス許可を
AndroidManifest.xaml
に追加します。 たとえば、Samsung ランチャーでは次のようになります。
<uses-permission android:name="com.sec.android.provider.badge.permission.READ" />
<uses-permission android:name="com.sec.android.provider.badge.permission.WRITE" />
これらの変更は、お使いのアプリケーションが Android ベースの Samsung デバイスで動作し、アプリ アイコンのバッジ番号を正しく更新するのに十分です。 また、アプリケーション内で他のランチャーのサポートの実装を開始するための開始点とその方法に関するガイドも提供します。
このため、コードは理想的な実装を提供することを目的としていますが、Android が期待どおりに動作しない場合があります。
特定のユース ケースにおけるアプリ バッジ通知の動作を最大限正確に評価するために、さまざまなデバイスとランチャーでアプリを徹底的にテストすることを強くお勧めします。
.NET MAUI Community Toolkit