Как получить данные из push-уведомления?

Я отправляю push-уведомление с помощью концентратора уведомлений Azure с помощью сценария node js. Я могу отправлять и получать push-уведомления. Я не знаю, как получить данные. Я отправляю толчок следующим образом: -

function sendNotifications(pushMessage) {
    console.log('inside sendNotifications');
    var hub = azure.createNotificationHubService('hubname','connection string');

    hub.mpns.sendToast(
        null,
        {
            text1: pushMessage,
            text2: 'some data'
        },
        function (error)
        {
            if (!error)
            {
                //message send successfully
                console.log("mpns.sendToast push success: "+error);
                RESPONSE.send(statusCodes.OK, { ResponseMessage : 'mpns.sendToast message success' });
            }
            else
            {
                // msg failed to send
                console.log("errro error.shouldDeleteChannel: "+error);
                RESPONSE.send(statusCodes.OK, { ResponseMessage :'mpns.sendToast message error '+error });
            }
        });
}

Я хотел бы получить text1 и text2 в моем принимающем приложении. Не могли бы вы сообщить мне, как это сделать? Или мне нужно отправить push-уведомление по-другому, если я хочу отправить какие-то данные? Как передавать данные вместе с принудительной нитрификацией? Кроме того, насколько большие данные я могу отправить?


person masiboo    schedule 18.02.2014    source источник


Ответы (1)


Если ваше приложение уже открыто, когда получено всплывающее уведомление, следующий обработчик событий может получить параметры уведомления (например, e.Collection[wp:Text1] вернет заголовок всплывающего уведомления):

void PushChannel_ShellToastNotificationReceived(object sender, NotificationEventArgs e)
{
    StringBuilder message = new StringBuilder();
    string relativeUri = string.Empty;

    message.AppendFormat("Received Toast {0}:\n", DateTime.Now.ToShortTimeString());

    // Parse out the information that was part of the message.
    foreach (string key in e.Collection.Keys)
    {
        message.AppendFormat("{0}: {1}\n", key, e.Collection[key]);

        if (string.Compare(
            key,
            "wp:Param",
            System.Globalization.CultureInfo.InvariantCulture,
            System.Globalization.CompareOptions.IgnoreCase) == 0)
        {
            relativeUri = e.Collection[key];
        }
    }

    // Display a dialog of all the fields in the toast.
    Dispatcher.BeginInvoke(() => MessageBox.Show(message.ToString()));

}

Если ваше приложение открывается нажатием всплывающего уведомления, вы можете реализовать следующий метод на странице, где открыто ваше приложение. Вы можете получить доступ к параметрам, переданным в строке запроса параметра wp:Param всплывающего уведомления. Я не уверен, как получить Text1 и Text2 в этом методе.

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedTo(e);

    //  If we navigated to this page
    // from the MainPage, the DefaultTitle parameter will be "FromMain".  If we navigated here
    // when the secondary Tile was tapped, the parameter will be "FromTile".
    textBlockFrom.Text = "Navigated here from " + this.NavigationContext.QueryString["NavigatedFrom"];

}

Образцы кода были взяты из здесь< /а>.

person Eran    schedule 18.02.2014
comment
а если приложение не открывается? как справиться с этим? @Эран - person SD7; 26.11.2014