Amazon Simple Notification Service
开发人员指南 (API Version 2010-03-31)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

使用 Amazon SNS 和 APNS 向 iOS 应用程序发送推送通知消息

本节介绍如何通过用于 Amazon SNS API 的先决条件信息,利用 Amazon SNS 和 APNS 向 iOS 应用程序发送推送通知消息。将这些先决条件信息添加到 AWS 示例文件 SNSMobilePush.java,该文件包含在 snsmobilepush.zip 文件中。

您还可以使用 Amazon SNS 控制台。有关如何使用 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

  2. 根据所用的 APNS,取消 sample.demoAppleAppNotification();sample.demoAppleSandboxAppNotification(); 的注释。举例来说,如果您正在使用 demoAppleSandboxAppNotification,应如下所示:

    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();
  3. 找到 demoAppleSandboxAppNotification 方法并输入从 APNS 获取的设备令牌作为设备令牌字符串的值。举例来说,看起来应如下所示:

    Copy
    String deviceToken = "examp1e29z6j5c4df46f809505189c4c83fjcgf7f6257e98542d2jt3395kj73";
  4. 输入应用程序的 APNS SSL 证书。在证书每一新行的开头,必须添加 \n。举例来说,看起来应如下所示:

    Copy
    String certificate = "-----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. 输入应用程序的私有密钥。在证书每一新行的开头,必须添加 \n。举例来说,看起来应如下所示:

    Copy
    String privateKey = "-----BEGIN RSA PR1VATE KEY-----\nMJICiTCHAfICCQD9m7oRw0uXOjANBgkqhkiG7w0BAQUFADCBiDELMAkGA1UEBhMC\nWVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGx2MQ8wDQYDVQQKEwZBbWF6\nVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6\n4MXNchZOFFreg4Rr3Xzhb9RhvlIRgsr3wU4/FYai3z96EXAMPLE=\n-----END RSA PR1VATE KEY-----";
  6. 输入应用程序的名称。应用程序名称只能由大写和小写 ASCII 字母、数字、下划线、连字符和句点构成,长度必须为 1 到 256 个字符。举例来说,看起来应如下所示:

    Copy
    String applicationName = "mypushappname";
  7. 运行该 Java 应用程序。可以看到输出类似于 IDE 输出窗口中的内容:

    Copy
    =========================================== Getting Started with Amazon SNS =========================================== {PlatformApplicationArn: arn:aws:sns:us-west-2:111122223333:app/APNS_SANDBOX/mypushappname} {EndpointArn: arn:aws:sns:us-west-2:111122223333:endpoint/APNS_SANDBOX/pushapp/97e9ced9-f136-3893-9d60-775467eafebb} {"default":"This is the default Message","APNS_SANDBOX":"{ \"aps\" : { \"alert\" : \"You have got email.\", \"badge\" : 9,\"sound\" :\"default\"}}"} Published. MessageId=d65fb4bb-b903-5e37-83d4-feb4818d6da3

    在 iOS 设备上,可以看到一条消息通知。