销售电话: 1-800-867-1380

Service Bus 通知中心教程(Windows 应用商店应用程序)

note注意
通知中心在 2013 年 1 月作为一项预览功能包含在 Windows Azure Service Bus 中,预计于 2013 年中旬过渡到通用版本 (GA)。

note注意
由于通知中心已经过改进,在 2013 年 4 月之前下载的 SDK 将无法在新的通知中心上使用。相反,最新的 SDK 将无法在 2013 年 4 月之前创建的通知中心上使用。请开始使用包含新 SDK 的新通知中心,以充分利用乐观并发控制等新增功能。在通知中心过渡到通用版本后,我们将不再对 2013 年 4 月之前创建的通知中心提供支持。

Service Bus 通知中心是 Service Bus 实体,可让用户通过第三方应用程序平台发送设备推送通知,这些平台包括:

  • 适用于 Windows 8 的 Windows 推送通知服务 (WNS)。

  • Apple 推送通知服务 (APN)。

  • Google 云消息 (GCM)。

很快就会增加对适用于 Windows Phone 的 Microsoft 推送通知服务 (MPNS) 的支持。

本教程介绍如何设置 Windows 应用商店应用程序(以 C# 语言编写),以及可通过 WNS 推送模板通知的简单 ASP.NET MVC 应用程序。

我们还提供了深入的如何:Service Bus 通知中心(Windows 应用商店应用程序) 主题和 Windows Azure Service Bus 通知中心概述。有关如何从 iOS 应用程序使用通知中心的更多信息,请参阅如何:Service Bus 通知中心(Windows 应用商店应用程序)主题。

必备组件

要执行本教程所述任务,需要:

  • Windows 应用商店开发帐户。

  • Service Bus .NET Preview SDK。该 SDK 是包含 Service Bus 预览功能的 NuGet 程序包,可从此处下载。该程序包为 ServiceBus 预览功能,它包含名为 Microsoft.ServiceBus.Preview.dll 的新 Service Bus 库。要使用通知中心,请使用此库,而不要使用生产版本 (Microsoft.ServiceBus.dll)。

  • Service Bus WinRT Managed SDK。可以在此处下载此 SDK。

做好 Windows 8 开发的准备

要开始进行 Windows 8 应用程序开发,需要准备一台 Windows 8 PC,以及可免费下载的 Visual Studio Express 版本,或者 Visual Studio 2012 的任何其他版本。当你创建第一个 Windows 8 项目后,系统将提示你创建开发人员许可证,这是一个免费许可证,将绑定到你的开发人员帐户。此许可证允许你将应用程序并列加载到 Windows 8 的最新 UI 中。

要向 Windows 应用商店发布 Windows 应用商店应用程序并利用联机服务(例如,与 Microsoft 帐户和 WNS 的身份集成),还必须具有一个 Windows 应用商店开发人员帐户。开发人员帐户不同于开发人员许可证。只有获得了开发人员帐户才能按照本教程操作,因为该帐户与 WNS 集成。

要注册 Windows 应用商店开发人员帐户,请从这里开始:https://appdev.microsoft.com/StorePortals/en-us/Account/Signup/Start/

创建简单的 Windows 应用商店应用程序

动态磁贴和 toast 是远程通知可以激活的两个元素。Windows shell 将处理这些元素的显示与警报。应用程序将通知 Windows 它需要获得通知,而这只需要数行代码就能实现。借助于 Service Bus 通知中心 SDK,所需的代码行甚至可以更少。

  1. 要开始操作,请从某个可用模板创建 Windows 应用商店应用程序。使用“网格应用程序”模板在 Visual Studio 中创建一个 C# Windows 应用商店项目。为其指定名称,例如 MyPushApp。“网格应用程序”模板是通知中心提供的广播推送通知和标记定向推送通知(例如新闻应用程序)的良好起点。

  2. 右键单击项目节点,然后单击“应用商店”菜单。单击“将应用程序与应用商店相关联”,随后将有一个向导窗口引导你将此项目与某个 Windows 应用商店应用程序注册相关联。必须使用 Windows 应用商店开发人员帐户。完成登录步骤后,将有一个页面显示现有的应用程序注册。如果未注册任何应用程序,下一页将显示一个空白列表,如此处所示。

    Windows 应用商店的应用
  3. 不管何种情况,开发人员门户上都会显示一个用于创建注册的链接。如果你有应用程序,该链接将出现在列表的顶行。单击该链接,转到应用商店仪表板。执行第一个步骤,并为 Windows 应用商店中的应用程序指定唯一名称。不要像下面显示的那样使用 MyPushApp,因为该名称已被使用。

    Windows 应用商店的应用
  4. 保留应用程序名称后,保存并跳到“服务”步骤。

    Windows 应用商店的应用
  5. 单击“Live 服务”信息的链接,如下所示:

    Windows 应用商店的应用
  6. 在推送通知区域,单击“对服务进行身份验证”。复制两个重要的信息片段:程序包安全标识符 (SID) 和客户端机密。

  7. 切换回 Visual Studio,其中,打开的向导将自动刷新并显示新的保留项。选择所需的行,然后单击“下一步”以及后续页面上的“关联”。此时,你的项目与 Windows 应用商店中的注册已进行链接,你的应用程序现在有权使用 WNS。

创建和配置 Service Bus 通知中心

在完成 Windows 应用程序及其匹配的 Windows 应用商店配置文件的基本设置后,请将应用程序与新的 Service Bus 通知中心进行关联。

  1. 登录到 Windows Azure 管理门户。然后单击页面左下角的“新建”。

  2. 依次导航到“应用程序服务”、“Service Bus”和“通知中心”。单击“快速创建”并键入通知中心的名称。选择地理区域,以及要在其中创建通知中心的 Service Bus 命名空间。如果没有可用的命名空间,将新建一个具有指定名称的命名空间。

    创建 Service Bus 通知集线器
  3. 要创建通知中心,请单击复选标记。选择左导航窗格中的 Service Bus 选项卡后,单击新建的(或重复使用的)命名空间。新的通知中心将出现在列表中。

    Service Bus 通知集线器
  4. 单击“通知中心”。此时将显示“通知中心”概述页面。然后单击顶部的“配置”选项卡。

    Service Bus 通知集线器
  5. 插入程序包 SID 和客户端机密。然后单击底部工具栏中的“保存”。

  6. 暂时不要导航到其他位置。在通知中心单击“连接信息”并记录两个连接字符串。在运行时将使用这些值获取对“通知中心”的访问权限。在完成此方案时必须获取这些连接字符串。

    Service Bus 通知集线器

连接应用程序

网格应用程序已链接到其 Windows 应用商店配置文件,该配置文件已链接到通知中心。现在,你将在此快速首次演练中向应用程序发送一条“toast”警报。

首先,请在清单中启用 toast 功能,需在 Visual Studio 2012 中执行此操作。

  1. 在解决方案资源管理器中,双击 Package.appxmanifest

  2. 找到 Toast Capable 属性并将其设置为 True,然后保存并关闭应用程序。

    <VisualElements DisplayName="MyPushApp" Logo="Assets\Logo.png"
                    SmallLogo="Assets\SmallLogo.png" Description="App1"
                    ForegroundText="light" BackgroundColor="#464646"
                    ToastCapable="true">
        <DefaultTile ShowName="allLogos" />
        <SplashScreen Image="Assets\SplashScreen.png" />
    </VisualElements>
    
  3. 该应用程序在运行时必须注册到通知中心,使系统能够识别特定的应用程序实例。从技术上讲,应用程序将同时注册到 WNS 和通知中心,但是,Service Bus API 将这些独立的步骤包装成了一个步骤。每次重新启动应用程序后,它还能记住设置。在应用程序设置中,必须为用户提供禁用通知的方式。请参阅 Windows Store guidelines(Windows 应用商店指南)。本演练未包括这些信息。

  4. 要实施推送通知客户端,请从项目内部添加对 WinRT 的 Microsoft.WindowsAzure.Messaging.Managed.dll 的引用。从此处下载该库。

  5. 右键单击 Visual Studio 项目中的“引用”节点,然后添加新的引用。在对话框中,浏览到程序集位置并将其选中。

  6. 打开 App.xaml.cs 文件。

  7. 添加以下 using 语句:

    using Microsoft.WindowsAzure.Messaging;
    using System.Threading.Tasks;
    using Windows.Data.Xml.Dom;
    using Windows.UI.Notifications;
    using Windows.Networking.PushNotifications; 
    
    
  8. App 类的内部,添加一个字段用于保留对应用程序的 NotificationHub 客户端类的引用 - 通过 Service Bus 通知 API:

    sealed partial class App : Application
    {
        NotificationHub notificationHub;
    
    
  9. 初始化构造函数中的 notificationHub。将 connectionstring 替换为之前获取的、与规则 DefaultListenSharedAccessSignature 关联的连接字符串。这样即可创建一个调用签名,用于表达添加新注册所需的访问权限。它不会授予任何其他权限。将 myhub 替换为你的通知中心的名称。

    public App()
    {
        notificationHub = new NotificationHub("myhub", "connectionstring");
    
        this.InitializeComponent();
        this.Suspending += OnSuspending;
    }
    
  10. 若要在启动应用时初始化通知及续订注册,请添加两个方法。第一个为 InitializeNotificationsAsync。此方法用于重新获取 WNS channelURI 并确保将其注册到通知中心。

    async Task InitializeNotificationsAsync()
    {
        var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
    
        await notificationHub.RegisterNativeAsync(channel.Uri);
    }
    
  11. 要向应用程序添加初始化函数,请将 OnLaunched 方法标记为异步,并添加所需的调用:

    protected async override void OnLaunched(LaunchActivatedEventArgs args)
    {
        await InitializeNotificationsAsync();
    
  12. 要对其他激活模式执行注册,请向 OnActivated 事件覆盖添加相同的调用:

    protected async override void OnActivated(IActivatedEventArgs args) {
        base.OnActivated(args);
        await InitializeNotificationsAsync();
    }
    

概况而言,此过程显示了如何使用区区几个代码行向 Windows 应用商店应用程序添加具有高度伸缩性和高度自定义性的通知事件传递功能。

使用 .NET 发送通知

若要创建并发送通知,可以创建一个控制台应用程序或 Web 应用程序,或者只创建一个脚本,也可以使用移动服务。如果您要使用移动服务来发送通知,请跳到下一部分。与类似的服务不同,客户端无需与后端通信。

如果使用的是 Visual Studio Express 2012 for Windows 8,请转到 Visual Studio Express 2012 for Windows Desktop 以创建控制台应用程序。或者使用 Visual Studio Express 2012 for Web 创建简单的 Web 窗体应用程序。

不管是选择控制台应用程序还是 Web 应用程序作为后端,都请添加对以下项目的引用:

  • Microsoft.ServiceBus.Preview.dll

  • System.Runtime.Serialization.dll

在 ASP.NET Web 窗体应用程序中,将 default.aspx HTML 页面替换为文本框和按钮:

<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">
<div>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:Button ID="Button1" runat="server" Text="Send" OnClick="Button1_Click" />
</div>
</asp:Content>

default.aspx.cs 文件中,添加 Button1_Click 方法并将 myhub 替换为通知中心的名称。将 connectionstring 替换为之前获取的 DefaultFullSharedAccessSignature 的连接字符串。

protected void Button1_Click(object sender, EventArgs e)
{
    var hubClient = NotificationHubClient.CreateClientFromConnectionString("connectionstring", "myhub");
    var toast = "<toast> <visual> <binding template=\"ToastText01\"> <text id=\"1\">Hello! </text> </binding> </visual> </toast>";
    hubClient.SendWindowsNativeNotificationAsync(toast);
}

在应用程序中,创建 NotificationHubClient 一次便可将其重复使用。

如果你正在创建控制台应用程序,请使用以下代码段作为 Main() 函数。如前所述进行相同的替换。可以通过使用带引号的字符串参数调用应用程序,从而发送特定的通知消息。默认消息为“Hello”。

static void Main(string[] args)
{
    var hubClient = NotificationHubClient.CreateClientFromConnectionString("connectionstring", "myhub");
    var toast = "<toast> <visual> <binding template=\"ToastText01\"> <text id=\"1\">Hello! </text> </binding> </visual> </toast>";
    hubClient.SendWindowsNativeNotificationAsync(toast);
}

任一应用程序都可发送通知事件。如果注册了 10,000 个客户端实例,通知中心将创建并发送 10,000 个通知副本,并执行所需的错误处理和注册管理。若要了解如何发送多平台通知、目标特定的用户和相关组,以及其他高级功能,请参阅深入的如何:Service Bus 通知中心(Windows 应用商店应用程序)主题和 Windows Azure Service Bus 通知中心概述。

使用移动服务发送通知

使用移动服务,可以快速为应用程序创建后端。可以使用移动服务中的通知中心来向数百万台设备广播通知,或者轻松使用标记创建相关组。

本教程使用计划作业,但您可以从移动服务中的任何服务器端脚本发送通知。

  1. 创建一项新移动服务,或登录您自己的移动服务。有关移动服务的详细信息,请转到此处

  2. 在顶部栏上,单击“计划程序”。

    推送通知
  3. 创建新的计划作业,插入名称,然后单击“按需”。

    推送通知
  4. 作业创建之后,单击作业名称。然后在顶部栏上,单击“脚本”。

  5. 插入以下脚本。确保将占位符替换为通知中心名称以及在上一步骤获取的 DefaultFullSharedAccessSignature 的连接字符串。单击“保存”。

    function PushToHub() {
        var azure = require('azure');
        
        var notificationHubService = azure.createNotificationHubService('<hub name>',
        '<connection string>');
    
        notificationHubService.wns.sendToastText01(
            null,
            {
                text1: 'Hello from Mobile Services!!!'
            },
            function (error) {
                if (!error) {
                    console.warn("Notification successful");
                }
        });
    }
    
  6. 在底部栏上,单击“运行一次”。

note注意
移动服务使用 Windows Azure SDK for Node.js 来访问通知中心。有关 Windows Azure SDK for Node.js 与通知中心的详细信息,请转到此处

同上,如果注册了 10,000 个客户端实例,通知中心将创建并发送 10,000 个通知副本,并执行所需的错误处理和注册管理。若要了解如何发送多平台通知、目标特定的用户和相关组,以及其他高级功能,请参阅深入的如何:Service Bus 通知中心(Windows 应用商店应用程序)主题和 Windows Azure Service Bus 通知中心概述。

本文是否对您有所帮助?
(1500 个剩余字符)
感谢您的反馈

社区附加资源

显示:
© 2014 Microsoft