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 的适当权限:
-
转到 IAM 控制台
,然后选择您要配置的 IAM 角色。 -
单击 Attach Policy,选择 AmazonSNSFullAccess 策略,然后单击 Attach Policy。
警告
建议不要在生产环境中使用 AmazonSNSFullAccess。我们在此处使用它是为了让您快速启动并运行。有关为 IAM 角色指定权限的更多信息,请参阅 IAM 角色权限概述。
获得 Apple iOS 开发人员计划成员资格
您需要在物理设备上运行您的应用程序以接收推送通知。要在设备上运行您的应用程序,您必须拥有 Apple iOS 开发人员计划成员资格
创建 iOS 证书
首先,您需要创建一个 iOS 证书。然后,您需要创建为推送通知而配置的预置配置文件。为此,请执行以下操作:
-
转至 Apple Developer Member Center
,单击 Certificates, Identifiers & Profiles。 -
单击 iOS Apps 下的 Identifiers,单击 Web 页面右上角的加号按钮以添加一个新的 iOS 应用程序 ID,然后输入应用程序 ID 描述。
-
向下滚动到 Add ID Suffix 部分,选择 Explicit App ID,然后输入您的服务包标识符。
-
向下滚动到 App Services 部分,并选择 Push Notifications。
-
单击继续。
-
单击 Submit (提交)。
-
单击完成。
-
选择您刚刚创建的应用程序 ID,然后单击 Edit。
-
向下滚动到 Push Notifications 部分。单击 Development SSL Certificate 下的 Create Certificate。
-
按照说明创建证书签名请求 (CSR)、上传请求、下载将用于与 Apple Notification Service (APNS) 通信的 SSL 证书。
-
返回到证书、身份和配置文件页面。单击 Provisioning Profiles 下的 All。
-
单击右上角的 + 按钮以添加新的预置配置文件。
-
选择 iOS App Development,然后单击 Continue。
-
选择您的应用程序 ID,然后单击 Continue。
-
选择您的开发人员证书,然后单击 Continue。
-
选择您的设备,然后单击 Continue。
-
输入配置文件名称,然后单击 Generate。
-
下载预置文件后双击以安装预置配置文件。
有关预置为推送通知而配置的配置文件的更多信息,请参阅 Apple 的配置推送通知
使用证书在 SNS 控制台中创建平台 ARN
-
运行 KeyChain 访问应用程序,选择屏幕左下角的我的证书,然后右键单击生成的 SSL 证书以连接到 APNS,选择导出。系统将提示您指定文件的名称和密码以保护证书。证书将保存在 P12 文件中。
-
转至 SNS Console
,单击屏幕左侧的 Applications (应用程序)。 -
单击 Create platform application,以创建新的 SNS 平台应用程序。
-
输入 Application Name。
-
对于 Push notification platform,选择 Apple Development。
-
单击 Choose File,选择导出 SSL 证书时创建的 P12 文件。
-
输入在导出 SSL 证书时指定的密码,然后单击 Load Credentials From File。
-
单击 Create platform application。
-
选择您刚创建的平台应用程序,然后复制应用程序 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 控制台发送到端点
-
依次选择您的平台应用程序和端点,然后单击 Publish to endpoint。
-
在文本框中键入文本消息,然后单击 Publish message 发布消息。