导出 (0) 打印
全部展开

Service Bus 通知中心教程(iOS 应用程序)

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) 的支持。

本教程介绍如何设置可通过 Apple 推送通知服务广播通知的 iOS 应用程序和简单 .NET 应用程序。

要执行的步骤包括:

  1. 生成证书签名请求,以激活应用程序的 APN。

  2. 在 iOS 设置门户中注册 iOS 应用程序,以启用推送通知并获取凭据和设置配置文件。

  3. 为应用程序创建设置配置文件。

  4. 创建和配置通知中心。

  5. 设置 iOS 应用程序,以便从通知中心接收推送通知。

  6. 创建后端程序以广播推送通知。

此外,还提供了深入的如何:Service Bus 通知中心(iOS 应用程序)主题以及 Windows Azure Service Bus 通知中心概述主题。

必备组件

要执行本教程所述任务,必须准备下列项目:

  • Apple 开发人员帐户。

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

  • Service Bus iOS SDK 框架。可以从此处下载此框架。

生成证书签名请求

  1. 首先,生成证书签名请求 (CSR) 文件,Apple 将使用该文件生成签名的证书。

  2. 从“Utilities”(实用程序)文件夹运行“Keychain Access”(密钥链访问)工具。

  3. 单击“Keychain Access”(密钥链访问),展开“Certificate Assistant”(证书助手),然后单击“Request a Certificate from a Certificate Authority...”(从证书颁发机构请求证书...)。

    证书签名请求
  4. 单击“User Email Address”(用户电子邮件地址),键入“Common Name”(通用名称)和“CA Email Address”(CA 电子邮件地址)值,确保已选择“Saved to disk”(保存到磁盘),然后单击“Continue”(继续)。

    证书信息
  5. 在“Save As”(另存为)中键入证书签名请求 (CSR) 文件的名称,在“Where”(位置)中选择位置,然后单击“Save”(保存)。此操作会将 CSR 文件保存到选定位置;默认位置为“Desktop”(桌面)。请记住为此文件选择的位置。

    证书签名请求
  6. 接下来,在 Apple 中注册应用程序,启用推送通知,并上载这个导出的 CSR 以创建推送证书。

注册应用程序并启用推送通知

  1. 为了能够向 iOS 应用程序发送推送通知,请向 Apple 注册你的应用程序,并注册推送通知。

  2. 如果尚未注册应用程序,请导航到 Apple 开发人员中心的 iOS 设置门户,使用你的 Apple ID 登录,单击“App IDs”(应用程序 ID),然后单击“New App ID”(新建应用程序 ID)。

    iOS 设置门户
  3. 在“Description”(描述)中键入应用程序的名称,在“Bundle Identifier”(包标识符)中输入值 ServiceBus.Tutorial,然后单击“Submit”(提交)。

    note注意
    包标识符必须与你在 Xcode 项目中为应用程序提供的标识符相同。

  4. 找到你创建的应用程序 ID,然后单击“Configure”(配置)。

  5. 选中“Enable for Apple Push Notification service”(为 Apple 推送通知服务启用)复选框,然后单击“Development Push SSL Certificate”(开发推送 SSL 证书)对应的“Configure”(配置)。此时将显示“Apple Push Notification service SSL Certificate Assistant”(Apple 推送通知服务 SSL 证书助手)。

    note注意
    同一过程适用于生产证书。

  6. 单击“Browse”(浏览),转到你在第一个任务中创建的 CSR 文件保存到的位置,然后单击“Generate”(生成)。

  7. 门户创建证书后,请单击“Continue”(继续),并在下一屏幕上单击“Download”(下载)。随即会下载该签名证书,并将其保存到计算机上的“Downloads”(下载)文件夹中,文件名为 aps_development.cer

  8. 双击下载的推送证书 aps_development.cer。此时会下载新证书并将其安装在密钥链中。

  9. 在“Keychain Access”(密钥链访问)中,右键单击新证书,单击“Export”(导出),将文件命名为 ServiceBusTutorial,选择 .p12 格式,然后单击“Save”(保存)。

    Important重要提示
    如果门户不接受 .p12 扩展名,请将扩展名更改为 .pfx。

为应用程序创建设置配置文件

  1. 返回 iOS 设置门户,单击“Provisioning”(设置),然后单击“New Profile”(新建配置文件)。

  2. 输入“Profile Name”(配置文件名称),单击用于测试的“Certificates and Devices”(证书和设备),选择“App ID”(应用程序 ID),然后单击“Submit”(提交)。此时将会创建一个新的设置配置文件。

  3. 从设置配置文件列表中,单击此新配置文件对应的“Download”(下载)。该配置文件将下载到本地计算机。

  4. 在 Xcode 中打开管理器,选择“Devices”(设备)视图,在左窗格中的“Library”(库)区域内单击“Provisioning Profiles”(设置配置文件),然后在中间窗格的底部单击“Import”(导入)按钮。

  5. 找到下载的设置配置文件并单击“Open”(打开)。

  6. 在“Targets”(目标)下,单击应用程序的主要目标(通常是应用程序名称),展开“Code Signing Identity”(代码签名身份),然后在“Debug”(调试)下选择新的配置文件。此过程确保 Xcode 项目使用新配置文件进行代码签名。

创建 Service Bus 通知中心

