Windows phone 8 Windows Phone 8接收原始推送通知问题
我无法在WindowsPhone8上接收原始通知 随后: 能够获得toast通知。在我的应用程序中,切换如下所示 案例1:如果我能同时吃生面包和烤面包,但不能 频道uri 案例2:如果我不发表评论,我将无法获得toast和channel uri,但是 不生 我的代码如下:Windows phone 8 Windows Phone 8接收原始推送通知问题,windows-phone-8,push-notification,ibm-mobilefirst,mpns,Windows Phone 8,Push Notification,Ibm Mobilefirst,Mpns,我无法在WindowsPhone8上接收原始通知 随后: 能够获得toast通知。在我的应用程序中,切换如下所示 案例1:如果我能同时吃生面包和烤面包,但不能 频道uri 案例2:如果我不发表评论,我将无法获得toast和channel uri,但是 不生 我的代码如下: if (device.platform == "Win32NT") { console.log("called"); pushNotification.register(
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);
}
}
if(device.platform==“Win32NT”){
控制台日志(“调用”);
pushNotification.register(
channelHandler,
错误处理程序,
{
“channelName”:“channelName”,
“ecb”:关于通知WP8,
“uccb”:channelHandler,
“errcb”:jsonErrorHandler
});
}
否则{
console.log(“未调用”);
}
}
函数channelHandler(事件){
var uri=event.uri;
console.log(“uuuu rrrrrrrrr IIIIIIIII:+uri);
}
函数errorHandler(e){
}
函数jsonErrorHandler(错误){
$(“#应用程序状态ul”).append(“错误:“+error.code+” ”);
$(“#应用程序状态ul”).append(“错误:“+error.message+” ”);
}
通知WP8(e)的功能{
log(“调用通知”);
if(e.type==“toast”&&e.jsonContent){
showToastNotification(successHandler、errorHandler、,
{
“标题”:e.jsonContent[“wp:Text1”],“副标题”:e.jsonContent[“wp:Text2”],“导航URI”:e.jsonContent[“wp:Param”]
});
}
if(e.type==“原始”&&e.jsonContent){
警报(e.jsonContent.Body);
}
}
尝试了错误和跟踪方法。请建议可能出现的问题。观察到的问题似乎与Worklight完全无关。从描述和代码片段可以看出,您完全绕过了Worklight客户端SDK和服务器,并使用了自定义Cordova推送插件。应对应用程序中的自定义插件进行分析,以了解其行为差异 由于您根本没有使用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的查询:
没有返回通道URI的Worklight API。当使用Worklight SDK进行推送时,所有这些操作都会自动完成并对用户隐藏。即使有推送适配器,也无法获取通道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帮助我实现了这一点。看起来你正在尝试使用自定义插件推送,并注意到了这个问题。你是否看到Worklight/MobileFirst项目使用开箱即用推送功能时出现的问题?我正在使用Worklight版本6.1.0.02-20151114-1310发布的问题与Worklight有何关系?尽管如此sh notifications支持在Worklight中提供,您使用的是自定义插件。如果您使用此处的示例:并且未添加任何自定义插件,您是否能够获取原始通知?我没有获取原始通知,但能够获取toast。我使用自定义插件,因为我的要求只是获取通道uri以将其发送回end和handle在客户端接收到通知。我不想使用任何适配器。如果worklight将帮助我完成任何ifix,这一切都很好。您共享的上述链接包含android环境,实际上我期待windows环境。添加windows Phone环境谢谢Vivin。不幸的是,禁用了worklight Push在我的情况下没有帮助我。你是对的。Worklight并没有阻止我。需要找出自定义插件中的错误。