マイ連絡先の通知

重要

マイ連絡先は、KB5034203 が適用された Windows 11 および Windows 10 バージョンではサポートされなくなりました。

マイ連絡先の通知は、表情豊かな簡単なジェスチャーを通じて、ユーザーが大切な人とつながるための新しい方法を提供します。 この記事では、アプリケーションでマイ連絡先の通知を設計および実装する方法を紹介します。 完全な実装例については、「マイ連絡先の通知のサンプル」を参照してください。

heart emoji notification

要件

  • Windows 10 と Microsoft Visual Studio 2019 以降。 インストールの詳細については、「Visual Studio のセットアップ」を参照してください。
  • C# またはこれに類似するオブジェクト指向プログラミング言語に関する基本的な知識。 C# で作業を開始するには、「"Hello, world" アプリを作成する」を参照してください。

しくみ

一般的なトースト通知の代わりに、マイ連絡先機能による通知を送信し、よりパーソナルなエクスペリエンスをユーザーに提供できます。 これは新しい種類のトーストであり、ユーザーのタスクバーにピン留めされた連絡先からマイ連絡先機能により送信されます。 通知を受信すると、通知開始を知らせるために、送信者の連絡先の画像がタスクバーでアニメーション表示され、サウンドが再生されます。 ペイロードで指定したアニメーションや画像は 5 秒間表示されます (ペイロードのアニメーションが 5 秒未満の場合は、5 秒が経過するまでループされます)。

サポートされている画像の種類

  • GIF
  • 静的な画像 (JPEG、PNG)
  • スプライトシート (垂直方向のみ)

Note

スプライトシートは、静的な画像 (JPEG や PNG) から作られたアニメーションです。 個々のフレームは、最初のフレームが一番上になるように垂直方向に並べられます (ただし、トースト ペイロードで別の開始フレームを指定することもできます)。 各フレームは同じ高さである必要があり、プログラムはフレームをループしてアニメーション シーケンスを作成します (垂直方向に重ねられた絵本のページを上から下へめくっていくようなものです)。 スプライトシートの例を次に示します。

rainbow spritesheet

通知パラメーター

マイ連絡先の通知はトースト通知フレームワークを使用しますが、トースト ペイロードに追加のバインド ノードが必要です。 この 2 番目のバインドには、次のパラメーターを含める必要があります。

experienceType="shoulderTap"

これは、トーストをマイ連絡先の通知として扱う必要があることを示します。

バインド内の画像ノードには、次のパラメーターを含める必要があります。

  • src
    • アセットの URI。 これは、HTTP/HTTPS の Web URI、msappx URI、またはローカル ファイルへのパスのいずれかです。
  • spritesheet-src
    • アセットの URI。 これは、HTTP/HTTPS の Web URI、msappx URI、またはローカル ファイルへのパスのいずれかです。 スプライトシート アニメーションにのみ必要です。
  • spritesheet-height
    • スプライトシートの高さ (ピクセル単位)。 スプライトシート アニメーションにのみ必要です。
  • spritesheet-fps
    • 1 秒あたりのフレーム数 (FPS)。 スプライトシート アニメーションにのみ必要です。 1 ~ 120 の値のみがサポートされています。
  • spritesheet-startingFrame
    • アニメーションを開始するフレーム番号。 スプライトシート アニメーションにのみ使用され、指定しない場合は既定で 0 になります。
  • alt
    • スクリーン リーダーのナレーションに使用されるテキスト文字列。

Note

アニメーション通知を作成する場合は、「src」パラメーターに静的な画像を指定することも必要です。 この画像は、アニメーション表示に失敗した場合のフォールバックとして使用されます。

また、最上位のトースト ノードに、送信元連絡先を指定する hint-people パラメーターを含める必要があります。 このパラメーターは次のいずれかの値を取ることができます。

  • メール アドレス
    • 例: mailto:johndoe@mydomain.com
  • 電話番号
  • リモート ID
    • 例: remoteid: 1234

Note

