设置适用于 Unity 的 AWS Mobile SDK - 适用于 Unity 的 AWS Mobile SDK

AWS SDK for .NET 现在随附适用于 Unity 的 AWS Mobile SDK。本指南引用适用于 Unity 的 Mobile SDK 的存档版本。有关更多信息,请参阅什么是适用于 Unity 的 AWS Mobile SDK?

设置适用于 Unity 的 AWS Mobile SDK

要开始使用适用于 Unity 的 AWS Mobile SDK,您可以设置该 SDK 并开始构建一个新项目,也可以将该 SDK 与现有项目集成。您还可以克隆并运行示例,以便了解该 SDK 的工作原理。

先决条件

在可以使用适用于 Unity 的 AWS Mobile SDK 之前,您需要以下内容:

  • 一个 AWS 账户

  • Unity 4.x 或 5.x 版 (如果您希望编写在 64 位 iOS 上运行的应用程序,则需要 Unity 4.6.4p4 或 Unity 5.0.1p3)

满足先决条件后,您需要执行以下操作来开始使用该 SDK:

  1. 下载适用于 Unity 的 AWS Mobile SDK。

  2. 配置适用于 Unity 的 AWS Mobile SDK。

  3. 使用 Amazon Cognito 获取 AWS 凭证。

第 1 步:下载适用于 Unity 的 AWS Mobile SDK

首先,下载适用于 Unity 的 AWS Mobile SDK。该 SDK 中的每个软件包是使用与软件包名称对应的 AWS 服务所必需的。例如,aws-unity-sdk-dynamodb-2.1.0.0.unitypackage 包用于调用 AWS DynamoDB 服务。您可以导入所有包,也可以仅导入要使用的包。

  1. 打开 Unity 编辑器,新建一个空项目并使用默认设置。

  2. 选择 Assets > Import Package > Custom Package

  3. Import package 对话框中,导航到您要使用的 .unitypackage 文件并选择这些文件。

  4. Importing package 对话框中,确保选中所有项目,然后单击 Import

第 2 步:配置适用于 Unity 的 AWS Mobile SDK

创建场景

使用适用于 Unity 的 AWS Mobile SDK 时,您可以首先在 mono 行为类的 StartAwake 方法中包含以下代码行:

UnityInitializer.AttachToGameObject(this.gameObject);

通过从 File 菜单中选择 New Scene 创建场景。

适用于 Unity 的 AWS SDK 包含用于其支持的每个 AWS 服务的客户端类。这些客户端使用名为 awsconfig.xml 的文件进行配置。下面一部分介绍 awsconfig.xml 文件中最常用的设置。有关这些设置的更多信息,请参阅《Unity SDK API 参考》

设置默认 AWS 服务区域

为所有服务客户端配置默认区域:

<aws region="us-west-2" />

这会为 Unity SDK 中的所有服务客户端设置默认区域。通过在创建服务客户端的实例时明确指定区域,可以覆盖此设置,如下所示:

IAmazonS3 s3Client = new AmazonS3Client(<credentials>,RegionEndpoint.USEast1);

设置日志记录信息

按如下所示指定日志记录设置:

<logging logTo="UnityLogger" logResponses="Always" logMetrics="true" logMetricsFormat="JSON" />

此设置用于在 Unity 中配置日志记录。当您将日志记录到 UnityLogger 时,该框架会在内部将输出发送到调试日志。如果您希望记录 HTTP 响应,请设置 logResponses 标志(值可以是 Always、Never 或 OnError)。您还可以使用 logMetrics 属性记录 HTTP 请求的性能指标,日志的格式可以使用 LogMetricsFormat 属性指定,有效值为 JSON 或 standard。

以下示例演示 awsconfig.xml 文件中最常用的设置。有关特定服务设置的更多信息,请参阅以下服务部分:

<?xml version="1.0" encoding="utf-8"?> <aws region="us-west-2" <logging logTo="UnityLogger" logResponses="Always" logMetrics="true" logMetricsFormat="JSON" /> />

该 SDK 对特定于平台的组件使用反射。如果您使用 IL2CPP 脚本后端,那么 strip bytecode 在 iOS 上始终处于启用状态,因此在具有以下条目的程序集根目录下您需要有 link.xml 文件:

<linker> <!-- if you are using AWSConfigs.HttpClient.UnityWebRequest option--> <assembly fullname="UnityEngine"> <type fullname="UnityEngine.Networking.UnityWebRequest" preserve="all" /> <type fullname="UnityEngine.Networking.UploadHandlerRaw" preserve="all" /> <type fullname="UnityEngine.Networking.UploadHandler" preserve="all" /> <type fullname="UnityEngine.Networking.DownloadHandler" preserve="all" /> <type fullname="UnityEngine.Networking.DownloadHandlerBuffer" preserve="all" /> </assembly> <assembly fullname="mscorlib"> <namespace fullname="System.Security.Cryptography" preserve="all"/> </assembly> <assembly fullname="System"> <namespace fullname="System.Security.Cryptography" preserve="all"/> </assembly> <assembly fullname="AWSSDK.Core" preserve="all"/> <assembly fullname="AWSSDK.CognitoIdentity" preserve="all"/> <assembly fullname="AWSSDK.SecurityToken" preserve="all"/> add more services that you need here... </linker>

第 3 步:使用 Amazon Cognito 获取身份池 ID

要在移动应用程序中使用 AWS 服务,您必须使用 Amazon Cognito Identity 获取身份池 ID。使用 Amazon Cognito 获取身份池 ID 可让您的应用程序能够直接访问 AWS 服务,而不必在应用程序中嵌入您的私有凭证。这还允许您设置权限来控制用户有权访问的 AWS 服务。

要开始使用 Amazon Cognito,您必须创建一个身份池。身份池是用于存储特定于您的账户的用户身份数据的存储区。每个身份池都有可配置的 IAM 角色,您可以使用这些角色来指定应用程序的用户可以访问的 AWS 服务。通常情况下,开发人员对每个应用程序使用一个身份池。有关身份池的更多信息,请参阅 Amazon Cognito 开发人员指南

为应用程序创建身份池:

  1. 登录 Amazon Cognito 控制台,然后单击 Create new identity pool

  2. 输入身份池的名称,并选中“启用未经验证的身份的访问权限”复选框。单击 Create Pool (创建池) 创建身份池。

  3. 单击允许可创建两个与您的身份池关联的默认角色 - 一个用于未经身份验证的用户,另一个用于经过身份验证的用户。这些默认角色会向 Cognito Sync 和 Mobile Analytics 提供身份池访问权限。

下一页将显示一段代码,该段代码用于创建凭证提供程序,以便您可以轻松地将 Cognito Identity 与 Unity 应用程序集成。您可以将凭证提供商对象传递给所使用的 AWS 客户端的构造函数。代码如下所示:

CognitoAWSCredentials credentials = new CognitoAWSCredentials ( "IDENTITY_POOL_ID", // Identity Pool ID RegionEndpoint.USEast1 // Region );

后续步骤