# AirPlay Plugin for ByteArk Player SDK iOS

# คุณสมบัติ

  • รองรับการใช้งาน Apple AirPlay

# ความต้องการ ของ Plugin

  • iOS 13 หรือสูงกว่า
  • XCode
  • Swift 5.5
  • ByteArkPlayerSDK version >= 0.2.1

# การติดตั้ง Plugin

# CocoaPods (แนะนำ)

CocoaPods (opens new window) เป็นเครื่องมือจัดการ dependencies สำหรับโปรเจกต์ Cocoa คุณสามารถติดตั้งได้ด้วยคำสั่งดังนี้:

gem install cocoapods
1

การติดตั้ง AirPlay Plugin ด้วย Cocoapods

  1. รันคำสั่งต่อไปนี้เพื่อเพิ่ม ByteArk Player SDK สำหรับ iOS ลงใน Cocoapods repo:
pod repo add byteark-player-sdk-ios-specs https://github.com/byteark/byteark-player-sdk-ios-specs.git
1
  1. แก้ไขไฟล์ Podfile โดยเพิ่มบรรทัดต่อไปนี้ที่จุดเริ่มต้นของไฟล์:
source 'https://github.com/byteark/byteark-player-sdk-ios-specs.git'
1
  1. เพิ่มบรรทัดต่อไปนี้ลงในไฟล์ Podfile:
pod 'ByteArkPlayerSDKAirplayPlugin', '~> BYTEARK_PLAYER_SDK_AIRPLAY_PLUGIN_VERSION'
1

Note

แทนที่ BYTEARK_PLAYER_SDK_AIRPLAY_PLUGIN_VERSION ด้วยหมายเลขเวอร์ชันของ ByteArkPlayerSDKAirplayPlugin ที่คุณต้องการใช้

  1. รันคำสั่ง pod install ใน Terminal:
pod install
1

Note

Cocoapods จะติดตั้ง SDK โดยตรงจาก Github private repository โดยใช้ ssh key หากคุณยังไม่ได้ตั้งค่า ssh key ในบัญชี Github ของคุณ โปรดดูเอกสาร Adding a new SSH key to your GitHub account (opens new window) บนเว็บไซต์ของ Github

# Swift Package Manager

ใช้ Swift Package Manager เพื่อติดตั้ง AirPlay Plugin.

  1. ใน Xcode ไปที่เมนู File > Add Packages
  2. ใส่ URL: https://github.com/byteark/byteark-player-sdk-ios
  3. เลือกเวอร์ชันของ AirPlay Plugin
  4. เมื่อเสร็จสิ้น Xcode จะดาวน์โหลดปลั๊กอินโดยอัตโนมัติ

# การใช้งาน

import UIKit
import ByteArkPlayerSDK
// Step 1: Import the necessary plugins for airplay integration
import ByteArkPlayerSDKAirplayPlugin
class PlayerViewController: ByteArkPlayerViewController, ByteArkPlayerAirplayPluginDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()
        do {
            // Step 2: Create a ByteArkPlayerAirplayConfig using ByteArkPlayerAirplayConfigBuilder
            let airplayConfig = try ByteArkPlayerAirplayConfigBuilder().build()
            // Step 3: Create a ByteArkPlayerAirplayPlugin instance using the config from step 2
            let airplayPlugin = ByteArkPlayerAirplayPlugin(with: airplayConfig)
            // Step 4: Assign the ByteArkPlayerAirplayPluginDelegate to receive ad callback events
            airplayPlugin.delegate = self
            // Step 5: Set up the media item using ByteArkPlayerItemBuilder
            let item = try ByteArkPlayerItemBuilder()
                        .media(URL(string: "https://byteark-playertzxedwv.stream-playlist.byteark.com/streams/TZyZheqEJUwC/playlist.m3u8")!)
                        .title("Big Buck Bunny")
                        .build()
            // Step 6: Configure the player using ByteArkPlayerConfigBuilder, add the airplay plugin to the config
            let config = try ByteArkPlayerConfigBuilder()
                .item(item)
                .autoplay(true)
                .addPlugin(plugin: airplayPlugin, name: ByteArkPlayerAirplayPlugin.PluginName) // Adding the airplay plugin
                .build()
            // Step 8: Apply the configuration to the player
            player.configure(with: config)
        } catch {
            print(error.localizedDescription)
        }
    }
    // MARK: - ByteArkPlayerAirplayPluginDelegate Methods
    // Step 9: Implement the airplay delegate method to handle when state change
    func airplayDidStart() {
        print("AirPlay did start.")
    }
}
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

# การใช้งาน API ของ Plugin

Plugin มีตัวแปรที่สามารถเข้าถึงได้จาก instance ของ Plugin เพื่อรับข้อมูล

# Variables

Name Description
var delegate: ByteArkPlayerAirplayPluginDelegate? { get, set } Get/Set a airplay plugin delegate

# Listen plugin's events

@objc public protocol ByteArkPlayerAirplayPluginDelegate {
    ///Fire after  present list of possible airpaly devices
    @objc optional func routePickerViewWillBeginPresentingRoutes()
    ///Fire when the airplay did end
    @objc optional func routePickerViewDidEndPresentingRoutes()
    ///Fire after airplay did start
    @objc optional func airplayDidStart()
    ///Fire after airplay did end
    @objc optional func airplayDidEnd()
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15