# การใช้งาน 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 รูปแบบ:
- การใช้งานพื้นฐาน — Subclass
ByteArkPlayerViewControllerแล้วแสดงผลโดยตรง - การใช้งานขั้นสูง — 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)
}
}
}
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) {
// วิดีโอพร้อมเล่น
}
}
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
}
}
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()
2
3
4
5
6
ดู API Reference สำหรับ Method ทั้งหมดของ Player รวมถึง Tracks/Resolution/Subtitle/Playlist management
# หัวข้อที่เกี่ยวข้อง
- การป้องกันเนื้อหา (Apple FairPlay) — เล่นวิดีโอที่ป้องกันด้วย FairPlay DRM
- Playback Engine — ใช้ Playback engine แบบ Custom
- การสร้าง Plugin — ขยายความสามารถของ Player ด้วย Plugin ของตัวเอง