AWS SDK for .NET 现在随附适用于 Unity 的 AWS Mobile SDK。本指南引用适用于 Unity 的 Mobile SDK 的存档版本。有关更多信息,请参阅什么是适用于 Unity 的 AWS Mobile SDK?。
Amazon Simple Notification Service
使用 Amazon Simple Notification Service (SNS) 和 Unity SDK,您可以编写接收移动推送通知的 iOS 和 Android 应用程序。有关 SNS 的信息,请参阅 Amazon Simple Notification Service
本主题将指导您完成配置适用于 Unity 的 AWS SDK 的示例应用程序 SNSExample.unity,以通过 Amazon SNS 接收移动推送通知。
您可以使用 SNSExample.unity 示例创建 iOS 和 Android 应用程序。iOS 和 Android 的配置步骤不同,请阅读下面对应于您的目标平台的部分。
先决条件
需要满足以下先决条件。
设置 SNS 权限
当您创建一个 Cognito 身份池时,会生成两个 IAM 角色:
-
Cognito/_<Identity-Pool-Name>Auth_DefaultRole – 经过身份验证的用户的默认 IAM 角色
-
Cognito/_<Identity-Pool-Name>Unauth_DefaultRole – 未经身份验证的用户的默认 IAM 角色
必须为这些角色添加访问 Amazon SNS 服务的权限。要实现此目的,应按照以下步骤进行:
-
浏览到 IAM 控制台
并选择要配置的 IAM 角色。 -
单击 Attach Policy,选择 AmazonSNSFullAccess 策略,然后单击 Attach Policy。
注意
我们不建议在生产环境中使用 AmazonSNSFullAccess,在此使用是为了让您快速启动并运行。有关为 IAM 角色指定权限的更多信息,请参阅 IAM 角色权限概述。
iOS 先决条件
-
Apple iOS 开发人员计划成员资格
-
生成签名身份
-
创建为推送通知而配置的预置配置文件
您需要在物理设备上运行您的应用程序以接收推送通知。要在设备上运行您的应用程序,您必须拥有 Apple iOS 开发人员计划成员资格
Android 先决条件
-
安装 Android SDK
-
安装 JDK
-
android-support-v4.jar
-
google-play-services.jar
配置针对 iOS 的 Unity 示例应用程序
打开 Unity 编辑器并创建一个新项目。导入适用于 Unity 的 AWS SDK,方法是选择 Assets/Import Package/Custom Package,然后选择 aws-unity-sdk-sns-2.0.0.1.unitypackage。确保选中 Importing Package 对话框中的所有项目,然后单击 Import。
Unity 配置
执行以下步骤来配置 Unity 项目:
-
在 Project 窗格中,导航到 Assets/AWSSDK/examples,然后打开 SNSExample 场景。
-
在 Hierarchy 窗格中,选择 SNSExample。
-
在 Inspector 窗格中,指定您的 Cognito 身份池 ID。
-
请注意,有一个标签为 iOS Platform Application ARN 的文本框,稍后您将生成该信息。
-
选择 File/Build Settings,在 Build Settings 对话框中,单击 Scenes in Build 列表框下的 Add Current 按钮将当前场景添加到该生成中。
-
在 Platform (平台) 下,选择 iOS,单击 Player Settings... (播放器设置...) 按钮,在 Unity 编辑器的 Inspector Pane (检查器窗格) 中,单击 iPhone 图标并向下滚动到 Identification (身份证明) 部分,并指定一个 Bundle Identifier (服务包标识符)。
iOS 配置
执行以下步骤配置示例来配置 iOS 特定设置:
-
在 Web 浏览器中,转至 Apple Developer Member Center
,单击 Certificates, Identifiers & Profiles。 -
单击 iOS Apps 下的 Identifiers,单击 Web 页面右上角的加号按钮以添加一个新的 iOS 应用程序 ID,然后输入应用程序 ID 描述。
-
向下滚动到 Add ID Suffix 部分,选择 Explicit App ID,然后输入您的服务包标识符。
-
向下滚动到 App Services 部分,并选择 Push Notifications。
-
单击“Continue”按钮。
-
单击 Submit 按钮。
-
单击 Done 按钮。
-
选择您刚刚创建的应用程序 ID,然后单击 Edit 按钮。
-
向下滚动到 Push Notifications 部分。
-
单击 Development SSL Certificate 下的 Create Certificate 按钮。
-
按照说明创建证书签名请求 (CSR)、上传请求、下载将用于与 Apple Notification Service (APNS) 通信的 SSL 证书。
-
回到 Certificates, Identifiers & Profiles Web 页面,单击 Provisioning Profiles 下的 All。
-
单击右上角的 + 按钮以添加新的预置配置文件。
-
选择 iOS App Development,然后单击 Continue 按钮。
-
选择您的应用程序 ID,然后单击 Continue 按钮。
-
选择您的开发人员证书,然后单击 Continue 按钮。
-
选择您的设备,然后单击 Continue 按钮。
-
输入配置文件名称,然后单击 Generate 按钮。
-
下载预置文件后双击以安装预置配置文件。
添加新预置配置文件后,您可能需要在 Xcode 中刷新“预置配置文件”。在 Xcode 中:
-
选择 Xcode/Preferences 菜单项。
-
选择 Accounts 选项卡,选择您的 Apple ID,单击 View Details。
-
单击对话框左下角的刷新按钮,以刷新您的预置配置文件并确保显示新配置文件。
SNS 配置
-
运行 KeyChain 访问应用程序,选择屏幕左下角的 My Certificates,右键单击生成的 SSL 证书以连接到 APNS,选择 Export,系统将提示您指定文件的名称和密码以保护证书。证书将保存在 P12 文件中。
-
在 Web 浏览器中,转至 SNS Console
,单击屏幕左侧的 Applications。 -
单击 Create platform application,以创建新的 SNS 平台应用程序。
-
输入 Application Name。
-
对于 Push notification platform,选择 Apple Push Notification Service Sandbox (APNS_SANDBOX)。
-
单击 Choose File,选择导出 SSL 证书时创建的 P12 文件。
-
输入在导出 SSL 证书时指定的密码,然后单击 Load Credentials From File。
-
单击 Create platform application。
-
选择您刚创建的平台应用程序,然后复制应用程序 ARN。
-
回到 Unity 编辑器中您的项目上,选择 Hierarchy 窗格中的 SNSExample,在 Inspector 窗格中,将平台应用程序 ARN 粘贴到标签为 iOS Platform Application ARN 的文本框中。
-
选择 File/Build Settings,单击 Build 按钮,这将创建一个 Xcode 项目。
使用 Xcode
-
打开 Xcode 项目,在“Project Navigator”中选择项目。
-
验证服务包标识符是否设置正确。
-
确保在 Team 中指定了 Apple 开发人员账户 – 这是使您的预置配置文件生效所必需的。
-
生成项目并在设备上运行。
-
单击 Register for Notification,单击 OK 以允许通知,应用程序将显示您的设备令牌。
在 SNS Console
此时,您的应用程序 APNS 和 NSN 完全配置完毕。您可以选择您的平台应用程序,选择终端节点,然后单击 Publish to endpoint 以便将推送通知发送到您的设备。
Unity 示例 (iOS)
该示例创建一个 CognitoAWSCredentials 实例来生成临时的有限范围凭证,以允许应用程序调用 AWS 服务。它还创建了一个 AmazonSimpleNotificationServiceClient 实例来与 SNS 进行通信。该应用程序显示两个按钮,其标签分别为 Register for Notification 和 Unregister。
点击 Register for Notifications (注册通知) 按钮时将调用 RegisterDevice()
方法。RegisterDevice()
调用 UnityEngine.iOS.NotificationServices.RegisterForNotifications
,以指定使用哪些通知类型(警报、声音或徽章)。它还对 APNS 进行异步调用以获取设备令牌。因为没有定义回调,所以 CheckForDeviceToken
被重复调用 (多达 10 次) 以检查设备令牌。
当检索到令牌时,调用 AmazonSimpleNotificationServiceClient.CreatePlatformEndpointAsync()
来为 SNS 平台应用程序创建终端节点。
此示例现在配置为接收推送通知。您可以浏览到 SNS Console
配置针对 Android 的 Unity 示例应用程序
打开 Unity 编辑器并创建一个新项目。导入适用于 Unity 的 AWS SDK,方法是选择 Assets/Import Package/Custom Package,然后选择 aws-unity-sdk-sns-2.0.0.1.unitypackage。确保选中 Importing Package 对话框中的所有项目,然后单击 Import。
Unity 配置
执行以下步骤来配置 Unity 项目:
-
在 Project 窗格中,导航到 Assets/AWSSDK/examples,然后打开 SNSExample 场景。
-
在 Hierarchy 窗格中,选择 SNSExample。
-
在 Inspector 窗格中,指定您的 Cognito 身份池 ID。
-
请注意,有标签为 Android Platform Application ARN 和 Google Console Project ID 的文本框,稍后您将生成这些信息。
-
选择 File/Build Settings,在 Build Settings 对话框中,单击 Scenes in Build 列表框下的 Add Current 按钮将当前场景添加到该生成中。
-
在 Platform (平台) 下,选择 Android,单击 Player Settings... (播放器设置...) 按钮,在 Unity 编辑器的 Inspector Pane (检查器窗格) 中,单击 Android 图标并向下滚动到 Identification (身份证明) 部分,并指定一个 Bundle Identifier (服务包标识符)。
-
将 android-support-v4.jar 和 google-play-services.jar 复制到 Project 窗格的 Assets/Plugins/Android 目录中。
有关在何处找到 android-support-v4.jar 的更多信息,请参阅 Android 支持库设置
Android 配置
首先,添加一个新的 Google API 项目:
-
在 Web 浏览器中,转至 Google Developers Console
,单击 Create Project。 -
在 New Project 框中,输入项目名称,记下项目编号 (稍后您会用到它),然后单击 Create。
接下来,为您的项目启用 Google Cloud Messaging (GCM) 服务:
-
在 Google Developers Console 中,您的新项目应当已经被选中,如果没有,则在页面顶部的下拉菜单中选中。
-
在页面左侧的边栏中,选择 APIs & auth。
-
在搜索框中,键入“Google Cloud Messaging for Android”,单击下面的 Google Cloud Messaging for Android 链接。
-
单击 Enable API。
最后,获取 API 密钥:
-
在 Google Developers Console 中,选择 APIs & auth > Credentials。
-
在 Public API access 下,单击 Create new key。
-
在 Create a new key 对话框中,单击 Server key。
-
在出现的对话框中,单击 Create,然后复制显示的 API 密钥。
稍后,您将使用此 API 密钥来执行身份验证。
SNS 配置
-
在 Web 浏览器中,转至 SNS Console
,单击屏幕左侧的 Applications。 -
单击 Create platform application,以创建新的 SNS 平台应用程序。
-
输入 Application Name。
-
对于 Push notification platform,选择 Google Cloud Messaging (GCM)。
-
将 API 密钥粘贴到标记为 API key 的文本框中。
-
单击 Create platform application。
-
选择您刚创建的平台应用程序,然后复制应用程序 ARN。
-
回到 Unity 编辑器中您的项目上,选择 Hierarchy 窗格中的 SNSExample,在 Inspector 窗格中,将平台应用程序 ARN 粘贴到标签为 Android Platform Application ARN 的文本框,将项目编号粘贴到标签为 Google Console Project ID 的文本框。
-
将您的 Android 设备连接到计算机,选择 File/Build Settings,然后单击 Build and Run。
Unity 示例 (Android)
该示例创建一个 CognitoAWSCredentials 实例来生成临时的有限范围凭证,以允许应用程序调用 AWS 服务。它还创建了一个 AmazonSimpleNotificationServiceClient 实例来与 SNS 进行通信。
该应用程序显示两个按钮,其标签分别为 Register for Notification 和 Unregister。点击 Register for Notifications (注册通知) 按钮时将调用 RegisterDevice()
方法。RegisterDevice()
调用 GCM.Register
,这将向 GCM 注册应用程序。GCM 是在示例代码范围内定义的一个类。它执行异步调用来向 GCM 注册应用程序。
当调用回调时,调用 AmazonSimpleNotificationServiceClient.CreatePlatformEndpointAsync
来创建平台终端节点以接收 SNS 消息。
此示例现在配置为接收推送通知。您可以浏览到 SNS Console