

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 适用于 iOS 的亚马逊 Kinesis Video Streams WebRTC SDK
<a name="kvswebrtc-sdk-ios"></a>

以下 step-by-step说明描述了如何在 iOS 中下载、构建和运行 Kinesis Video Streams WebRTC SDK 及其相应示例。

## 下载 SDK
<a name="download-sdk-js"></a>

要在 iOS 中下载 WebRTC 开发工具包，请运行以下命令：

```
$ git clone https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-ios.git
```

## 构建 SDK
<a name="build-sdk-ios"></a>

完成以下步骤：

1. 通过`KinesisVideoWebRTCDemoApp.xcworkspace`打开（路径 amazon-kinesis-video-streams：webrtc-sdk-ios-AWSKinesis VideoWeb RTCDemo /Swift/ App.xcWorkspace），将 XCode iOS WebRTC SDK 导入 iOS 电脑上的集成开发环境 (IDE)。

1. 如果您第一次打开该项目，它会自动构建。如果没有，则开始构建。

   您可能会看到以下错误：

   ```
   error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.
   ```

   如果您看到此错误，请执行以下操作：

   1. 将当前工作目录更改为 `amazon-kinesis-video-streams-webrtc-sdk-ios/Swift` 并在命令行中运行以下命令：

      ```
      pod cache clean --all
      pod install
      ```

   1. 将当前工作目录更改为 `amazon-kinesis-video-streams-webrtc-sdk-ios` 并在命令行中运行以下命令：

      ```
      $ git checkout Swift/Pods/AWSCore/AWSCore/Service/AWSService.m
      ```

   1. `Build`。

