Windows Phone 8.1:向特定用户发送通知

时间:2015-02-01 13:51:56

标签: azure push-notification windows-phone-8.1

我遇到了Windows Azure移动服务的问题。我创建PushServiceMobileService,在我的移动应用程序中是notyifyAllUsers服务调用,一切正常,但如何制作控制器,它只会向指定用户发送通知(例如“你有2个新朋友”) ?我知道在移动应用程序启动时生成的channel.Uri是我的请求的目的地,但是所有关于在此href上发送http请求的我都有Http 400响应。你能告诉我如何建立这个要求吗?非常感谢。

聚苯乙烯。抱歉我的英文;)

1 个答案:

答案 0 :(得分:4)

我想向您展示我在我的应用程序中创建的示例。 我还使用Azure移动服务和通知中心。

让我把它分成两部分:

  1. Windows phone 8.1代码。
  2. 测试发送推送通知代码的应用程序。

    在App.xaml.cs(Windows Phone项目)类中,我创建了此方法:

    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;
        }
    }
    
  3. 在订阅数组中,您可以输入例如当前登录到您的应用程序的人的登录名或姓名。 填写订阅数组后,必须将其作为通道Uri旁边的参数附加到RegisterNativeAsync方法。

    现在,在测试推送通知控制台应用程序中,您可以使用以下方法进行检查:

        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;
        }
    

    我希望它会有所帮助。