Windows Phone 8 接收原始推送通知问题

Windows Phone 8 Receiving raw Push Notification issue

我无法在我的 WindowsPhone8 上接收原始通知。

已关注:https://github.com/barryvdh/PushPlugin/#uccb-wp8-only

能够收到吐司通知。在我的应用程序中,切换发生如下。

Case 1: If I comment ecb able to get both raw and toast but not channel uri.

Case 2: If I won't comment ecb able to get toast and channel uri but not raw

我的代码如下:

if (device.platform == "Win32NT") {
        console.log("called");

            pushNotification.register(
                channelHandler,
                errorHandler,
                {
                    "channelName": "channelName",
                    "ecb": onNotificationWP8,
                    "uccb": channelHandler,
                    "errcb": jsonErrorHandler
                });
        }
        else {
            console.log("not called");
        }
    }


function channelHandler(event) {
    var uri = event.uri;
    console.log("UUUUURRRRRRRRRRRIIIIIIIII  :" + uri);
}

function errorHandler(e) {
}

function jsonErrorHandler(error) {
    $("#app-status-ul").append('<li style="color:red;">error:' + error.code + '</li>');
    $("#app-status-ul").append('<li style="color:red;">error:' + error.message + '</li>');
}

function onNotificationWP8(e) {
    console.log("notification called");
    if (e.type == "toast" && e.jsonContent){
        pushNotification.showToastNotification(successHandler, errorHandler,
        {
            "Title": e.jsonContent["wp:Text1"], "Subtitle": e.jsonContent["wp:Text2"], "NavigationUri": e.jsonContent["wp:Param"]
        });
    }

    if (e.type == "raw" && e.jsonContent) {
        alert(e.jsonContent.Body);
    }
}

尝试了错误和跟踪方法。请提出可能出了什么问题。

观察到的问题似乎与 Worklight 完全无关。从描述和代码片段来看,您将完全绕过 Worklight 客户端 SDK 和服务器,并使用自定义 Cordova Push 插件。应分析自定义插件在您的应用程序中的工作情况,以了解行为差异。

由于您根本没有使用 Worklight Push,您可以尝试禁用它并检查这是否对您的情况有帮助。

为此,请导航至 config.xml。这将位于 apps/YourAppName/WindowsPhone8/native/Resources 文件夹中。

寻找:

<feature name="Push">
    <param name="wp-package" value="Push" />
</feature>

将此更改为:

<feature name="Push">
    <param name="wp-package" value="Push" />
    <param name="onload" value="false" />
</feature>

关于 Worklight API 的查询:

return 频道 URI 没有 Worklight API。当使用 Worklight SDK for Push 时,所有这些都是自动完成的并且对用户隐藏。即使有推送适配器,也无法获取通道 URI,因为没有发布 API 来获取此信息。

最后通过添加Coding4Fun.Toolkit.Controls.dll

解决了

以及 PushPlugin.cs

中的一些代码更新

使用Coding4Fun.Toolkit.Controls; 使用 System.Windows.Threading;

void PushChannel_ShellToastNotificationReceived(对象发送者,NotificationEventArgs e) {

        Deployment.Current.Dispatcher.BeginInvoke(() =>
        {
            string msg = string.Empty;
            foreach (var item in e.Collection)
            {
                if (item.Key == "wp:Text1")
                {
                    msg = item.Value;
                }
            }

            MessageBox.Show(msg, "Notification", MessageBoxButton.OK);

        });
    }

衷心感谢帮助我实现这一目标的 Rajith。