使用 Windows Azure 管理门户,可以创建一个通知中心并对其进行配置,以向 Windows 应用商店应用程序发送推送通知。

  1. 登录到 Windows Azure 管理门户 (http://manage.windowsazure.com/)

  2. 在左下角单击“新建”。

  3. 然后依次单击“应用程序服务”、“Service Bus”、“通知中心”和“快速创建”。

    创建 Service Bus 通知集线器
  4. 选择通知中心的名称、区域以及要在其中创建此通知中心的命名空间(如果没有可用的命名空间,将会设置一个具有指定名称的新命名空间)。

  5. 单击复选标记。

  6. 在左导航窗格中的“Service Bus”选项卡下,单击创建的命名空间。通知中心应出现在列表中。

    Service Bus 通知集线器
  7. 单击该通知中心,然后单击顶部的“配置”选项卡。

    Service Bus 通知集线器
  8. 使用 APN 证书 (ServiceBusTutorial.p12) 的密码上载该证书。请记得选择该证书的相应环境,即“生产”或“开发”。

创建 iOS 应用程序并在 Service Bus 中注册推送通知

下载和引用 Service Bus 框架

  1. 下载 Service Bus iOS Preview SDK

  2. WindowsAzureServiceBus.framework 文件夹从“查找器”拖放到你的项目中(选择“将项目复制到目标组的文件夹(如果需要)”)。

访问通知中心

  1. 在应用程序的 AppDelegate 类中添加以下导入指令。

    #import <WindowsAzureMessaging/WindowsAzureMessaging.h>
    
  2. didFinishLaunchingWithOptions 方法中写入以下代码:

    [[UIApplication sharedApplication] registerForRemoteNotificationTypes: UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound];
    
  3. 在 Windows Azure 管理门户中,单击左导航窗格中的“Service Bus”,然后在右侧单击你的命名空间。记下命名空间的名称。

  4. 单击通知中心,然后单击底部工具栏上的“连接信息”。

    Service Bus 通知集线器
  5. 复制名为 DefaultListenSharedAccessSignature 的密钥的连接字符串。

  6. 在 AppDelegate.m 中添加以下方法,用于创建此设备的模板注册。确保使用刚从门户中复制的值替换连接字符串:

    (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *) deviceToken {    
        SBNotificationHub* hub = [[SBNotificationHub alloc] initWithConnectionString:
                                  @"<connection string>" notificationHubPath:@"mynh"];
        
        [hub registerNativeWithDeviceToken:deviceToken tags:nil completion:^(NSError* error) {
            if (error != nil) {
                NSLog(@"Error registering for notifications: %@", error);
            }
        }];
    }
    
  7. 在 AppDelegate.m 中添加以下方法,以便在运行应用程序时收到通知的情况下显示 UIAlert

    - (void)application:(UIApplication *)application didReceiveRemoteNotification:
    (NSDictionary *)userInfo {
        NSLog(@"%@", userInfo);
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Notification" message:
        [userInfo objectForKey:@"inAppMessage"] delegate:nil cancelButtonTitle:
        @"OK" otherButtonTitles:nil, nil];
        [alert show];
    }
    

如何:Service Bus 通知中心(iOS 应用程序)部分,可以找到有关前面的代码以及如何从 iOS 应用程序访问通知中心的更高级功能的详细信息。

创建后端应用程序以发送推送通知

  1. 在 Visual Studio 中创建一个新项目,选择“Visual C#”->“Windows”->“控制台应用程序”。

  2. 在“解决方案资源管理器”中,右键单击“引用”,然后单击“管理 NuGet 程序包”。搜索程序包 Service Bus 预览功能并进行安装。

  3. 在 Program.cs 中,在顶部添加以下代码:

    using Microsoft.ServiceBus;
    using Microsoft.ServiceBus.Messaging;
    using Microsoft.ServiceBus.Notifications;
    
  4. 在 Windows Azure 管理门户的通知中心仪表板中,单击底部工具栏上的“连接信息”。

    Service Bus 通知集线器
  5. 复制名为 DefaultFullSharedAccessSignature 的密钥的连接字符串。

  6. 在 Program.cs 的 Main() 方法中粘贴以下代码,将占位符替换为刚从门户中复制的连接字符串:

    var hubClient = NotificationHubClient.CreateClientFromConnectionString(“<connection string>, "myHub");
    var iosPayload = AppleNotificationJsonBuilder.Create("Hello!");
    iosPayload.CustomFields.Add("inAppMessage", "Hello!");
    hubClient.SendAppleNativeNotification(iosPayload.ToJsonString());
    

运行应用程序并发送通知

  1. 在 Xcode 的左上角,单击“iOS Device”(iOS 设备)。

Important重要提示
推送通知在模拟器中不起作用。

  1. 在设备上运行应用程序。

  2. 在 Visual Studio 中运行控制台程序。

  3. 设备上会显示通知。

使用 Node.js 发送通知

  1. 安装 Azure 节点模块:

    npm install azure
    
  2. 在节点脚本(或交互控制台)中,键入以下内容:

    var azure = require('azure');
    var hub = azure.createNotificationHubService('<your hub name>', '<your connection string with full access>');
    hub.apns.send(null, '{ alert: "This is my toast message for iOS!"}');
    

使用移动服务发送通知

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

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

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

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

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

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

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

    function PushToNotificationHub() {
        var azure = require('azure');
        
        var notificationHubService = azure.createNotificationHubService('<hub name>',
        '<connection string>');
    
        notificationHubService.hub.apple.send(
            null,
            {
                alert: "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 个通知副本,并执行所需的错误处理和注册管理。

后续步骤

通知中心提供更多有用功能。请参阅以下主题以了解有关通知中心的详细信息。

社区附加资源

显示:
© 2014 Microsoft