我正在windowsphone8中实现基于TAG的推送通知,但是当我执行以下代码时,我的应用程序无法注册TAG。
我已经尝试将subscribeTag
放在onReadyToSubscribe
之外,但我没有任何成功,没有失败,没有任何成就。
if (WL.Client.Push) {
WL.Client.Push.onReadyToSubscribe = function() {
WL.Client.Push.subscribeTag("RRNEWS", {
onSuccess: function () {
alert("Tag registered");
},
onFailure: function (e) {
alert("Tag registered failed" + JSON.stringify(e));
}
});
};
}else{
alert("not supported");
}
我在application-descriptor.xml
注册标记如下
<tags>
<tag>
<name>RRNEWS</name>
<description>News</description>
</tag>
</tags>
这是windowsphone8条目
<windowsPhone8 version="1.0">
<uuid>6e043ba2-d382-4894-965f-47e08c24bd1e</uuid>
<pushSender/>
</windowsPhone8>
我从Tag Notification github运行基于标签的通知示例,并将其部署在我的移动第一台服务器6.3
上当我生成windowspone8构建并将其运行到设备中时,它会显示以下结果
1) isPushSupported -> True
2) isSubscribed -> sample-tag1: false , sample-tag2: false
其他按钮被禁用
1) Subscribe to sample-tag2
2) Unsubscribe from sample-tag1
3) Unsubscribe from sample-tag2
然后我尝试从html标记中删除disabled
属性并尝试按
subscribe to sample-tag2
但没有任何事情发生。
更改是适配器代码
function sendTagNotificationToWindows(applicationId, notificationText,notificationTags){
var notificationOptions = {};
var tags = notificationTags.split(",");
var notificationOptions = {};
var notification = WL.Server.createDefaultNotification(notificationText, 10);
notification.MPNS.raw = {};
notification.MPNS.raw.payload = {"custom":"data"} ;
notificationOptions.message = {};
notificationOptions.target = {};
notificationOptions.message.alert = JSON.stringify(notification);
notificationOptions.target.tagNames = tags;
// i have tried it with a notificationOptions too
WL.Server.sendMessage(applicationId, notification);
return {
result : "Notification sent to users subscribed to the tag(s): '" + JSON.stringify(notification) + "'."
};
}
错误 当我只通过通知参数时,它会抛出以下错误
"Push Works Bad Request: FPWSE0005E: Invalid value was provided. Check the 'message' parameter value."
答案 0 :(得分:0)
Tag notifications sample project未考虑Windows Phone 8环境。以下是您需要添加到示例中的内容:
<强>应用descriptor.xml 强>
添加Windows Phone 8环境后,添加一个空的pushSender
标记:
<windowsPhone8 version="1.0">
<uuid>AUTOGENERATED-GUID-NUMBER-HERE</uuid>
<pushSender/>
</windowsPhone8>
<强> PushAdater-impl.js 强>
将以下内容添加到用于发送通知的功能中
例如,像这样:
function sendTagNotification(applicationId, notificationText, notificationTags) {
var tags = notificationTags.split(",");
var notificationOptions = {};
notificationOptions.message = {};
notificationOptions.message.alert = notificationText;
notificationOptions.target = {};
notificationOptions.target.tagNames = tags;
notificationOptions.settings = {};
notificationOptions.settings.mpns = {};
notificationOptions.settings.mpns.toast = {};
notificationOptions.settings.mpns.toast.text1 = "New notification";
notificationOptions.settings.mpns.toast.text2 = "You have a new notification";
notificationOptions.settings.mpns.toast.param = "/MainPage.xaml?value1=54321";
WL.Server.sendMessage(applicationId, notificationOptions);
return {
result : "Notification sent to users subscribed to the tag(s): '" + notificationTags + "'."
};
}
需要 notificationOptions.settings.mpns.toast
,以便在应用程序关闭(退出)或在后台运行时,&#34; toast&#34;通知类型将出现在设备中。
点击Toast通知会启动该应用程序。可选&#34; param&#34; field用于传递应用程序启动后将显示的值。 &#34; param&#34;中设置的值可以检索toast natively并在应用程序中显示。
补充说明:
当应用程序打开时,如果使用原始通知类型以及道具和有效负载值,则可以在屏幕上看到。
当应用在后台并点击通知时,可以接收两种通知类型:toast或tile。两者都打开了应用程序。
当应用在后台并点按应用图标时: 这意味着单击应用程序磁贴。应用程序启动
当应用关闭并点击通知时:点击Toast启动应用程序。点击应用程序磁贴启动应用程序。
当应用关闭并点按应用图标时:这意味着点击应用图块。应用程序启动
我建议您阅读以下MS文档,了解可用的通知类型(Toast,Tile和Raw)以及何时使用它们:https://msdn.microsoft.com/en-us/library/hh221549.aspx
然后搜索&#34; MPNS&#34;,&#34; toast&#34;,&#34; tile&#34;或&#34; raw&#34;在以下用户文档主题(适用于onMessage
)中查看如何在应用程序中设置它们的示例:http://www-01.ibm.com/support/knowledgecenter/SSHS8R_7.1.0/com.ibm.worklight.apiref.doc/html/refjavascript-server/html/WL.Server.html?cp=SSHS8R_7.1.0%2F10-1-0-1-6&lang=en