使用 SNS 接收推送通知 (Xamarin iOS) - AWS Mobile SDK

AWS SDK for .NET 现在包括适用于 Xamarin 的 AWS Mobile SDK。本指南参考了适用于 Xamarin 的 Mobile SDK 的存档版本。

使用 SNS 接收推送通知 (Xamarin iOS)

本文档介绍了如何使用 Amazon Simple Notification Service (SNS) 和适用于 .NET 和 Xamarin 的 AWS Mobile SDK 将推送通知发送到 Xamarin iOS 应用程序。

项目设置

先决条件

在开始本教程前,必须先完成有关设置适用于 .NET 和 Xamarin 的 AWS Mobile SDK 的说明中的所有步骤。

设置 SNS 权限

按照设置适用于 .NET 和 Xamarin 的 AWS Mobile SDK 中第 2 步的说明操作,将下述策略附加到您应用程序的角色中。这样可为您的应用程序提供访问 SNS 的适当权限:

  1. 转到 IAM 控制台,然后选择您要配置的 IAM 角色。

  2. 单击 Attach Policy,选择 AmazonSNSFullAccess 策略,然后单击 Attach Policy

警告

建议不要在生产环境中使用 AmazonSNSFullAccess。我们在此处使用它是为了让您快速启动并运行。有关为 IAM 角色指定权限的更多信息,请参阅 IAM 角色权限概述

获得 Apple iOS 开发人员计划成员资格

您需要在物理设备上运行您的应用程序以接收推送通知。要在设备上运行您的应用程序,您必须拥有 Apple iOS 开发人员计划成员资格。一旦您拥有了成员资格,就可以使用 Xcode 生成签名身份。有关更多信息,请参阅 Apple 的 App Distribution Quick Start 文档。

创建 iOS 证书

首先,您需要创建一个 iOS 证书。然后,您需要创建为推送通知而配置的预置配置文件。为此,请执行以下操作:

  1. 转至 Apple Developer Member Center,单击 Certificates, Identifiers & Profiles

  2. 单击 iOS Apps 下的 Identifiers,单击 Web 页面右上角的加号按钮以添加一个新的 iOS 应用程序 ID,然后输入应用程序 ID 描述。

  3. 向下滚动到 Add ID Suffix 部分,选择 Explicit App ID,然后输入您的服务包标识符。

  4. 向下滚动到 App Services 部分,并选择 Push Notifications

  5. 单击继续

  6. 单击 Submit (提交)

  7. 单击完成

  8. 选择您刚刚创建的应用程序 ID,然后单击 Edit

  9. 向下滚动到 Push Notifications 部分。单击 Development SSL Certificate 下的 Create Certificate

  10. 按照说明创建证书签名请求 (CSR)、上传请求、下载将用于与 Apple Notification Service (APNS) 通信的 SSL 证书。

  11. 返回到证书、身份和配置文件页面。单击 Provisioning Profiles 下的 All

  12. 单击右上角的 + 按钮以添加新的预置配置文件。

  13. 选择 iOS App Development,然后单击 Continue

  14. 选择您的应用程序 ID,然后单击 Continue

  15. 选择您的开发人员证书,然后单击 Continue

  16. 选择您的设备,然后单击 Continue

  17. 输入配置文件名称,然后单击 Generate

  18. 下载预置文件后双击以安装预置配置文件。

有关预置为推送通知而配置的配置文件的更多信息,请参阅 Apple 的配置推送通知文档。

使用证书在 SNS 控制台中创建平台 ARN

  1. 运行 KeyChain 访问应用程序,选择屏幕左下角的我的证书,然后右键单击生成的 SSL 证书以连接到 APNS,选择导出。系统将提示您指定文件的名称和密码以保护证书。证书将保存在 P12 文件中。

  2. 转至 SNS Console,单击屏幕左侧的 Applications (应用程序)

  3. 单击 Create platform application,以创建新的 SNS 平台应用程序。

  4. 输入 Application Name

  5. 对于 Push notification platform,选择 Apple Development

  6. 单击 Choose File,选择导出 SSL 证书时创建的 P12 文件。

  7. 输入在导出 SSL 证书时指定的密码,然后单击 Load Credentials From File

  8. 单击 Create platform application

  9. 选择您刚创建的平台应用程序,然后复制应用程序 ARN。在后续步骤中,您将需要此信息。

将 SNS NuGet 程序包添加到您的项目中

按照设置适用于 .NET 和 Xamarin 的 AWS Mobile SDK 中第 4 步的说明操作,将 Amazon Simple Notification Service NuGet 程序包添加到您的项目中。

创建 SNS 客户端

var snsClient = new AmazonSimpleNotificationServiceClient(credentials, region);

为您的应用程序注册远程通知

要注册应用程序,请对您的 UIApplication 对象调用 RegisterForRemoteNotifications,如下所示。将以下代码放入 AppDelegate.cs 中,以将您的平台应用程序 ARN 插在下面的提示之处:

public override bool FinishedLaunching(UIApplication app, NSDictionary options) { // do something var pushSettings = UIUserNotificationSettings.GetSettingsForTypes ( UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, null ); app.RegisterUserNotifications(pushSettings); app.RegisterForRemoteNotifications(); // do something return true; } public override void RegisteredForRemoteNotifications(UIApplication application, NSData token) { var deviceToken = token.Description.Replace("<", "").Replace(">", "").Replace(" ", ""); if (!string.IsNullOrEmpty(deviceToken)) { //register with SNS to create an endpoint ARN var response = await SnsClient.CreatePlatformEndpointAsync( new CreatePlatformEndpointRequest { Token = deviceToken, PlatformApplicationArn = "YourPlatformArn" /* insert your platform application ARN here */ }); } }

将消息从 SNS 控制台发送到端点

  1. 转到 SNS 控制台 >“Applications (应用程序)”

  2. 依次选择您的平台应用程序和端点,然后单击 Publish to endpoint

  3. 在文本框中键入文本消息,然后单击 Publish message 发布消息。