2011-07-06 10 views
0

私のプロジェクトでプッシュ通知を実装する必要があります。 送信者(Windows電話ウィンドウアプリケーション)、wcfサービスとクライアント(Windows Phone applcation)があります。Windowsのプッシュ通知を確立する電話7

どのように送信者を置き換えて、私のURLを使ってクライアントから通知を送信して受信できますか?

私は、送信者をクライアントと並列に実行し、データをクライアントに連続して送信するエミュレータ自体のアプリケーションであることを望みます。

誰もが道を伝えることができるようなアプリケーションを開発する方法を

+0

申し訳ありませんが、私はあなたが意味することに従っていません。あなたの質問を明確にしてください。また、通知は一方向であるため、「クライアントからの通知の送受信」には使用できません。 – ZombieSheep

+0

私は今質問を編集しますか? – curiosity

答えて

1

プッシュ通知機能を使用して、2つのWP7アプリを使用してメッセージを相互にやり取りするように見えているようです。あれは正しいですか?

サブスクリプションが成功したときに返送された一意のURIを使用して、プッシュ通知サービス(MSホスト)に各デバイスを依頼する必要があります。 SL3/4はHttpWebRequestオブジェクトを作成することができるので、送信する正しいパッケージを作成できるはずですが、難しい点は投稿を送信するデバイスのURIを取得する方法になります。通常、投稿は購読者に送信されます。購読者は購読段階で返されたURIを知っています。

public bool sendTileUpdate(string tileText, string url, string image) 
    { 
     string TilePushXML = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + 
       "<wp:Notification xmlns:wp=\"WPNotification\">" + 
       "<wp:Tile>" + 
       "<wp:BackgroundImage>{2}</wp:BackgroundImage>" + 
       "<wp:Count>{0}</wp:Count>" + 
       "<wp:Title>{1}</wp:Title>" + 
       "</wp:Tile>" + 
       "</wp:Notification>"; 

     try 
     { 
      HttpWebRequest sendNotificationRequest = (HttpWebRequest)WebRequest.Create(url); 
      sendNotificationRequest.Method = "POST"; 
      sendNotificationRequest.Headers = new WebHeaderCollection(); 
      sendNotificationRequest.ContentType = "text/xml"; 

      // Tile 
      sendNotificationRequest.Headers.Add("X-WindowsPhone-Target", "token"); 
      sendNotificationRequest.Headers.Add("X-NotificationClass", "1"); 

      string str = string.Format(TilePushXML, "", tileText, image); 

      byte[] strBytes = new UTF8Encoding().GetBytes(str); 
      sendNotificationRequest.ContentLength = strBytes.Length; 
      using (Stream requestStream = sendNotificationRequest.GetRequestStream()) 
      { 
       requestStream.Write(strBytes, 0, strBytes.Length); 
      } 
      HttpWebResponse response = (HttpWebResponse)sendNotificationRequest.GetResponse(); 
      string notificationStatus = response.Headers["X-NotificationStatus"]; 
      string deviceConnectionStatus = response.Headers["X-DeviceConnectionStatus"]; 
      return true; 
     } 
     catch (Exception e) 
     { 
      return false; 
     } 
    } 

私はこれがTileNotificationですけど、原則は同じです:

私のWCFはWCFはWCFメソッドが呼び出されたときに送信されるデバイスのURIを、知っている場合、コードはのみ動作しホステッド。

私はマンゴー(WP7.1 & SL4)がsocketsをサポートし、これはあなたのデバイスが通信するためのより適切な方法であるかもしれないことを理解します!

幸運、

Jason。

関連する問題