ContactStore API を利用するアプリで、StoredContact.RemoteId プロパティを使用して、PC に保存されている連絡先とリモートに保存されている連絡先とを関連付ける場合は、RemoteId プロパティの値が一定かつ一意であることが重要です。 つまり、リモート ID は単一のユーザー アカウントを一貫して識別する必要があり、PC 上の他の連絡先 (他のアプリが所有する連絡先を含む) のリモート ID と競合しないように一意のタグを含む必要があります。 アプリで使用されるリモート ID が一定かつ一意でない場合は、リモート ID をシステムに追加する前に、RemoteIdHelper クラスを使用して、どのリモート ID にも一意のタグを追加できます。 または、RemoteId プロパティをまったく使用しないで、代わりに連絡先のリモート ID を保存するカスタム拡張プロパティを作成することもできます。

2 番目のバインドとペイロードに加えて、最初のトーストのバインドで別のペイロードを含める必要があります。 通常のトーストに強制的に戻す必要がある場合、通知にはこの方法を使用します (詳細についてはこの記事の最後で説明)。

通知を作成する

マイ連絡先の通知テンプレートはトースト通知と同様に作成できます。

静的な画像ペイロードを使用してマイ連絡先の通知を作成する方法の例を次に示します。

<toast hint-people="mailto:johndoe@mydomain.com">
    <visual lang="en-US">
        <binding template="ToastGeneric">
            <text hint-style="body">Toast fallback</text>
            <text>Add your fallback toast content here</text>
        </binding>
        <binding template="ToastGeneric" experienceType="shoulderTap">
            <image src="https://learn.microsoft.com/windows/uwp/contacts-and-calendar/images/shoulder-tap-static-payload.png"/>
        </binding>
    </visual>
</toast>

通知を開始すると、次のように表示されます。

static image notification

アニメーション表示されるスプライトシート ペイロードを使用して通知を作成する方法の例を次に示します。 このスプライトシートは、フレーム高さが 80 ピクセルで、1 秒あたり 25 フレームでアニメーション表示されます。 開始フレームを 15 に設定し、「src」パラメーターで静的なフォールバック画像を指定します。 フォールバック画像は、スプライトシートのアニメーション表示に失敗した場合に使用されます。

<toast hint-people="mailto:johndoe@mydomain.com">
    <visual lang="en-US">
        <binding template="ToastGeneric">
            <text hint-style="body">Toast fallback</text>
            <text>Add your fallback toast content here</text>
        </binding>
        <binding template="ToastGeneric" experienceType="shoulderTap">
            <image src="https://learn.microsoft.com/windows/uwp/contacts-and-calendar/images/shoulder-tap-pizza-static.png"
                spritesheet-src="https://learn.microsoft.com/windows/uwp/contacts-and-calendar/images/shoulder-tap-pizza-spritesheet.png"
                spritesheet-height='80' spritesheet-fps='25' spritesheet-startingFrame='15'/>
        </binding>
    </visual>
</toast>

通知を開始すると、次のように表示されます。

spritesheet notification

通知を開始する

マイ連絡先の通知を開始するには、トースト テンプレートを XmlDocument オブジェクトに変換する必要があります。 XML ファイル (ここでは「content.xml」という名前) でトーストを定義したら、次のコードを使用して開始できます。

string xmlText = File.ReadAllText("content.xml");
XmlDocument xmlContent = new XmlDocument();
xmlContent.LoadXml(xmlText);

その後、次のコードを使用してトーストを作成し、送信できます。

ToastNotification notification = new ToastNotification(xmlContent);
ToastNotificationManager.CreateToastNotifier().Show(notification);

トーストをフォールバックとして表示する

マイ連絡先の通知が通常のトースト通知として表示される場合があります。 次の条件下で、マイ連絡先の通知のフォールバックとしてトーストが表示されます。

  • 通知の表示に失敗した
  • マイ連絡先の通知を受信者が有効にしていない
  • 送信者の連絡先が受信者のタスクバーにピン留めされていない

マイ連絡先の通知のフォールバックとしてトーストが表示される場合は、マイ連絡先固有の 2 番目のバインドは無視され、最初のバインドのみが使用されて、トーストが表示されます。 このため、最初のトースト バインドでフォールバック ペイロードを指定することが重要です。

関連項目