# Errors Reference

เมื่อเกิด Error ในการเล่นวิดีโอ Player จะส่ง Callback playbackError(player:, error:) ผ่าน ByteArkPlayerPlaybackDelegate หรือ Notification .error ผ่าน ByteArkPlayerPlaybackEngineNotification

# การรับ Error ผ่าน Delegate

func playbackError(player: ByteArkPlayer, error: NSError) {
  print("Error \(error.code): \(error.localizedDescription)")
  // จัดการ Error ตาม error.code
}
1
2
3
4

# ประเภทของ Error

Error ส่วนใหญ่มาจาก AVPlayer (ซึ่งเป็น Playback engine เริ่มต้นของ ByteArk Player) และมีประเภทดังนี้

ประเภท คำอธิบาย
Source error ไม่สามารถโหลด/อ่าน Manifest ของวิดีโอ (URL ผิด, เซิร์ฟเวอร์ตอบกลับ 4xx/5xx)
Network error ไม่สามารถเชื่อมต่อเครือข่ายได้
Decoder error อุปกรณ์ไม่สามารถถอดรหัสวิดีโอ/เสียงในรูปแบบที่ได้รับ
DRM error ไม่สามารถขอ License ของ FairPlay ได้ (Application Certificate, SPC/CKC ผิด)
Renderer error เกิดข้อผิดพลาดในการแสดงผลวิดีโอ
Unexpected error Error ที่ไม่สามารถระบุประเภทได้

Note

สำหรับรายละเอียดของ Error code ของ AVPlayer ดูที่ AVFoundation Error Domains (opens new window)

# Error จาก Ads Plugin

Ads Plugin (Google IMA SDK) ส่ง Error แยกผ่าน ByteArkPlayerAdsPluginDelegate.adsLoaderFailed(...) หรือ callback ของ Plugin โดยเฉพาะ — ดู การเล่นโฆษณา (Advertisement)

# แนวทางการจัดการ Error

  • Source / Network error: แสดงข้อความ Error ที่ผู้ชมเข้าใจได้ และเปิดทางให้กดเล่นใหม่
  • Decoder error: ตรวจสอบ Codec ของวิดีโอ — iOS รองรับ HLS/H.264/HEVC โดยส่วนใหญ่
  • DRM error: ตรวจสอบการ implement ByteArkPlayerDrmDataSource และ response ของ License server (ดู Apple FairPlay)
  • Ads error: โดยปกติจะไม่ทำให้วิดีโอหลักหยุด แนะนำให้ Log error ไว้สำหรับวิเคราะห์