2013-08-14 6 views
4

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

У меня есть следующий 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 (Microsoft Push уведомление службы).

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

Вопросы:

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

ответ

4

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

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

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

+8

Любые новости о поддержке PhoneGap для этого? –

+0

По-прежнему нет новостей на PhoneGap? – Naning

1

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

How to register devices to Azure Notification Hub from server side(with NodeJS sdk) ?

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