2

Windows Phone 7.5 のプッシュ通知をテストしています。3 つの異なるプッシュ タイプ (Toast、Tile、Raw) が正常に動作し、単体テストと Web アプリケーションから問題なくメッセージを送信し、WP アプリケーションでそれらを受信できます。プッシュ通知に追加のプロパティを追加する機能が必要であり、Raw プッシュ タイプはこれを完全に実行します。カスタム キー/値ペアまたはその他のものをプッシュ メッセージに追加して電話アプリで抽出できます。ただし、アプリケーションが実行されていて、電話アプリケーションが実行されていないときにユニットテストが失敗した場合にのみ機能することがわかりました (ユニットテストで抑制された通知ステータスが受信されます) (これも確認するドキュメントを確認してください)。トーストまたはタイル メッセージに追加のプロパティ (キー/値) を追加する方法はありますか、または別の方法で raw を使用できる方法はありますか? トースト通知はタイトル プロパティと実際のメッセージ プロパティに限定されているようですが、追加のデータを追加する必要があります。

誰かが提案/回避策を持っているかどうか疑問に思っていますか?

4

2 に答える 2

7

私が使用する一般的な方法は、電話で使用できるデータをメッセージに埋め込んで、直接デバイスに通知を最初に送信することです。アプリケーションが現在実行されている場合は、生のメッセージの内容を処理して、電話ですぐに利用できます。ただし、アプリケーションが電話で現在実行されていない場合は、プッシュ サーバーからメッセージを配信できなかったという通知を受け取ります。この応答を受け取ったら、Toast / Tile 通知を送信します。

トースト通知では、アクセスできる唯一のパラメータ化は、アプリケーションを起動する URI です。これはwp:param、メッセージのノードで指定されます。例えば。

<wp:Notification xmlns:wp="WPNotification">
  <wp:Toast>
    <wp:Text1>Toast Title</wp:Text1>
    <wp:Text2>Toast sub title</wp:Text2>
    <wp:Param>/MainPage.xaml?LaunchedFrom=A%20Toast%20Notification</wp:Param>
  </wp:Toast>
</wp:Notification>

ユーザーがこのトースト通知をタップすると、アプリケーションが起動して に移動しMainPage.xamlます。を介して渡されたクエリ文字列にアクセスできますNavigationContext.QueryString

注: このwp:Paramノードは、Mango (およびそれ以降) のデバイスにのみ送信できます。さらに、コンテンツ全体が 256 文字未満である必要があります。そうしないと、PushErrorTypeMessageBadContentエラーが発生します。(これを指摘してくれた Ritch Melton に感謝します)。詳細については、MSDNの Windows Phone のプッシュ通知の送信に関するページを参照してください。

于 2012-04-19T23:54:09.043 に答える
0

おわかりのように、Microsoft プッシュ通知サービスは、送受信できるメッセージの種類について非常に厳密です。これらのプッシュ通知の目的は、単純なプッシュ更新を提供することであり、大量のデータを提供することではありません。柔軟な Raw 型は、次のことを発見するまで、法案に適合するようです。

直接通知を使用して、アプリケーションに情報を送信できます。アプリケーションが現在実行されていない場合、直接通知は Microsoft プッシュ通知サービスで破棄され、デバイスに配信されません。

ただし、アプリケーションにトースト通知を送信すると、ユーザーがトーストをクリックすると、アプリケーションが開始されます。アプリケーションが起動したら、サービスを確認し、送信しようとしているデータを Web サービスまたはその他のリモート メカニズムから取得する必要があります。

于 2012-04-19T23:53:25.053 に答える