如何在工作灯中为 Windows Phone 8 配置未经身份验证的推送通知

Posted

技术标签:

【中文标题】如何在工作灯中为 Windows Phone 8 配置未经身份验证的推送通知【英文标题】:How to configure Non-authenticated push notification for windows phone 8 in worklight 【发布时间】:2015-11-03 10:49:20 【问题描述】:

我已经在 androidios 中配置了推送通知,并且效果很好。但是当我在 worklight 中为 windows phone 8 配置未经身份验证的推送通知时,它不起作用。我按照下面的 MobileFirst 文档为 windows Phone 8 运行推送通知:

https://developer.ibm.com/mobilefirstplatform/documentation/getting-started-7-1/foundation/notifications/push-notifications-overview/push-notifications-in-hybrid-applications/#setupWP8

我还想知道,对于基于订阅的推送通知,Windows Phone 8 推荐哪种通知,即非身份验证推送或身份验证推送?

下面是我的代码:

adapter.js

function submitNotification(userId, notificationText)
var userSubscription = WL.Server.getUserNotificationSubscription('PushAdapter.PushEventSource', userId);

if (userSubscription==null)
    return  result: "No subscription found for user :: " + userId ;

var notification=;
notification.MPNS=;
var badgeDigit = 1;

var notification = WL.Server.createDefaultNotification(notificationText, badgeDigit, custom:"data");
notification.MPNS.toast=;
notification.MPNS.toast.text1 = "Toast title";
notification.MPNS.toast.text2 = "Toast content";
WL.Logger.debug("submitNotification >> userId :: " + userId + ", text :: " + notificationText);

WL.Server.notifyAllDevices(userSubscription, notification);


return  
    result: "Notification sent to user :: " + userId 
;

应用程序描述符.xml

<windowsPhone8 version="1.0">
    <uuid>5747-54938-fjhg-f459-844h-fhkj</uuid>
</windowsPhone8>

请帮助我处理 windows phone 8 推送通知。

++++++++++++++++++++++++++++++更新问题++++++++ +++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++ 在“application-descriptor.xml”中添加推送发件人 ID 后。推送通知正在 windows phone8 上运行。但在 windows phone8 上接收广播通知时遇到问题。

广播适配器.js

function sendBroadcastNotification(applicationId, notificationText)  
var notificationOptions = ; 
notificationOptions.message = ; 
notificationOptions.message.alert = notificationText; 
WL.Server.sendMessage(applicationId, notificationOptions); 
return  
result : "Notification sent to all users." 
 ; 

ma​​in.js中的客户端代码:

if(WL.Client.Push) 
WL.Client.Push.onMessage = function (props, payload)  
navigationFromNotification = true; 
WL.SimpleDialog.show("Tag Notifications", "Provider notification data: " +    JSON.stringify(props), [  
text : 'Close', 
handler : function()  
WL.SimpleDialog.show("Brodcast Notifications", "Application notification data: " + JSON.stringify(payload), [  
text : 'Close', 
handler : function()  
window.location.href="#/home/2"; 
  
]); 
  
]); 
; 

我是否需要添加任何内容才能在 windows phone8 上接收广播通知

【问题讨论】:

【参考方案1】:

您链接到的文档清楚地提到添加一个空的pushSender 元素,并且可以在您的 application-descriptor.xml 的代码 sn-p 中看到 - 您没有这样做。基本上,您没有将应用程序配置为使用推送通知(!)。

<windowsPhone8 version="1.0">
    <uuid>auto-generated by the platform</uuid>
    <pushSender /> 
</windowsPhone8>

认证或未认证推送与基于用户的订阅无关。 您可以使用任何一种。 MS 的唯一限制是未经身份验证的消息限制为每天 500 条消息,而经过身份验证的消息不受限制(并且更安全)。

【讨论】:

是的,uuid 只是自动生成的。 但仍然无法正常工作。我还要求提供基于订阅的推送通知,建议使用哪种通知,即非身份验证推送或身份验证推送?请清除这两个问题。 “仍然无法工作”不是答案。提供一个真实的答案来解释什么不起作用。日志、错误消息。 如果您没有添加推送发件人元素,它将不起作用。添加它。 是的,您似乎遇到了网络问题。您需要与您的 IT/网络管理员交谈。【参考方案2】:

a) MPNS 推送通知可以在未验证或已验证模式下运行。在未经身份验证的模式下,通过 Microsoft 推送通知服务允许的通知数量和频率受到限制(未经身份验证的推送通知目前限制为每个频道每天 500 个)。

MSDN documentation.

IBM MobileFirst 支持已认证和未认证的 MPNS 推送。

b) 在标签/广播 MPNS 通知的情况下,默认情况下,通知显示在应用程序磁贴中。要在应用程序处于前台时显示通知或作为 toast 通知显示,请将以下代码添加到适配器中的 sendBroadcastNotification() 方法中:

notificationOptions.settings = ;
notificationOptions.settings.mpns =;
notificationOptions.settings.mpns.raw = ;
notificationOptions.settings.mpns.raw.payload= 'payload' : notificationText;

notificationOptions.settings.mpns.toast =;
notificationOptions.settings.mpns.toast.text1 = 'Title';
notificationOptions.settings.mpns.toast.text2= notificationText;

有关完整的code,请参阅 TagNotifications 示例

【讨论】:

谢谢,但这件事我已经知道了。但我的问题是在“application-descriptor.xml”中配置 uuid 和“adapter.js”中的通知代码后我没有收到任何推送通知。请帮助我:) 嘿!你能帮我在 Windows Phone 8 上接收广播通知吗?相同的广播代码适用于 android 和 ios,但不适用于 windows phone 8。我需要为 windows phone 8 配置任何东西以进行广播通知吗? a) 如果您没有将 标签添加到 Windows Phone 8 的应用程序描述符,您将不会收到推送通知 b) 编辑问题或提供有关广播通知代码的详细信息在 Android / iOS 上工作,但不适用于 WP8。 查看我更新的代码问题,我在向 Windows phone8 发送广播通知时遇到问题 看起来你在聊天中没有看到我之前的 cmets。将 WL.Client.Push.onMessage=function(props,payload) ... 移到任何函数声明或检查之外?让它靠自己。另外,请注意 MFP 不支持从当前页面导航的“window.location.href”方式。 MFP 遵循单一 DOM 模型,不支持使用 href 导航离开

以上是关于如何在工作灯中为 Windows Phone 8 配置未经身份验证的推送通知的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Windows Phone 8 发布到 RESTful API

适用于 Windows Phone 8 的 MediaElement 速度比

如何调试在 Windows Phone 8.1 上挂起的应用程序

如何在 Windows Phone 8.1 上从数据库中获取图像并将其显示为字节数组

Windows Phone 8 的本地数据库

如何使用 TCP 或 UDP 将数据从 Windows Phone 8.1 发送到 PC?