subscribeTag无法在windowsphone8

时间:2015-09-18 05:59:31

标签: windows-phone-8 push-notification ibm-mobilefirst

我正在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."

1 个答案:

答案 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