2015-05-26 4 views
-3

Я новичок в windows phone.Iam, разрабатывая одно приложение в этом приложении. Я хочу отправить pushnotifications.how, чтобы отправлять и получать pushnotifications в Windows Phone 8 с помощью C# .please help me.Как отправить push-уведомления windows phone 8 app?

public string SendNotificationToWindows(string message, string notificationId) 
     { 
      try 
      { 

       //string subscriptionUri = "http://db3.notify.live.net/throttledthirdparty/01.00/AwYAAACKB3Noan4l%2bojXM5%2f3TDodPTegXbZxtTAzRktj3eWFOYmjjN1FPIdkuduXrwYZByFKLxy1gXy8rCmf1FSM6GH92rva7ecbQ%2b1%2bnGYxLWxoAI0GL03fZbV29p%2fu%2fJYrHQI%3d"; 
       string subscriptionUri = "http://db3.notify.live.net/throttledthirdparty/01.00/aHR0cHM6Ly9zaW4ubm90aWZ5LndpbmRvd3MuY29tLz90b2tlbj1Bd1lBQUFEQjE1TzJMQWMlMmZBQldlUlpQendHMlglMmJRNWlPbzVUOVF3UUtXeUFQJTJic2clMmZFREhuSHM0bDBVN2tFN2prSXVJYU1hWEZIdmJYR2t6cEpQJTJiaCUyYldJSVJFTjBSd244TzJRNFV5RUs0OFJKZDdLSWJPeXVUMXFNWVNwa0Y3bmlBak5kZmslM2Q="; 

       //string subscriptionUri = "https://hk2.notify.windows.com/?token=AwYAAACKB3Noan4l%2bojXM5%2f3TDodPTegXbZxtTAzRktj3eWFOYmjjN1FPIdkuduXrwYZByFKLxy1gXy8rCmf1FSM6GH92rva7ecbQ%2b1%2bnGYxLWxoAI0GL03fZbV29p%2fu%2fJYrHQI%3d"; 


       //string subscriptionUri = "http://sn1.notify.live.net/throttledthirdparty/01.00/aHR0cHM6Ly9zaW4ubm90aWZ5LndpbmRvd3MuY29tLz90b2tlbj1Bd1lBQUFEckVzRmdhR2phMXQ1aVo5MGdvRzAzejR5cE1SJTJiMHIwR2ZQc0Q0U0xzYnJOY2V3JTJmdU5pek1kZER4ZG9UdE5CM05PbjQ4dU9yUktzakN0U2JJa2lObmdBQVljQzdScDZ0blRBZlBDWjB4OWlZMDJRSDF3JTJieHM1ZzVMSTlWSXdGZWslM2Q="; 

       // string subscriptionUri = "https://sin.notify.windows.com/?token=AwYAAADrEsFgaGja1t5iZ90goG03z4ypMR%2b0r0GfPsD4SLsbrNcew%2fuNizMddDxdoTtNB3NOn48uOrRKsjCtSbIkiNngAAYcC7Rp6tnTAfPCZ0x9iY02QH1w%2bxs5g5LI9VIwFek%3d"; 




       var sendNotificationRequest = (HttpWebRequest)WebRequest.Create(subscriptionUri); 

       // Create an HTTPWebRequest that posts the toast notification to the Microsoft Push Notification Service. 
       // HTTP POST is the only method allowed to send the notification. 
       sendNotificationRequest.Method = "POST"; 

       // The optional custom header X-MessageID uniquely identifies a notification message. 
       // If it is present, the same value is returned in the notification response. It must be a string that contains a UUID. 
       // sendNotificationRequest.Headers.Add("X-MessageID", "<UUID>"); 

       // Create the toast message. 
       var toastMessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + 
        "<wp:Notification xmlns:wp=\"WPNotification\">" + 
         "<wp:Toast>" + 
          "<wp:Text1>" + message + "</wp:Text1>" + 
         "</wp:Toast> " + 
        "</wp:Notification>"; 
       // Set the notification payload to send. 
       byte[] notificationMessage = Encoding.Default.GetBytes(toastMessage); 

       // Set the web request content length. 
       sendNotificationRequest.ContentLength = notificationMessage.Length; 
       sendNotificationRequest.ContentType = "text/xml"; 
       sendNotificationRequest.Headers.Add("X-WindowsPhone-Target", "toast"); 
       sendNotificationRequest.Headers.Add("X-NotificationClass", "2"); 


       using (var requestStream = sendNotificationRequest.GetRequestStream()) 
       { 
        requestStream.Write(notificationMessage, 0, notificationMessage.Length); 
       } 

       // Send the notification and get the response. 
       var response = (HttpWebResponse)sendNotificationRequest.GetResponse(); 
       var notificationStatus = response.Headers["X-NotificationStatus"]; 
       var notificationChannelStatus = response.Headers["X-SubscriptionStatus"]; 
       var deviceConnectionStatus = response.Headers["X-DeviceConnectionStatus"]; 

       // Display the response from the Microsoft Push Notification Service. 
       // Normally, error handling code would be here. In the real world, because data connections are not always available, 
       // notifications may need to be throttled back if the device cannot be reached. 
       var rep = notificationStatus + " | " + deviceConnectionStatus + " | " + notificationChannelStatus; 
       return rep; 
      } 
      catch (Exception ex) 
      { 
       return ex.ToString(); 
       // TextBoxResponse.Text = "Exception caught sending update: " + ex.ToString(); 
      } 

это моя служба Посылаю на URI на эту услугу, но я не знаю, когда пришел ответ на это отбросит exeception «Удаленный сервер возвратил ошибку:. (400) Bad Request», но я не знаю, какой тип uri даст. В этом uri отправит один ключ, но какой тип ключа отправит, пожалуйста, любой ответьте мне

+0

, пожалуйста, помогите мне. –

+0

Вы пробовали Google? – Glorfindel

+0

да @glorfindel. но я не мог найти полезный answer.please дать мне пример с примерами –

ответ

3

Вы можете проверить PushSharp Возможно, он обновлен для новых форматов полезных уведомлений в формате Windows Phone 8. Here - это код сервера для отправки Push-уведомлений с сервера, и в этом link вы можете найти реализацию для Windows Phone.

В принципе, существует два типа Push-уведомления, которое может использовать ваше приложение в Windows Phone 8.1.

  1. MPNS: Microsoft Push Notification Service

  2. WNS: Windows Notification Service.

MPNS старый сервис уведомлений стиль, используемый в телефон 7 и 8. WNS Windows, это уведомление Windows 8 стиль, который доступен для приложений, ориентированных на специально Windows Phone 8.1. (Windows Phone Silverlight 8.1 приложения и Windows Phone 8.1 (среда выполнения Windows) приложения.

PushSharp кажется, поддерживает оба типа уведомлений услуг, MPNS в PushSharp.WindowsPhone библиотеках и WNS в PushSharp.Windows библиотеках.

Также это может быть стоит проверить Azure то же самое. Вот учебник по той же =>Send push notifications to authenticated users

+0

спасибо rohit, но я не смог найти ссылку в приведенном выше PushSharp, это покажет пустую страницу. Дайте мне пример кода. Фактически я использую Windows runtime, а не шаблон silverlight. –

+0

Пожалуйста, найдите обновления для ответа. Или еще проверьте эту ссылку => https://github.com/Redth/PushSharp/blob/master/Client.Samples/PushSharp.ClientSample.WindowsPhone/PushSharp.ClientSample.WindowsPhone/PushSharpClient.cs –

2

Ниже приведены шаги, необходимые для push notification for windows phone.

  1. Приложение запрашивает URI push-уведомления из службы Push-клиента.
  2. Служба клиента Push поддерживает переговоры с службой уведомлений Microsoft Push (MPNS), а MPNS возвращает URI уведомлений службе Push Push.
  3. Служба Push-клиента возвращает URI-уведомление для вашего приложения.
  4. Ваше приложение может затем отправить URI уведомлений на ваш облачный сервис.
  5. Когда у вашего облачного сервиса есть информация для отправки в ваше приложение, он использует URI уведомления для отправки push-уведомления в MPNS.
  6. MPNS направляет push-уведомление в ваше приложение.

См. this Страница MSDN, чтобы подробно разобраться в сообщении.

0

Я попытался отправить уведомление вручную с помощью следующего кода:

void SendToastMessage(string pushUri, string message) 
     { 
      HttpWebRequest request = 
       (HttpWebRequest)WebRequest.Create(pushUri); 
      request.ContentType = "text/xml"; 
      request.Method = "POST"; 
      request.Headers.Add("X-MessageID", Guid.NewGuid().ToString()); 
      request.Headers.Add("X-NotificationClass", "2"); 
      request.Headers.Add("X-WindowsPhone-Target", "toast"); 
      string toastMessage = @"<?xml version=""1.0"" encoding=""utf-8""?> 
          <wp:Notification 
           xmlns:wp=""WPNotification""> 
           <wp:Toast> 
           <wp:Text1>{0}</wp:Text1> 
           <wp:Text2>{1}</wp:Text2> 
           </wp:Toast> 
          </wp:Notification>"; 
      string toastXml = string.Format(toastMessage, 
            "sample:", 
            message); 
      byte[] notificationMessage = Encoding.UTF8.GetBytes(toastXml); 
      request.ContentLength = notificationMessage.Length; 
      using (Stream requestStream = request.GetRequestStream()) 
      { 
       requestStream.Write(notificationMessage, 
          0, 
          notificationMessage.Length); 
      } 
      try 
      { 
       HttpWebResponse response = 
       (HttpWebResponse)request.GetResponse(); 

       return; 
      } 
      catch (Exception ex) 
      { 
       return; 
      } 
     } 

Этот код работал прекрасно для меня годом ранее, и до сих пор.Но убедитесь, что ваш pushUri правильный.

+0

благодарит @deeiip, но какой тип pushuri отправит, я не знаю, будет ли, пожалуйста, объясните.Пожалуйста, дайте мне образец uri –

Смежные вопросы