Windows Phone 8.1:向指定用户发送通知
Windows Phone 8.1: Send notification to specified user
我在使用 Windows Azure 移动服务时遇到问题。我创建了 PushServiceMobileService
,在我的移动应用程序中是 notyifyAllUsers
服务调用,一切正常,但是如何制作控制器,它只会向指定用户发送通知(例如 "you have 2 new friends")?我知道在移动应用程序启动时生成的 channel.Uri
是我请求的目的地,但所有在这个 href 上发送 http 请求时我都有 Http 400 响应。你能告诉我如何构建该请求吗?非常感谢。
Ps。对不起我的英语 ;)
我想向您展示我创建的用于我的应用程序的示例。
我还使用 Azure 移动服务和通知中心。
让我把它分成两部分:
- Windows phone 8.1 代码。
发送推送通知代码的测试应用程序。
在 App.xaml.cs(Windows Phone 项目)class 我创建了这个方法:
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;
}
}
在订阅数组中,您可以输入登录名或当前登录到您的应用程序的人的姓名。
填充订阅数组后,您必须将其作为频道 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;
}
希望对你有所帮助
我在使用 Windows Azure 移动服务时遇到问题。我创建了 PushServiceMobileService
,在我的移动应用程序中是 notyifyAllUsers
服务调用,一切正常,但是如何制作控制器,它只会向指定用户发送通知(例如 "you have 2 new friends")?我知道在移动应用程序启动时生成的 channel.Uri
是我请求的目的地,但所有在这个 href 上发送 http 请求时我都有 Http 400 响应。你能告诉我如何构建该请求吗?非常感谢。
Ps。对不起我的英语 ;)
我想向您展示我创建的用于我的应用程序的示例。 我还使用 Azure 移动服务和通知中心。
让我把它分成两部分:
- Windows phone 8.1 代码。
发送推送通知代码的测试应用程序。
在 App.xaml.cs(Windows Phone 项目)class 我创建了这个方法:
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; } }
在订阅数组中,您可以输入登录名或当前登录到您的应用程序的人的姓名。 填充订阅数组后,您必须将其作为频道 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;
}
希望对你有所帮助