4

我正在尝试使用在 Web 视图主机(Phonegap / Intel XDK)中运行的 html/javascript 代码在 Azure Notification Hub 上进行注册。没有可用的客户端库,所以我尝试使用 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!");
}

在上述情况下,我使用英特尔 XDK 和在 WP8 设备上运行的代码,因此我注册了 MPNS(Microsoft 推送通知服务)。

上面的代码失败,并返回没有关于错误原因的描述性信息。

问题:

  1. 是否可以使用 REST 服务从 javascript 代码为 Azure Notification Hub 注册移动设备?
  2. 上面的代码可能有什么问题?ChannelUri 是正确的 Uri 吗?
4

2 回答 2

3

绝对有可能从 javascript 中使用 REST 接口。在您的代码中有两个主要问题:

  1. 在 ChannelURI 中,您应该放置从 WindowsPhone HttpPushNotificationChannel 检索到的 channelURI(如教程中所示)。
  2. 授权标头是为您的特定请求创建的令牌。如此处所述

提供了使用 WinJS 的示例。我们将尽快制作一个 PhoneGap 特定样本!

于 2013-09-04T01:06:18.433 回答
1

我确实发布了一个服务器端代码段,以将带有令牌的设备注册到集线器,并能够在此处发送通知:

如何从服务器端将设备注册到 Azure 通知中心(使用 NodeJS sdk)?

我也有在 Ionic 中使用 ngCordova 和 PushPlugin 的客户端代码,如果有人想看,请告诉我。

于 2015-01-27T21:13:34.090 回答