ความปลอดภัยของ ReplayKit ใน iOS และ iPadOS
ReplayKit เป็นเฟรมเวิร์คที่อนุญาตให้นักพัฒนาสามารถเพิ่มความสามารถในการบันทึกและการกระจายสัญญาณสดไปยังแอปได้ นอกจากนี้ ยังอนุญาตให้ผู้ใช้อธิบายเสียงบันทึกและการกระจายสัญญาณของผู้ใช้โดยใช้กล้องหน้าและไมโครโฟนของอุปกรณ์ได้อีกด้วย
การบันทึกภาพยนตร์
มีชั้นความปลอดภัยจำนวนมากที่สร้างลงในการบันทึกภาพยนตร์ดังนี้:
หน้าต่างโต้ตอบสิทธิ์: ก่อนเริ่มการบันทึก ReplayKit จะแสดงคำขอการเตือนความยินยอมให้ผู้ใช้เพื่อให้ผู้ใช้รับทราบความตั้งใจในการบันทึกหน้าจอ ไมโครโฟน และกล้องหน้า การเตือนนี้จะแสดงหนึ่งครั้งต่อการทำงานแอป และจะแสดงอีกครั้งหากแอปถูกปล่อยให้ทำงานอยู่เบื้องหลังเป็นระยะเวลานานกว่า 8 นาที
การจับภาพหน้าจอและการบันทึกเสียง: การจับภาพหน้าจอและการบันทึกเสียงจะเกิดขึ้นนอกกระบวนการของแอปในดีมอนของ ReplayKit replayd สิ่งนี้ได้รับการออกแบบมาเพื่อให้แน่ใจว่าเนื้อหาที่บันทึกจะไม่สามารถเข้าถึงกระบวนการแอปได้
การจับภาพหน้าจอและการบันทึกเสียงภายในแอป: วิธีการนี้จะช่วยให้แอปรับวิดีโอและบัฟเฟอร์ตัวอย่างที่ได้รับการป้องกันโดยหน้าต่างโต้ตอบสิทธิ์ได้
การสร้างภาพยนตร์และพื้นที่จัดเก็บข้อมูล: ไฟล์ภาพยนตร์จะเขียนลงในไดเรกทอรีที่สามารถเข้าถึงระบบย่อยของ ReplayKit ได้เท่านั้น และไม่สามารถเข้าถึงแอปใดๆ ได้ วิธีการนี้ช่วยป้องกันไม่ให้บุคคลอื่นใช้เสียงบันทึกโดยไม่ได้รับความยินยอมจากผู้ใช้
การแสดงตัวอย่างและการแชร์ของผู้ใช้ปลายทาง: ผู้ใช้สามารถแสดงตัวอย่างและแชร์ภาพยนตร์ที่มีอินเทอร์เฟซผู้ใช้ที่ ReplayKit ขายได้ อินเทอร์เฟซผู้ใช้แสดงการทำงานอย่างอิสระผ่านโครงสร้างพื้นฐานส่วนขยาย iOS และมีสิทธิ์เข้าถึงไฟล์ภาพยนตร์ที่สร้างขึ้น
การกระจายสัญญาณด้วย ReplayKit
มีชั้นความปลอดภัยจำนวนมากที่สร้างลงในการกระจายสัญญาณภาพยนตร์ดังนี้:
การจับภาพหน้าจอและการบันทึกเสียง: กลไกการจับภาพหน้าจอและการบันทึกเสียงในระหว่างการกระจายสัญญาณเหมือนกันกับการบันทึกภาพยนตร์และเกิดขึ้นใน
replayd
ส่วนขยายการกระจายสัญญาณ: สำหรับบริการของบริษัทอื่นๆ ในการเข้าร่วมการกระจายสัญญาณด้วย ReplayKit จะต้องสร้างส่วนขยายใหม่สองรายการที่กำหนดค่าโดยมีปลายทาง com.apple.broadcast-services ดังนี้:
ส่วนขยายอินเทอร์เฟซผู้ใช้ที่อนุญาตให้ผู้ใช้ตั้งค่าการกระจายสัญญาณของตน
ส่วนขยายการอัปโหลดที่จัดการการอัปโหลดข้อมูลวิดีโอและเสียงไปที่เซิร์ฟเวอร์ส่วนหลังของบริการต่างๆ
สถาปัตยกรรมช่วยให้แน่ใจว่าแอปที่โฮสต์ไม่มีสิทธิ์ในเนื้อหาของวิดีโอและเสียงที่มีการกระจายสัญญาณ เฉพาะ ReplayKit และส่วนขยายการกระจายสัญญาณของบริษัทอื่นที่มีสิทธิ์เข้าถึง
ตัวเลือกการกระจายสัญญาณ: ด้วยตัวเลือกการกระจายสัญญาณ ผู้ใช้จะเริ่มต้นการกระจายสัญญาณระบบโดยตรงจากแอปโดยใช้อินเทอร์เฟซผู้ใช้ที่กำหนดด้วยระบบเดียวกันซึ่งสามารถเข้าถึงได้โดยใช้ศูนย์ควบคุม อินเทอร์เฟซผู้ใช้จะปรับใช้โดยใช้ API ส่วนตัวและเป็นส่วนขยายที่อยู่ภายในเฟรมเวิร์ค ReplayKit ตัวเลือกการแสดงระบบจะทำงานอย่างอิสระจากแอปที่โฮสต์
ส่วนขยายการอัปโหลด: ส่วนขยายที่บริการการกระจายสัญญาณของบริษัทอื่นใช้เพื่อจัดการเนื้อหาวิดีโอและเสียงในระหว่างกระจายสัญญาณจะใช้บัฟเฟอร์ตัวอย่างที่ไม่เข้ารหัสแบบไฟล์ดิบ ในระหว่างโหมดของการจัดการนี้ ข้อมูลวิดีโอและเสียงจะถูกทำให้เป็นอนุกรม แล้วส่งไปที่ส่วนขยายการอัปโหลดของบุคคลหรือบริษัทอื่นในแบบเรียลไทม์ผ่านการเชื่อมต่อ XPC โดยตรง ข้อมูลวิดีโอจะเข้ารหัสโดยได้มาจากวัตถุ IOSurface จากบัฟเฟอร์ตัวอย่างวิดีโอ เข้ารหัสอย่างปลอดภัยเป็นวัตถุ XPC ส่งผ่าน XPC ไปยังส่วนขยายของบุคคลหรือบริษัทอื่น แล้วถอดรหัสอย่างปลอดภัยกลับเป็นวัตถุ IOSurface