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。
我无法在我的 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。