1. 配置 Amazon Cognito（用户池和身份池）设置。有关详细步骤，请参阅[为软件开发工具包配置 Amazon Cognito](#build-sdk-ios-cognito)。这会生成构建 iOS WebRTC 开发工具包所需的身份验证和授权设置。

1. 在 IDE 中，打开 `awsconfiguration.json` 文件（来自 `/Swift/KVSiOSApp`）。此文件如下所示：

   ```
   {
       "Version": "1.0",
       "CredentialsProvider": {
           "CognitoIdentity": {
               "Default": {
                   "PoolId": "REPLACEME",
                   "Region": "REPLACEME"
               }
           }
       },
       "IdentityManager": {
           "Default": {}
       },
       "CognitoUserPool": {
           "Default": {
               "AppClientSecret": "REPLACEME",
               "AppClientId": "REPLACEME",
               "PoolId": "REPLACEME",
               "Region": "REPLACEME"
           }
       }
   }
   ```

   使用通过运行[为软件开发工具包配置 Amazon Cognito](kvswebrtc-sdk-android.md#build-sdk-android-cognito)中的步骤生成的值更新 `awsconfiguration.json`。

1. 在 IDE 中，打开 `Constants.swift` 文件（来自 `/Swift/KVSiOSApp`）。此文件如下所示：

   ```
   import Foundation
   import AWSCognitoIdentityProvider
   
   let CognitoIdentityUserPoolRegion = AWSRegionType.USWest2
   let CognitoIdentityUserPoolId = "REPLACEME"
   let CognitoIdentityUserPoolAppClientId = "REPLACEME"
   let CognitoIdentityUserPoolAppClientSecret = "REPLACEME"
   
   let AWSCognitoUserPoolsSignInProviderKey = "UserPool"
   let CognitoIdentityPoolID = "REPLACEME"
   
   let AWSKinesisVideoEndpoint = "https://kinesisvideo.us-west-2.amazonaws.com"
   let AWSKinesisVideoKey = "kinesisvideo"
   
   let VideoProtocols =  ["WSS", "HTTPS"]
   
   let ConnectAsMaster = "connect-as-master"
   let ConnectAsViewer = "connect-as-viewer"
   
   let MasterRole = "MASTER"
   let ViewerRole = "VIEWER"
   
   let ClientID = "ConsumerViewer"
   ```

   使用通过运行[为软件开发工具包配置 Amazon Cognito](kvswebrtc-sdk-android.md#build-sdk-android-cognito)中的步骤生成的值更新 `Constants.swift`。

1. 确保你的 iOS 设备已连接到你正在运行的 Mac 电脑 XCode。在中 XCode，选择连接的设备，然后构建并运行 WebRTC iOS 开发工具包。

   此步骤将在 iOS 设备上安装名为 `AWSKinesisVideoWebRTCDemoApp` 的应用程序。使用此应用程序，您可以验证移动、网络和物联网设备客户端之间的 Web audio/video RTC 直播。

## 运行示例应用程序
<a name="run-sdk-ios"></a>

****

完成以下步骤：

1. 在你的 iOS 设备上，打开**AWSKinesisVideoWebRTCDemo应用程序**，然后使用新的（先创建）或现有的 Amazon Cognito 账户登录。

1. 在**AWSKinesisVideoWebRTCDemo应用程序**中，导航到**信道配置**页面，然后创建新的信令信道或选择现有信令信道。
**注意**  
目前，使用此 SDK 中的示例应用程序，您只能在 **AWSKinesisVideoWebRTCDemoApp** 中运行一个信令通道。

1. （可选）如果您想以查看器身份连接到此通道，请选择唯一的 **Client Id (客户端 ID)**。仅当多个查看器连接到一个通道时，才需要客户端 ID。这有助于通道的主设备识别各自的查看器。

1. 选择 AWS 区域 以及是否要发送音频或视频数据，或者两者兼而有之。

1. 要验证 peer-to-peer直播，请执行以下任一操作：
**注意**  
请务必在本演示中使用的所有客户端上指定相同的信令频道名称、 AWS 区域、观众 ID 和 AWS 账户 ID。
   + Peer-to-peer 在两台 iOS 设备之间进行流式传输：主设备和查看器
     + 使用上述步骤，在两个 iOS 设备上下载、构建和运行 iOS WebRTC 开发工具包。
     + 在一台 iOS 设备上以主模式打开**AWSKinesisVideoWebRTCDemo应用程序**（选择**启动主**模式），开始新的会话（信令信道）。
**注意**  
目前，任何给定信令通道只能有一个主设备。
     + 在查看器模式下在第二台 iOS 设备上打开**AWSKinesisVideoWebRTCDemo应用程序**，连接上面步骤中启动的信令频道（会话）（选择**启动查看器**）。

       验证查看者是否可以看到主人的 audio/video 数据。
   + Peer-to-peer 在嵌入式 SDK 主设备和 iOS 设备查看器之间进行流式传输
     + 在摄像头设备上，下载、构建 [亚马逊 Kinesis Video Streams 带有 WebRTC 开发工具包的 C 语言版本，适用于嵌入式设备](kvswebrtc-sdk-c.md) 并以主设备模式运行它。
     + 使用上述步骤，在一个 iOS 设备上下载、构建和运行 iOS WebRTC 开发工具包。在查看器模式下打开此 iOS 设备上的**AWSKinesisVideoWebRTCDemo应用程序**，并确认 iOS 查看器可以看到嵌入式 SDK 主 audio/video 服务器的数据。
   + Peer-to-peer 在作为主设备的 iOS 设备和作为查看器的网络浏览器之间进行流式传输
     + 使用上述步骤，在一个 iOS 设备上下载、构建和运行 iOS WebRTC 开发工具包。在主模式下打开此 iOS 设备上的**AWSKinesisVideoWebRTCDemo应用程序**（选择**启动主**模式），开始新的会话（信令信道）。
     + 下载、构建并以查看者[带有 WebRTC 开发工具包的 Amazon Kinesis Video Streams 适用于网络应用程序 JavaScript](kvswebrtc-sdk-js.md)身份运行，并验证查看者是否可以看到 Android 主服务器的音频/视频。 JavaScript 

## 为软件开发工具包配置 Amazon Cognito
<a name="build-sdk-ios-cognito"></a>

### 先决条件
<a name="iossdk-prerequisites"></a>
+ 我们建议 XCode 检查、编辑和运行应用程序代码。我们推荐最新版本。
+ 在示例代码中，您需要提供亚马逊 Cognito 凭证。

按照以下步骤设置 Amazon Cognito 用户池和身份池。

### 设置用户池
<a name="setup-user-pool"></a>

**设置用户池**

1. 登录 [Amazon Cognito 控制台](https://console.aws.amazon.com/cognito/home)并验证区域是否正确。

1. 在左侧导航栏中，选择 “**用户池**”。

1. 在 “**用户池**” 部分，选择 “**创建用户池**”。

1. 完成以下各节：

   1. **第 1 步：配置登录体验**-在 **Cognito 用户池登录**选项部分，选择相应的选项。

      选择**下一步**。

   1. **步骤 2：配置安全要求**-选择相应的选项。

      选择**下一步**。

   1. **第 3 步：配置注册体验**-选择相应的选项。

      选择**下一步**。

   1. **步骤 4：配置消息传送**-选择相应的选项。

      在 **IAM 角色选择**字段中，选择现有角色或创建新角色。

      选择**下一步**。

   1. **第 5 步：集成您的应用程序**-选择相应的选项。

      在 “**初始应用程序客户端**” 字段中，选择 “**机密客户端**”。

      选择**下一步**。

   1. **步骤 6：查看并创建**-查看您在前面部分中的选择，然后选择**创建用户池**。

1. 在 “**用户池**” 页面上，选择您刚刚创建的池。

   复制**用户池 ID** 并记下来以备后用。在`awsconfiguration.json`文件中，这是`CognitoUserPool.Default.PoolId`。

1. 选择 “**应用程序集成**” 选项卡，然后转到页面底部。

1. 在**应用程序客户端列表**部分，选择您刚刚创建的**应用程序客户端名称**。

   复制**客户端 ID** 并记下来以备后用。在`awsconfiguration.json`文件中，这是`CognitoUserPool.Default.AppClientId`。

1. 出示**客户机密**并记下来以备后用。在`awsconfiguration.json`文件中，这是`CognitoUserPool.Default.AppClientSecret`。

### 设置身份池
<a name="setup-identity-pool"></a>

**设置身份池**

1. 登录 [Amazon Cognito 控制台](https://console.aws.amazon.com/cognito/home)并验证区域是否正确。

1. 在左侧导航栏中，选择 “**身份池**”。

1. 选择**创建身份池**。

1. 配置身份池。

   1. **步骤 1：配置身份池信任**-完成以下部分：
      + **用户访问权限**-选择**经过身份验证的访问权限**
      + **经过身份验证的身份源**-选择 **Amazon Cognito** 用户池

      选择**下一步**。

   1. **步骤 2：配置权限**-在 “**经过身份验证的角色**” 部分，填写以下字段：
      + **IAM 角色**-选择**创建新的 IAM 角色**
      + **IAM 角色名称**-输入名称并记下来供后续步骤使用。

      选择**下一步**。

   1. **步骤 3：Connect 身份提供商**-在 “**用户池详细信息**” 部分中，填写以下字段：
      + **用户池 ID**-选择您之前创建的用户池。
      + **应用程序客户端 ID**-选择您之前创建的应用程序客户端 ID。

      选择**下一步**。

   1. **步骤 4：配置属性**-在 “**身份池名称” 字段中键入名称**。

      选择**下一步**。

   1. **第 5 步：查看并创建**-查看您在每个部分中的选择，然后选择**创建身份池**。

1. 在**身份池**页面上，选择您的新身份池。

   复制**身份池 ID** 并记下来以备后用。在`awsconfiguration.json`文件中，这是`CredentialsProvider.CognitoIdentity.Default.PoolId`。

1. 更新 IAM 角色的权限。

   1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

   1. 在左侧的导航栏中，选择 “**角色**”。

   1. 找到并选择您在上面创建的角色。
**注意**  
如果需要，请使用搜索栏。

   1. 选择附加的权限策略。

      选择**编辑**。

   1. 选择 **JSON** 选项卡，然后将策略替换为以下内容：

      ```
      {
          "Version": "2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "cognito-identity:*",
                      "kinesisvideo:*"
                  ],
                  "Resource": [
                      "*"
                  ]
              }
          ]
      }
      ```

      选择**下一步**。

   1. 如果尚未选中 “将**此新版本设为默认版本”** 旁边的复选框。

      选择**保存更改**。