Ошибка регистрации Azure Notification Hub из Javascript с использованием служб REST

Я пытаюсь получить регистрацию в Центре уведомлений Azure, работая с кодом html/javascript, работающим на узле веб-представления (Phonegap/Intel XDK). Клиентской библиотеки нет, поэтому я пытаюсь использовать REST API (документация: ).

У меня есть следующий код Javascript:

function registerWithAzureNotificationHub()
{
    var sas = "Endpoint=sb://eventpusher-ns.servicebus.windows.net/;SharedAccessKeyName=DefaultListenSharedAccessSignature;SharedAccessKey=69XuYoluyBKl6JkkN03Z1oNC7cFSZ4Ku0ZWmPuWoJzs=";
    var data = '<?xml version="1.0" encoding="utf-8"?>\
    <entry xmlns="http://www.w3.org/2005/Atom">\
        <content type="application/xml">\
        <MpnsRegistrationDescription xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/netservices/2010/10/servicebus/connect">\
        <Tags>myTag, myOtherTag</Tags>\
        <ChannelUri>https://eventpusher-ns.servicebus.windows.net/eventpusher</ChannelUri>\
        </MpnsRegistrationDescription>\
        </content>\
    </entry>';
    if (AppMobi.iswp8) {
        window.alert("IS WP8");
    }
    else
    {
        window.alert("IS NOT WP8");
    }

    $.ajax({
        type:"POST",
        url: "https://eventpusher-ns.servicebus.windows.net/EVENTPUSHER/registrations/?api-version=2013-08",
        contentType: "application/atom+xml;type=entry;charset=utf-8",
        headers: {
            "Authorization": sas,
            "x-ms-version": "2013-08"
        },
        dataType: "xml",
        data: data,
        success: function(d) { window.alert("SUCCESS!"); },
        error: function(msg) { window.alert("FAILURE:" + JSON.stringify(msg)); }
    });
    window.alert("SENT!");
}

В приведенном выше случае я использую Intel XDK с кодом, работающим на устройстве WP8, поэтому я регистрируюсь в MPNS (служба push-уведомлений Microsoft).

Приведенный выше код завершается ошибкой и возвращается без описательной информации о причине ошибки.

Вопросы:

  1. Можно ли зарегистрировать мобильное устройство для Azure Notification Hub из кода javascript с помощью служб REST?
  2. Что может быть не так с приведенным выше кодом? Является ли ChannelUri правильным Uri?

person Serge van den Oever    schedule 14.08.2013    source источник


Ответы (2)


Определенно возможно использовать интерфейс REST из javascript. В вашем коде есть две основные проблемы:

  1. в ChannelURI следует поместить channelURI, полученный из WindowsPhone HttpPushNotificationChannel (как в этот учебник).
  2. заголовок авторизации — это токен, созданный для вашего конкретного запроса. Как описано здесь

Образец с использованием WinJS доступен. Очень скоро мы будем работать над тем, чтобы получить специальный образец PhoneGap!

person Elio Damaggio    schedule 04.09.2013
comment
Есть новости о поддержке PhoneGap для этого? - person Serge van den Oever; 23.09.2013
comment
Все еще нет новостей о PhoneGap? - person Naning; 25.06.2014

Я разместил фрагмент на стороне сервера, чтобы зарегистрировать устройство с токеном в концентраторе и иметь возможность отправлять уведомления здесь:

Как зарегистрировать устройства в Azure Notification Hub со стороны сервера (с помощью NodeJS sdk)?

У меня также есть код на стороне клиента, использующий ngCordova и PushPlugin в Ionic, дайте мне знать, если кто-то захочет его увидеть.

person EmbCoder    schedule 27.01.2015