# การใช้งาน ByteArk Player SDK for iOS

หน้านี้แสดง Walkthrough การตั้งค่า ByteArkPlayerViewController ในแอปของคุณ สำหรับรายละเอียดของแต่ละ Option / API / Event ดูเอกสารอ้างอิงตามลิงก์ในแต่ละขั้นตอน

ByteArk Player SDK for iOS ออกแบบมาบน class ByteArkPlayerViewController ซึ่งเป็น subclass ของ UIViewController โดยมี player instance property สำหรับเรียกใช้งาน API ของ Player และรับ Event ผ่าน Delegate

ใช้งานได้ 2 รูปแบบ:

  1. การใช้งานพื้นฐาน — Subclass ByteArkPlayerViewController แล้วแสดงผลโดยตรง
  2. การใช้งานขั้นสูง — Embed ByteArkPlayerViewController ลงใน Container view ของ ViewController อื่น

# 1. การใช้งานพื้นฐาน

Subclass ByteArkPlayerViewController และ override viewDidLoad() เพื่อตั้งค่า Player

import UIKit
import ByteArkPlayerSDK
class PlayerViewController: ByteArkPlayerViewController {
  override func viewDidLoad() {
    super.viewDidLoad()
    do {
      // สร้าง ByteArkPlayerItem
      let item = try ByteArkPlayerItemBuilder()
        .media(URL(string: "<MEDIA_URL>")!)
        .title("Big Buck Bunny")
        .build()
      // สร้าง ByteArkPlayerConfig
      let config = try ByteArkPlayerConfigBuilder(licenseKey: "<YOUR_LICENSE_KEY>")
        .item(item)
        .autoplay(true)
        .build()
      // ตั้งค่า Player
      player.configure(with: config)
    } catch {
      print(error.localizedDescription)
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

จากนั้น Present PlayerViewController ตามปกติ

ดู Options สำหรับ Builder method ทั้งหมดของ ByteArkPlayerConfigBuilder และ ByteArkPlayerItemBuilder

# 2. การใช้งานขั้นสูง

Embed ByteArkPlayerViewController ลงใน Container view ของ ViewController อื่น เพื่อให้สามารถจัดวาง Player ร่วมกับ UI element อื่นได้

class CustomViewController: UIViewController, ByteArkPlayerPlaybackDelegate {
  @IBOutlet weak var containerView: UIView!
  var playerViewController: ByteArkPlayerViewController?
  override func viewDidLoad() {
    super.viewDidLoad()
    // เพิ่ม ByteArkPlayerViewController เป็น child
    let playerViewController = ByteArkPlayerViewController()
    addChild(playerViewController)
    containerView.addSubview(playerViewController.view)
    playerViewController.didMove(toParent: self)
    playerViewController.view.translatesAutoresizingMaskIntoConstraints = false
    NSLayoutConstraint.activate([
      playerViewController.view.leftAnchor.constraint(equalTo: containerView.leftAnchor),
      playerViewController.view.rightAnchor.constraint(equalTo: containerView.rightAnchor),
      playerViewController.view.topAnchor.constraint(equalTo: containerView.topAnchor),
      playerViewController.view.bottomAnchor.constraint(equalTo: containerView.bottomAnchor),
    ])
    self.playerViewController = playerViewController
    let player = playerViewController.player
    do {
      let item = try ByteArkPlayerItemBuilder()
        .media(URL(string: "<MEDIA_URL>")!)
        .title("Big Buck Bunny")
        .build()
      let config = try ByteArkPlayerConfigBuilder(licenseKey: "<YOUR_LICENSE_KEY>")
        .item(item)
        .autoplay(true)
        .build()
      // Assign delegate เพื่อรับ Event
      player.delegate = self
      player.configure(with: config)
    } catch {
      print(error.localizedDescription)
    }
  }
  // MARK: - ByteArkPlayerPlaybackDelegate
  func playbackReady(player: ByteArkPlayer, item: ByteArkPlayerItem) {
    // วิดีโอพร้อมเล่น
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

# 3. รับ Event จาก Player

มี 2 วิธีรับ Event:

Subclass ByteArkPlayerViewController และ override callback methods

class PlayerViewController: ByteArkPlayerViewController {
  override func playbackPlay(player: ByteArkPlayer) {
    super.playbackPlay(player: player)
    // เริ่มเล่นวิดีโอ
  }
  override func playbackError(player: ByteArkPlayer, error: NSError) {
    super.playbackError(player: player, error: error)
    // จัดการ Error
  }
}
1
2
3
4
5
6
7
8
9
10
11

หรือ Assign delegate ของ Player instance ใน ViewController อื่น (ตามตัวอย่างใน "การใช้งานขั้นสูง")

ดู Event Listeners Reference สำหรับ Callback ทั้งหมดของ ByteArkPlayerPlaybackDelegate

# 4. เรียกใช้งาน Player API

ตัวอย่างการเรียก Player API ที่ใช้บ่อย

player.play()
player.pause()
player.seek(to: 60) { _ in }              // ไปที่นาทีที่ 1:00
player.setPlaybackSpeed(1.5)              // เล่นที่ความเร็ว 1.5x
player.toggleFullscreen()
player.togglePictureInPictureMode()
1
2
3
4
5
6

ดู API Reference สำหรับ Method ทั้งหมดของ Player รวมถึง Tracks/Resolution/Subtitle/Playlist management

# หัวข้อที่เกี่ยวข้อง