Search code examples
windows-phone-8push-notificationibm-mobilefirstmpns

Windows Phone 8 Receiving raw Push Notification issue


I am unable to receive raw notification on my WindowsPhone8.

Followed :https://github.com/barryvdh/PushPlugin/#uccb-wp8-only

Able to get toast notification. In my app toggle is happening like below.

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

My code as follows:

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);
    }
}

Tried with error and trail methods. Please suggest what might went wrong.


Solution

  • Finally it got solved by adding Coding4Fun.Toolkit.Controls.dll

    And some code updation in PushPlugin.cs

    using Coding4Fun.Toolkit.Controls; using System.Windows.Threading;

    void PushChannel_ShellToastNotificationReceived(object sender, 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);
    
            });
        }
    

    My heart-full thanks to Rajith who helped me to make it happen.