

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 適用於 iOS 的 Amazon Kinesis Video Streams WebRTC 開發套件
<a name="kvswebrtc-sdk-ios"></a>

下列逐步指示說明如何在 iOS 中下載、建置和執行 Kinesis Video Streams WebRTC 開發套件及其對應的範例。

## 下載軟體開發套件
<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. 在 iOS 電腦上，開啟 `KinesisVideoWebRTCDemoApp.xcworkspace` (路徑：amazon-kinesis-video-streams-webrtc-sdk-ios/Swift/AWSKinesisVideoWebRTCDemoApp.xcworkspace)，將 iOS WebRTC 開發套件匯入 XCode 整合開發環境 (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 (使用者集區和身分集區) 設定。如需詳細步驟，請參閱[為 SDK 設定 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"
           }
       }
   }
   ```

   以執行 [為 SDK 設定 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"
   ```

   以執行 [為 SDK 設定 Amazon Cognito](kvswebrtc-sdk-android.md#build-sdk-android-cognito)中的步驟所產生的值，更新 `Constants.swift`。

1. 確保您的 iOS 裝置已連線至執行 XCode 的 Mac 電腦。在 XCode 中，選取連接的裝置，然後建置並執行 WebRTC iOS 開發套件。

   此步驟會在您的 iOS 裝置上安裝名為 `AWSKinesisVideoWebRTCDemoApp` 的應用程式。您可以使用此應用程式，驗證行動、Web 和 IoT 裝置用戶端之間的即時 WebRTC 音訊/視訊串流。

## 執行範例應用程式
<a name="run-sdk-ios"></a>

****

請完成下列步驟：

1. 在您的 iOS 裝置上，開啟 **AWSKinesisVideoWebRTCDemoApp**，並使用新的 (先建立) 或現有的 Amazon Cognito 帳戶登入。

1. 在 **AWSKinesisVideoWebRTCDemoApp** 中，瀏覽至 **Channel Configuration (頻道組態)** 頁面，然後建立新的訊號頻道，或選擇現有的訊號頻道。
**注意**  
目前，使用此開發套件中的範例應用程式時，您在 **AWSKinesisVideoWebRTCDemoApp** 中只能執行一個訊號頻道。

1. (選擇性) 如果您要以檢視器身分連線到此頻道，請選擇唯一的 **Client Id (用戶端 ID)**。只有在多個檢視器連線至頻道時，才需要用戶端 ID。這有助於頻道的主節點識別各自的檢視器。

1. 選擇 AWS 區域 ，以及您要傳送音訊或視訊資料，還是兩者。

1. 若要驗證點對點串流，請執行下列任何一項：
**注意**  
請務必在此示範中使用的所有用戶端上，指定相同的訊號頻道名稱、 AWS 區域、檢視器 ID 和 AWS 帳戶 ID。
   + 兩個 iOS 裝置之間的點對點串流：主節點和檢視器
     + 在兩個 iOS 裝置上，使用上述程序下載、建置和執行 iOS WebRTC 開發套件。
     + 在一個 iOS 裝置上，以主節點模式開啟 **AWSKinesisVideoWebRTCDemoApp**，選擇 **START MASTER (啟動主節點)**，啟動新的工作階段 (訊號頻道)。
**注意**  
目前，任何給定的訊號頻道只能有一個主節點。
     + 在您的第二個 iOS 裝置上，以檢視器模式開啟 **AWSKinesisVideoWebRTCDemoApp**，以連線至上述步驟中啟動的訊號頻道 (工作階段)，選擇 **START VIEWER (啟動檢視器)**。

       確認檢視器可以看到主節點的音訊/視訊資料。
   + 嵌入式開發套件主節點和 iOS 裝置檢視器之間的點對點串流
     + 在攝影機裝置上，以主節點模式下載、建置和執行 [Amazon Kinesis Video Streams with WebRTC SDK in C for embedded device](kvswebrtc-sdk-c.md)。
     + 在 iOS 裝置上，使用上述程序下載、建置和執行 iOS WebRTC 開發套件。在此 iOS 裝置上，以檢視器模式開啟 **AWSKinesisVideoWebRTCDemoApp**，並確認 iOS 檢視器可以看到嵌入式 SDK 主節點的音訊/視訊資料。
   + iOS 裝置 (主節點) 和 Web 瀏覽器 (檢視器) 之間的點對點串流
     + 在 iOS 裝置上，使用上述程序下載、建置和執行 iOS WebRTC 開發套件。在此 iOS 裝置上，以主節點模式開啟 **AWSKinesisVideoWebRTCDemoApp**，選擇 **START MASTER (啟動主節點)**，啟動新的工作階段 (訊號頻道)。
     + 以檢視器身分下載、建置和執行 [適用於 Web 應用程式的 JavaScript 中的 Amazon Kinesis Video Streams with WebRTC SDK WebRTC](kvswebrtc-sdk-js.md)，並確認 JavaScript 檢視器可以看到 Android 主節點的音訊/視訊。

## 為 SDK 設定 Amazon Cognito
<a name="build-sdk-ios-cognito"></a>

### 先決條件
<a name="iossdk-prerequisites"></a>
+ 我們建議您使用 XCode 來檢查、編輯和執行應用程式碼。我們建議使用最新版本。
+ 在範本程式碼中，您會提供 Amazon 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**，並記下此 ID 以供稍後使用。在 `awsconfiguration.json` 檔案中，這是 `CognitoUserPool.Default.PoolId`。

1. 選取**應用程式整合**索引標籤，然後移至頁面底部。

1. 在**應用程式用戶端清單**區段中，選擇您剛建立**的應用程式用戶端名稱**。

   複製**用戶端 ID** 並記下此 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：連接身分提供者** - 在**使用者集區詳細資訊**區段中，完成下列欄位：
      + **使用者集區 ID** - 選取您先前建立的使用者集區。
      + **應用程式用戶端 ID** - 選取您先前建立的應用程式用戶端 ID。

      選取**下一步**。

   1. **步驟 4：設定屬性** - 在**身分集區名稱欄位中輸入名稱**。

      選取**下一步**。

   1. **步驟 5：檢閱並建立** - 檢閱每個區段中的選擇，然後選取**建立身分集區**。

1. 在**身分集**區頁面上，選取新的身分集區。

   複製**身分集區 ID**，並記下此 ID 以供稍後使用。在 `awsconfiguration.json`檔案中，這是 `CredentialsProvider.CognitoIdentity.Default.PoolId`。

1. 更新 IAM 角色的許可。

   1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

   1. 在左側導覽中，選擇**角色**。

   1. 尋找並選取您在上面建立的角色。
**注意**  
如有需要，請使用搜尋列。

   1. 選取連接的許可政策。

      選擇 **Edit** (編輯)。

   1. 選取 **JSON** 索引標籤，並以下列內容取代政策：

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

      選取**下一步**。

   1. 如果尚未選取，請選取**此新版本設定為預設值**旁的方塊。

      選取**儲存變更**。