配信を視聴 (iOS/iPadOS)

ここでは Castify SDK を使って Castify プラットフォーム上のライブ配信を試聴する機能を備えた画面を実装する流れを説明します。

このチュートリアルでは SwiftUI の利用を前提としていますが、従来の ViewController を利用することも可能です。

試聴機能を備えた View を作成する

以降の説明は、以下のような空の View からスタートするものとします。完全なソースコードはこちらopen in new windowから閲覧できます。

struct PlayView : View { /* TODO */ }

1. CastifyApp, Player オブジェクトを作成する

import Castify

let app = CastifyApp(token: API_TOKEN)

struct PlayView : View { 
  @StateObject let model = PlayViewModel()
}

class PlayViewModel : ObservableObject {
  let player = Player(app)
}

CastifyApp は SDK の各機能にアクセスするための入り口となるオブジェクトです。 これを作成するには Castify プラットフォームのプロジェクトに対応した API トークン(上記の API_TOKEN)を引数とし、そのコンストラクターを呼び出します。

2. プレビュー画面を準備する

配信映像を UI 上にプレビュー表示するためのビューを用意します。

/* in PlayView */
var body: some View {
  Castify.Preview(model.player.media)
}

Castify.PreviewBroadcasterPlayer のプレビューを画面に描画するビューです。

4. ライブ配信を視聴する機能を作成する

/* in PlayViewModel */

// 再生対象の配信
@Published var broadcastId = ""

@Published var played = false {
  didSet {
    task?.cancel()
    if played {
      task = Task { try await play() }
    }
    else {
      player.play(nil) // 停止
    }
  }
}

private var task: Task<Void, Error>? = nil

private func play() async throws {
  let source = Source(app, broadcast: broadcastId)
  let metadata = try await source.load()
  if metadata.stoppedAt == nil {
    player.play(source) // ライブ再生
  }
  else {
    player.play(source, from: 0) // アーカイブを最初から再生
  }
}

以下は PlayView 側の実装です。

/* in PlayView */

var body: some View {
  VStack {
    Castify.Preview(model.player.media)
    HStack {
      Button(action: { model.played.toggle() }) {
        Text(model.played ? "Stop" : "Play")
      }
      TextField("Broadcast ID", text: $model.broadcastId)
    }
  }
}

Source オブジェクトは Castify 上の配信メディアを表現するオブジェクトです。配信 ID を元に作成できます。

Source#load() は対応する配信のメタデータを取得するメソッドです。このメソッドは async メソッドなので呼び出し方に注意が必要です。

上記のコードではメタデータ中の stoppedAt の値を確認してライブ配信が停止済みかどうかを判定しています。停止されている場合は play(source, from: 0) のように開始秒を指定してメディアの先頭から再生するように指示します。

ここまでで、ライブ配信の試聴を行うプレイヤーの実装は完了しました。

試聴テストを行う

作成したプレイヤーを実行する前に、何れかの方法で Castify プラットフォームにライブ配信を行う必要があります。

準備ができたらアプリを端末にデプロイして試聴を開始します。

最終更新日: