2015-02-01 3 views
0

У меня проблема с Windows Azure Mobile Service. Я создал PushServiceMobileService, в моем мобильном приложении notyifyAllUsers звонок службы, все в порядке, но как сделать контроллер, который будет отправлять уведомления только указанному пользователю (например, «у вас есть 2 новых знакомых»)? Я понимаю, что channel.Uri, который генерируется при запуске мобильного приложения, предназначен для моих запросов, но все при отправке HTTP-запроса на этот href у меня есть ответ Http 400. Не могли бы вы рассказать мне, как построить этот запрос? Большое спасибо.Windows Phone 8.1: Отправить уведомление указанному пользователю

Ps. извините за мой английский;)

ответ

4

Я хотел бы показать вам мой пример, который я создал для использования в своем приложении. Я также использую Azure Mobile Services и Notification Hub.

Позвольте мне разделить его на две части:

  1. Windows Phone 8.1 код.
  2. Тестовое приложение для отправки push-уведомлений.

    В App.xaml.cs (Телефон проекта Windows) класс Я создал этот метод:

    public static async void InitNotificationsAsync(string userName) 
    { 
        channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync(); 
        string[] subscription = { userName }; 
    
    
        receivingHub = new NotificationHub("yourappnotificationhub", "Endpoint=sb://yourappnotificationhub-ns.servicebus.windows.net/;...."); 
    
        var result = await receivingHub.RegisterNativeAsync(channel.Uri, subscription); 
    
        // Displays the registration ID so you know it was successful 
        if (result.RegistrationId != null) 
        { 
         channel.PushNotificationReceived += OnPushNotification; 
        } 
    } 
    

В массиве ПОДПИСКА Вы можете поместить имя пользователя или имя человека, который, например, в настоящее время вошли в ваше приложение. После заполнения массива подписки вы должны присоединить его к методу RegisterNativeAsync в качестве параметра рядом с вашим каналом Uri.

Теперь в вашем консольном приложении тестового уведомления толчка, вы можете проверить его с помощью этого метода:

private static async void SendNotificationAsync() 
    { 
     NotificationHubClient hub = NotificationHubClient 
      .CreateClientFromConnectionString("Endpoint=sb://menotifyappnotificationhub-ns.servicebus.windows.net/;SharedAccessKeyName=DefaultFullSharedAccessSignature;SharedAccessKey=\...", "yourappnotificationhub"); 
     var toast = @"<toast><visual><binding template=""ToastText02""><text id=""1"">test</text><text id=""2"">Hello</text></binding> </visual></toast>"; 
     await hub.SendWindowsNativeNotificationAsync(toast, "User_Name_You_Added_To_String_Array_In_WindowsPhoneApp"); 
    } 

Теперь, если вы пришлете толкать его будет посылать только к человеку, имя которого вы добавили в массив строк подписки в Windows Phone заявление.

Я также вставить код для обработки принятого толчок в приложении:

private static void OnPushNotification(PushNotificationChannel sender, PushNotificationReceivedEventArgs e) 
    { 
     String notificationContent = ""; 

     switch (e.NotificationType) 
     { 
      case PushNotificationType.Badge: 
       notificationContent = e.BadgeNotification.Content.GetXml(); 
       break; 

      case PushNotificationType.Tile: 
       notificationContent = e.TileNotification.Content.GetXml(); 
       break; 

      case PushNotificationType.Toast: 

       notificationContent = e.ToastNotification.Content.GetXml(); 
       //..DO SOME ACTION, FOR EXAMPLE SHOW MESSAGEDIALOG WITH PUSH MESSAGE 

       break; 

      case PushNotificationType.Raw: 
       notificationContent = e.RawNotification.Content; 
       break; 
     } 

     e.Cancel = true; 
    } 

Я надеюсь, что это поможет.

+0

Отлично работает, большое вам спасибо! – bari

+0

Это похоже на использование в старых версиях WP 8.0 (Silverlight). Вам просто нужно иметь дело с HttpNotificationChannel вместо PushNotificationChannelManager и т. Д. – boski

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