我一直在尝试在我的Windows和Windows Phone 8.1应用程序上实现原始推送通知的BackgroundTask,但它似乎不起作用。我已经成功地设置了基于推送通知的推送通知,但据我所知,Raw通知会静默地将数据推送到应用程序,这取决于应用程序显示Toast通知或更新应用程序的磁贴。
我查看了BackgroundTask示例并完全按照它进行了操作(https://code.msdn.microsoft.com/windowsapps/Background-Task-Sample-9209ade9)。
以下是我采取的步骤
IBackgroundTask
及其Run
方法创建了一种创建Toast通知的方法
private void SendNotification(string text) { XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText01);
XmlNodeList elements = toastXml.GetElementsByTagName("text");
foreach (IXmlNode node in elements)
{
node.InnerText = text;
}
ToastNotification notification = new ToastNotification(toastXml);
ToastNotificationManager.CreateToastNotifier().Show(notification);
}
为Run方法添加了代码
BackgroundTaskDeferral _deferral = taskInstance.GetDeferral();
RawNotification notification = (RawNotification)taskInstance.TriggerDetails;
string content = notification.Content;
// ...
SendNotification("test");
// ...
_deferral.Complete();
将我的应用清单更新为Toast Capable = YES
和Lock Screen Notifications = Badge
为Supported Task Type = Push Notification
和Entry Point = NotificationServer.RawTask
添加了注册后台任务的代码
public static BackgroundTaskRegistration RegisterBackgroundTask(string taskEntryPoint, string taskName, IBackgroundTrigger触发器, IBackgroundCondition条件) { // //检查此后台任务的现有注册。 //
foreach (var cur in BackgroundTaskRegistration.AllTasks)
{
if (cur.Value.Name == taskName)
{
//
// The task is already registered.
//
return (BackgroundTaskRegistration)(cur.Value);
}
}
//
// Register the background task.
//
var builder = new BackgroundTaskBuilder();
builder.Name = taskName;
builder.TaskEntryPoint = taskEntryPoint;
builder.SetTrigger(trigger);
if (condition != null)
{
builder.AddCondition(condition);
}
BackgroundTaskRegistration task = builder.Register();
return task;
}
用
执行var reg = RegisterBackgroundTask("NotificationServer.RawTask", "RawNotifications", new PushNotificationTrigger(), null);
我在这里缺少什么,我的应用程序似乎没有响应Push Notification事件。我确保我的应用程序与商店中的应用程序相关联,并且正在使用正确的客户端密钥和应用程序ID发送推送。
答案 0 :(得分:-1)
推送通知有四种类型:
所有Windows运行时应用都可以在前台使用前三个推送通知。只有锁屏应用才能从WNS接收原始推送通知。 所以,你必须使你的应用程序成为锁屏应用程序。
您可以按this topic进行操作。