このトピックはまだ評価されていません - このトピックを評価する

Windows Phone のトースト

2013/12/05

対象: Windows Phone 8 | Windows Phone OS 7.1

トーストは、ニュースや気象警報などのできごとをユーザーに知らせるために、画面の最上部に表示されます。

このトピックは、次のセクションで構成されています。

次の図に、架空の Contoso アプリにより作成されたトースト通知を示します。

AP_Toast_ToastElements

トースト通知は、ユーザーが右にフリックして消去しない限り、約 10 秒間表示されます。ユーザーがトーストをタップした場合、既定では、アプリのスタート画面が表示されます。または、アプリで起動する画面を指定することも選択できます。

のないデバイスでは、ターゲット アプリが前面で実行されているとき、トースト通知が表示されません。 のあるデバイスでは、ターゲット アプリが前面で実行されているときにはトースト通知が表示されますが、通話やロック画面など、その他のアクティビティによって隠されます。

Windows Phone では、ユーザーが選択したテーマの色をトーストの背景色として使用します。開発者は、アプリのアイコン、タイトル、およびコンテンツ文字列を使用してトースト通知を作成できます。トーストの各側面に関連付けられている API 名は、トーストを作成した手段が、コードからローカル、外部から、プッシュ通知の使用、クラウド サービスからのいずれかに応じて異なります。正確な API 名については、このトピックで後に示す図を参照してください。

表示できるテキストの量は、トースト メッセージに使用される文字と、Title (太字) および Content (太字でない) の長さによって決まります。Title のみを設定する場合、切り捨てられずに表示できるのは約 40 文字です。Content のみを設定する場合は、約 47 文字を表示できます。トーストを TitleContent に均等に配分すると、約 41 文字を表示できます。トーストに収まらないテキストは切り捨てられます。

Windows Phone では、小さいアプリ アイコンが Title および Content の左側に表示されます。アプリに関連付けるアイコンは定義できますが、トースト通知の際に別のアイコンを渡すことはできません。

トースト通知は 2 つの方法で作成できます。ローカルでコードから作成するか、クラウド サービスを使用して外部から作成します。トースト通知を作成するために選んだ方法によって、プロパティ名が異なります。

コードを使用してトースト通知を作成する場合

コードを使用してトースト通知を作成する場合に使用するプロパティ名を、次の図に示します。アプリに関連付けるアイコンを定義することはできますが、次の図で説明するように、[アプリ リスト アイコン] の代わりに別のアイコンをトースト通知で渡すことはできません。

Creating a toast notification using code

次のコード例に、ローカル コードを使用してトースト通知を作成する場合に使用するプロパティ名を示します。

// Create a toast notification.
// The toast notification will not be shown if the foreground app is running.
ShellToast toast = new ShellToast();
toast.Title = "[title]";
toast.Content = "[content]";
toast.Show();

クラウド サービスを使用してトースト通知を作成する場合

クラウド サービスを使用してトースト通知を作成する場合に使用するプロパティ名を、次の図に示します。アプリに関連付けるアイコンを定義することはできますが、次の図で説明するように、[アプリ リスト アイコン] の代わりに別のアイコンをトースト通知で渡すことはできません。

Creating a toast notification using a cloud servic

次のコード例に、クラウド サービスを使用してトースト通知を作成する場合に使用する XML ペイロードを示します。

string toastMessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<wp:Notification xmlns:wp=\"WPNotification\">" +
    "<wp:Toast>" +
        "<wp:Text1>[string]</wp:Text1>" +
        "<wp:Text2>[string]</wp:Text2>" +
        "<wp:Param>[string]</wp:Param>" +
    "</wp:Toast>" +
"</wp:Notification>";

クラウド サービスを使用する場合のトースト通知ペイロードの詳細については、「Windows Phone のプッシュ通知の送信」を参照してください。クラウド サービスを使用してトースト通知を作成する方法についての詳しいチュートリアルは、「Windows Phone 用のトースト通知を送受信する方法」を参照してください。

トースト通知による画面へのディープ リンク

トースト通知を作成する方法に応じて、Param 要素または NavigateUri プロパティを使用して、アプリ内の特定の画面にディープ リンクすることができます。ここでは、使用できる書式について説明します。以下の例で使用する文字列は、256 文字以内でなければなりません。

  • /page1.xaml - アプリの起動時に移動先となる画面を定義します。文字列の先頭に "/" を付ける必要があります。

  • /page1.xaml?value1=1234 &amp;value2=9876 - アプリの起動時に移動先となる画面と、名前/値ペアの情報を定義します。文字列の先頭に "/" を付ける必要があります。

  • ?value1=1234 &amp;value2=9876 - アプリの既定の開始画面に渡される名前/値ペアの情報を含みます。文字列の先頭に "?" を付ける必要があります。

URI パラメーターの抽出

