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

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(

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

随后:

能够获得toast通知。在我的应用程序中,切换如下所示

案例1:如果我能同时吃生面包和烤面包,但不能 频道uri

案例2:如果我不发表评论,我将无法获得toast和channel uri,但是 不生

我的代码如下:

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并没有阻止我。需要找出自定义插件中的错误。