Amazon Simple Notification Service
开发人员指南 (API Version 2010-03-31)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

MPNS 入门

适用于 Windows Phone 的 Microsoft Push Notification Service (MPNS) 是一项服务,通过它可以向 Windows Phone 7+ 及 Windows Phone 8.0 应用程序发送推送通知消息。本节介绍如何获取 MPNS 的先决条件以及如何使用 Amazon SNS 和 MPNS 发送推送通知消息。您可以使用 MPNS 发送未验证及已验证的推送通知消息。为提高安全性和规避 MPNS 施加的限制,您应该发送经过验证的推送通知消息。

MPNS 的先决条件

要使用 Amazon SNS 和 MPNS 向 Windows Phone 应用程序发送未经验证的推送通知消息,您需要以下信息:

  • 配置 Windows Phone 应用程序,以便使用 MPNS

  • 来自 MPNS 的推送通知 URI

要使用 Amazon SNS 和 MPNS 向 Windows Phone 应用程序发送经过验证的推送通知消息,您还需要以下信息:

  • 来自 MPNS 的 HTTPS 推送通知 URI

  • 注册为 Windows 应用程序开发人员

  • 传输层安全性 (TLS) 证书

如果您已经具备这些先决条件,则可使用 Amazon SNS 控制台或 Amazon SNS API 向 Windows Phone 应用程序发送推送通知消息。有关如何使用 Amazon SNS 控制台的更多信息,请参阅 使用 Amazon SNS 移动推送。有关如何使用 Amazon SNS API 的更多信息,请参阅步骤 5:使用 Amazon SNS 和 MPNS 向 Windows Phone 应用程序发送推送通知消息

步骤 1:设置您的 Windows Phone 应用程序来接收推送通知消息

要将推送通知消息发送到 Windows Phone 应用程序,必须启用 MPNS 服务的应用程序。有关更多信息,请参阅 设置您的应用程序接收 Windows Phone 8 的推送通知

步骤 2:获取来自 MPNS 的推送通知 URI

要创建具有 Amazon SNS 的移动终端节点,需要来自 MPNS 的推送通知 URI。您可从 MPNS 获得 HTTP 或 HTTPS 推送通知 URI。为提高安全性和规避 MPNS 施加的限制,您应该获取一个用于发送已验证消息的 HTTPS 推送通知 URI。想要了解更多有关获取 HTTPS 推送通知 URI 的信息,请参阅设置经过验证的 Web 服务以发送 Windows Phone 8 推送通知

步骤 3:创建 Windows 开发人员账户

要使用 MPNS 发送已验证消息,必须创建 Windows 开发人员账户。想要了解更多有关开立 Windows 开发人员账户的信息,请参阅开立开发人员账户

步骤 4:上传 TLS 证书

要使用 MPNS 发送已验证消息,必须向您的 Windows 开发人员账户上传从某个 Windows Phone 可信证书颁发机构 (CA) 取得的 TLS 证书。此外,还必须向 Amazon SNS 提交完整的 TLS 证书链及关联的私钥。这有助于使用代表您的 Amazon SNS 与 MPNS 建立安全连接。Amazon SNS 需要 .pem 格式的 TLS 证书和私钥。您可以使用其他实用工具(如 openssl)来转换和导出证书。想要了解更多信息,请参阅设置经过验证的 Web 服务以发送 Windows Phone 8 推送通知Windows Phone OS 7.1 的 SSL 根证书。想要了解更多有关 openssl 的信息,请访问 http://www.openssl.org/

步骤 5:使用 Amazon SNS 和 MPNS 向 Windows Phone 应用程序发送推送通知消息

本节介绍如何使用与 Amazon SNS API 有关的先决条件信息,利用 Amazon SNS 和 MPNS 向 Windows Phone 应用程序发送推送通知消息。将收集的先决条件信息添加到 AWS 示例文件 SNSMobilePush.java,该文件包含在 snsmobilepush.zip 文件中。

您还可以使用 Amazon SNS 控制台。然而,发送广播通知,您比须使用 Amazon SNS API。有关如何使用 Amazon SNS 控制台的更多信息,请参阅 使用 Amazon SNS 移动推送

注意

下面的步骤使用 Eclipse Java IDE。这些步骤假定您已经安装 AWS SDK for Java,并且您 AWS 账户拥有 AWS 安全证书。有关更多信息,请参阅 AWS SDK for Java。有关证书的更多信息,请参阅 AWS General Reference 中的如何获取安全证书?