通常、ユーザーがトースト通知をタップし、デバイスで実行されているクライアント アプリの指定されたページに移動した後、OnNavigatedTo イベント ハンドラーでトースト通知ペイロードの URI パラメーターの値が解析されます。

        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

            string strVal1 = this.NavigationContext.QueryString["value1"];
            string strVal2 = this.NavigationContext.QueryString["value2"];

        }

(OS バージョン番号 8.0.10492) では、トースト通知にカスタム サウンドを提供する機能が導入されています。サウンド ファイルは WAV、WMA、または MP3 形式になります。長さは 10 秒以内にする必要があります。アプリのインストール ディレクトリまたはローカルのストレージ フォルダーに保存する必要があります。

コードから起動したトーストにカスタム サウンドを使用するには、現在のデバイスが で実行されていることを最初に判断する必要があります。カスタム サウンドがサポートされることが判断できたら、リフレクションを使用し、ShellToast クラスの新しい Sound プロパティにアクセスする必要があります。コードで次のヘルパー メソッドを使用して OS バージョンを判断し、リフレクションを使用してプロパティ値を設定します。

// Set the minimum version number that supports custom toast sounds
private static Version TargetVersion = new Version(8, 0, 10492);
        
// Function to determine if the current device is running the target version.
public static bool IsTargetedVersion { get { return Environment.OSVersion.Version >= TargetVersion; } }
       
// Function for setting a property value using reflection.
private static void SetProperty(object instance, string name, object value)
{
    var setMethod = instance.GetType().GetProperty(name).GetSetMethod();
    setMethod.Invoke(instance, new object[] { value });
}

次の例では、これらのヘルパー メソッドを使用し、カスタム サウンドを使用してトーストを表示する方法を示します。デバイスが Sound プロパティをサポートすることを確認した後にこのプロパティに空の文字列を設定すると、音を鳴らさないトーストを表示できます。

public void ShowToast(bool useCustomSound, bool useWavFormat, bool doSilentToast)
{
    ShellToast toast = new ShellToast();
    toast.Title = "[title]";
    toast.Content = "[content]";

    //If the device is running the right version and a custom sound is requested
    if ((IsTargetedVersion) && (useCustomSound))
    {
        if (useWavFormat)
        {
            //Do the reflection to get the new Sound property added to the toast
            SetProperty(toast, "Sound", new Uri("MyToastSound.wav", UriKind.RelativeOrAbsolute));
        }
        else
        {
            //Do the reflection to get the new Sound property added to the toast
            SetProperty(toast, "Sound", new Uri("MyToastSound.mp3", UriKind.RelativeOrAbsolute));
        }
    }
    // For a silent toast, check the version and then set the Sound property to an empty string.
    else if ((IsTargetedVersion) && (doSilentToast))
    {
        //Do the reflection to get the new Sound property added to the toast
        SetProperty(toast, "Sound", new Uri("", UriKind.RelativeOrAbsolute));
    }


    toast.Show();
}

XML ペイロードに Sound 要素を含めるだけで、クラウド サービスを介して起動したトーストにカスタム サウンドを使用できます。無音のトーストを起動するには、Silent 属性を true に設定します。次の例では、カスタム サウンドを使用するトーストの XML ペイロードを作成する方法を示します。前の例でバージョンをチェックしたヘルパー メソッド、IsTargetedVersion を再び利用します。

public void ShowToastWithCloudService(bool useCustomSound, bool useWavFormat, bool doSilentToast)
{
    StringBuilder toastMessage = new StringBuilder();
    toastMessage.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?><wp:Notification xmlns:wp=\"WPNotification\"><wp:Toast>");
    toastMessage.Append("<wp:Text1>Toast Title</wp:Text1>");
    toastMessage.Append("<wp:Text2>Toast Content</wp:Text2>");
    if ((IsTargetedVersion) && (useCustomSound))
    {
        if (useWavFormat)
        {
            toastMessage.Append("<wp:Sound>MyToastSound.wav</wp:Sound>");
        }
        else
        {
            toastMessage.Append("<wp:Sound>MyToastSound.mp3</wp:Sound>");
        }
    }
    else if ((IsTargetedVersion) && (doSilentToast))
    {
        toastMessage.Append("<wp:Sound Silent=\"true\"/>");
    }
    toastMessage.Append("</wp:Toast></wp:Notification>");
}

Parameter プロパティを設定するトースト通知は、Windows Phone OS 7.1 以降が稼働するデバイスに対してのみ送信できます。Parameter プロパティが設定された通知を Windows Phone OS 7.0 デバイスに送信すると、PushErrorTypePayloadFormatInvalid エラーが発生し、チャネルは閉じられます。

この情報は役に立ちましたか。
(残り 1500 文字)
フィードバックをいただき、ありがとうございました
表示:
© 2014 Microsoft. All rights reserved.