将示例添加到 Eclipse

  1. 在 Eclipse 中创建一个新 Java 项目(File (文件) | New (新建) | Java Project (Java 项目))。

  2. SNSSamples 文件夹导入到新建的 Java 项目的顶级目录中。在 Eclipse 中,右键单击 Java 项目的名称,然后单击 Import (导入),展开 General (常规),依次单击 File System (文件系统)Next (下一步),浏览到 SNSSamples 文件夹,单击 OK (确定),然后单击 Finish (完成)

  3. 在 SNSSamples\src\com\amazonaws\sns\samples\mobilepush 文件夹中,打开 AwsCredentials.properties 文件并添加您的 AWS 安全证书。

将 AWS SDK for Java 添加到生成路径中

  1. 右键单击 Java 项目文件夹,单击 Build Path (生成路径),然后单击 Configure Build Path... (配置生成路径…)

  2. 单击 Libraries (库) 选项卡,然后单击 Add Library... (添加库…)

  3. 单击 AWS SDK for Java (适用于 Java 的 AWS 软件开发工具包),单击 Next (下一步),然后单击 Finish (完成)

将先决条件信息添加到 SNSMobilePush.java

  1. 在 SNSSamples\src\com\amazonaws\sns\samples\mobilepush 文件夹中,在 Eclipse 中打开 SNSMobilePush.java 并取消注释 sample.demoMPNSAppNotification(); 。如下所示:

    Copy
    SNSMobilePush sample = new SNSMobilePush(sns); // TODO: Uncomment the services you wish to use. //sample.demoAndroidAppNotification(); //sample.demoKindleAppNotification(); //sample.demoAppleAppNotification(); //sample.demoAppleSandboxAppNotification(); //sample.demoBaiduAppNotification(); //sample.demoWNSAppNotification(); sample.demoMPNSAppNotification();
  2. 找到 demoMPNSAppNotification 方法并输入来自 MPNS 的通知 URI 作为 notificationChannelURI 字符串的值。

  3. 输入应用程序的名称。应用程序名称只能由大写和小写 ASCII 字母、数字、下划线、连字符和句点构成,长度必须为 1 到 256 个字符。举例来说,看起来应如下所示:

    Copy
    String applicationName = "mpnspushapp";
  4. 输入 .pem 文件格式的 MPNS TLS 证书。必须包含完整的证书链,以根 CA 证书开始(位于顶部),以所颁发的证书结束(位于底部)。在证书每一新行的开头,必须添加 \n。举例来说,看起来应如下所示:

    Copy
    String certificateChain = "-----BEGIN CERTIFICATE-----\nMIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC\nVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6\nb24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd\nBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN\nMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD\nVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z\nb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt\nYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ\n21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T\nrDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE\nIbb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4\nnUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb\nFFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb\nNYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE=\n-----END CERTIFICATE-----";
  5. 输入 .pem 文件格式的 MPNS TLS 证书私钥。在证书每一新行的开头,必须添加 \n。举例来说,看起来应如下所示:

    Copy
    String privateKey = "-----BEGIN RSA PR1VATE KEY-----\nMJICiTCHAfICCQD9m7oRw0uXOjANBgkqhkiG7w0BAQUFADCBiDELMAkGA1UEBhMC\nWVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGx2MQ8wDQYDVQQKEwZBbWF6\nVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6\n4MXNchZOFFreg4Rr3Xzhb9RhvlIRgsr3wU4/FYai3z96EXAMPLE=\n-----END RSA PR1VATE KEY-----";
  6. 运行应用程序。可以看到输出类似于 IDE 输出窗口中的内容:

    Copy
    =========================================== Getting Started with Amazon SNS =========================================== {PlatformApplicationArn: arn:aws:sns:us-west-2:111122223333:app/MPNS/TestApp} {EndpointArn: arn:aws:sns:us-west-2:111122223333:endpoint/MPNS/TestApp/557597f8-be4a-3035-8c6d-bb7fa8b20fef} {Message Body: {"MPNS":"<?xml version=\"1.0\" encoding=\"utf-8\"?><wp:Notification xmlns:wp=\"WPNotification\"><wp:Tile><wp:Count>23</wp:Count><wp:Title>This is a tile notification</wp:Title></wp:Tile></wp:Notification>"}} {Message Attributes: ("AWS.SNS.MOBILE.MPNS.Type": "token"),("AWS.SNS.MOBILE.MPNS.NotificationClass": "realtime")} Published! {MessageId=ce9855bf-395f-5a1a-a4b9-19ace305780d}

    在 Windows Phone 设备上,您可以看到应用程序中的推送消息通知。