요건·연동 형태·개발 자료
PC는 웹 페이지가 설치된 PlaynPlay App을 띄우는 구조이고, 모바일은 SDK를 고객사 앱에 포함하는 구조입니다.
| 항목 | PC App | Android SDK | iOS SDK |
|---|---|---|---|
| 지원 환경 | Windows 10 이상, macOS 11 이상 | Android 7.1(API 25) 이상 | iOS 13.0 이상 |
| 연동 형태 | 웹 페이지에 설정 파일과 agent.js를 넣고 launch() 호출 | .aar 파일과 Media3 등 의존성 추가 | Xcode에 NPlayerSDK 프레임워크 추가 |
| 앱 식별·등록 | launch() 때 DRM 설정에 App ID와 사용자 ID 지정 | 패키지 이름 등록 후 App ID 설정 | 번들 ID 등록 후 App ID 설정 |
| 학습 화면 구성 | 커스텀 페이지를 앱 안에서 열기, 플레이어 창 크기 지정 | 기본 플레이어 화면, Fragment 삽입, View 상속 | 기본 화면, 뷰 컨트롤러 상속 |
| 버전 관리 | minVersion으로 업데이트 알림 대상 지정 | 새 SDK 적용 후 고객사 앱 배포 | 새 SDK 적용 후 고객사 앱 배포 |
| 샘플·디버깅 | 재생·다운로드 테스트 페이지, 서버 사이드 샘플, 커스텀 페이지 로그 툴(macOS·Windows) | SDK 샘플 프로젝트, 문서 FAQ(Compile SDK 버전 오류 등) | SDK 샘플 프로젝트, My Mac 대상으로 실기기 없이 시험 |
| 기기 정보 | 플랫폼·OS 버전·아키텍처·모델 조회, 장치 ID | 장치 ID(2026.06.22) | 장치 ID(2026.06.22) |
| 개발 문서 구성 | Desktop 연동 가이드(2024.4.12 갱신): 커스텀 페이지, 샘플, 디버깅 | 설정 방법, 사용 방법, 플레이어 화면, API 레퍼런스(클래스 28·열거형 5·인터페이스 4), FAQ, 변경 이력 | 설정 방법(시작하기·프로젝트 생성·프로젝트 설정), API 레퍼런스(클래스 15·열거형 11·프로토콜 3·구조체 11), FAQ, 변경 이력 |
| 새 프로젝트에서 시작 | 문서에 항목 없음 — 기존 웹 페이지에 스크립트 추가 | Android Studio에서 File > New > New Project로 만들고 액티비티 템플릿, 패키지 이름, Minimum SDK 지정 | Xcode에서 File > New > New Project(⇧⌘N)로 만들고 템플릿, Team, Interface, Language 지정 |
CDNetworks 고객사는 PC에서 전용 도메인의 agent.js를 쓰고, 두 SDK는 2026.01.26 버전에서 API 도메인이 분리됐습니다.
보안
재생 권한은 세 플랫폼 모두 App ID와 사용자 ID에 묶이고, 접근 권한 검사는 같은 Callback URL 문서를 따릅니다.
| 항목 | PC App | Android SDK | iOS SDK |
|---|---|---|---|
| 녹화·캡처 대응 | 지원(문서). 1.0.31 녹화 차단 개선 | 지원(문서). 2024.04.08 녹화·캡처 차단 추가 | 지원(문서). 캡처 감지 시 screenCaptureDetected 오류 |
| 워터마크 | 지원(소개 문서). 옵션 상세는 문서에 없음 | 지원(문서). 문구·색·불투명도·크기, 위치 12종 | 문서에 항목 없음 — 확인 필요 |
| 루팅·앱 플레이어 감지 | 문서에 항목 없음 — 확인 필요 | 지원(문서). 감지되면 앱에 알림 | 문서에 항목 없음 — 확인 필요 |
| 디버깅 프록시 방어 | 문서에 항목 없음 — 확인 필요 | 2026.01.30 추가 | 2026.01.30 추가 |
| 재생 거부 원인 구분 | 세션 오류 12종. 동시 접속, 기기 제한 초과 포함 | 예외 17종. 같은 원인 포함 | 오류 18종. 같은 원인 포함 |
재생 정책
영상마다 거는 시청 규칙입니다. PC는 Agent의 MediaItem 항목으로, 모바일은 SDK의 MediaItem 설정 메서드로 지정합니다.
| 항목 | PC App | Android SDK | iOS SDK |
|---|---|---|---|
| 탐색 제한 | 지원(문서). seekable, 기본 허용 | 지원(문서). setSeekable() | 지원(문서). seekable(_) |
| 배속 범위·제한 | 배속 지원(소개 문서), 범위는 문서에 없음. disablePlaybackRate로 제한 | 0.1~4.0배. 영상별 제한은 2025.03.20 추가 | 0.1~4.0배. 영상별 제한은 2025.03.20 추가 |
| 구간 재생(클리핑) | 지원(문서). clipping | 문서에 항목 없음 — 확인 필요 | 지원(문서). 2025.01.23 추가 |
| 시작 위치·이어보기 | startTime(초)과 갱신 시각으로 최근 위치 선택 | 마지막 재생 위치 조회 | 마지막 재생 위치 조회, 목록 이동 시 이어서 시작 |
| 재생 제한 초과 | 세션 오류 PlaybackLimitExceeded | PlaybackLimitExceededException | playbackLimitExceeded |
| 셀룰러 데이터 제한 | 문서에 항목 없음 — 확인 필요 | 재생·다운로드 각각 지정 | 재생·다운로드 각각 지정 |
진행 보고에 서버가 PlaybackLimitExceeded로 답하면 세 플랫폼 모두 재생 제한 초과 오류로 처리됩니다. 규칙 조합은 재생 정책, 클리핑 운영은 미리보기 구간 재생을 보세요.
재생 화면
Android와 iOS는 같은 화면 배치를 쓰고, 맞춤 모드 수와 일부 기능에서 차이가 납니다.
| 항목 | PC App | Android SDK | iOS SDK |
|---|---|---|---|
| 화면 구성 문서 | 문서에 항목 없음 — 확인 필요 | 상단·중앙·하단·메뉴 | 상단·중앙·하단·메뉴 |
| 반복 재생 | 구간 반복 지원(소개 문서) | 구간 반복 버튼과 repeatRange, loop | 구간 반복 버튼과 repeatRange, 반복 모드 none·one·all |
| 화면 맞춤 | 문서에 항목 없음 — 확인 필요 | 5종 | 3종 |
| 확대·반전 | 문서에 항목 없음 — 확인 필요 | 확대·축소 50~800%, 화면 이동 | 확대·축소 50~800%, 좌우·상하 반전 |
| 화면 속 화면 | 문서에 항목 없음 — 확인 필요 | Android 8.0부터, 기본 허용 | 기본 허용, 백그라운드로 갈 때 자동 시작 기본 켜짐 |
| 백그라운드 재생 | 문서에 항목 없음 — 확인 필요 | 기본 꺼짐 | 기본 꺼짐 |
| 키보드·패드 | 문서에 항목 없음 — 확인 필요 | 방향 패드, 스페이스, ESC | 방향키, 스페이스, ESC |
| 재생 목록 | 재생 목록은 문서에 항목 없음 — 확인 필요. 다운로드는 여러 항목 한 번에 | 목록 재생, 차시마다 멈춤 설정 | 목록 재생, 이전 버튼 3초 기준 |
| 트랙 선택 | 문서에 항목 없음 — 확인 필요 | 비디오·오디오·자막 | 비디오·오디오·자막 |
| 플레이어 화면 문서 | 문서에 항목 없음 — 확인 필요 | 설정, 컨트롤러 화면(상단·메뉴·중앙·하단), 키보드·패드 제어 | 컨트롤러 화면(상단·메뉴·중앙·하단), 키보드·패드 제어 |
| 오디오·비디오 트랙 목록 | 문서에 항목 없음 — 확인 필요 | audioTracks, videoTracks (AudioTrack·VideoTrack 클래스) | audioTracks, videoTracks (AudioTrack·VideoTrack 클래스) |
| 버퍼링 구간 조회 | 문서에 항목 없음 — 확인 필요 | buffered (TimeRanges: 구간 개수와 구간별 시작·종료 위치) | buffered (TimeRange 배열, CMTimeRange 기반) |
버튼과 입력별 동작은 플레이어 조작, 작은 창과 앱 밖 재생은 화면 속 화면·백그라운드 재생에 있습니다.
자막
세 플랫폼 모두 영상과 별도인 자막 파일을 붙입니다. 형식과 표시 방식은 문서에 적힌 범위가 다릅니다.
| 항목 | PC App | Android SDK | iOS SDK |
|---|---|---|---|
| 연결 방식·형식 | URL, 언어, 표시 이름, 모드. 형식은 문서에 명시 없음 — 확인 필요 | Media3 자막 설정. SMI, SRT, WebVTT | URL, 언어, 표시 이름, 모드. 형식은 문서에 명시 없음 — 확인 필요 |
| 여러 자막 | autoSelect·show·hidden 모드 | 다중 자막 선택, 파일 이름 기반 자막 자동 추가 | showing 모드로 두 개 이상 동시 표시 |
| 자막 모양 | 문서에 항목 없음 — 확인 필요 | 크기, 색, 배경, 위치, 좌우 여백 | 크기, 색, 배경, 위치, 좌우 여백 |
| 다운로드 시 자막 | 문서에 항목 없음 — 확인 필요 | 함께 저장(2026.07.02) | 함께 저장(2026.07.02) |
| 화면 속 화면 자막 | 문서에 항목 없음 — 확인 필요 | 문서에 항목 없음 — 확인 필요 | 실험적 기능, 기본 꺼짐 |
자막 운영 방법은 자막 기능에서 이어집니다.
다운로드·북마크·이벤트
서버가 받는 진행·상태·종료·다운로드 상태 보고는 플랫폼과 관계없이 같은 Callback URL 형식입니다. 아래는 플랫폼마다 다른 부분입니다.
| 항목 | PC App | Android SDK | iOS SDK |
|---|---|---|---|
| 다운로드 실행 | 다운로드 타입으로 실행하거나 download()로 여러 항목 | 다운로드 매니저, 기본 3개 동시 | 다운로드 매니저, 기본 3개 동시, 백그라운드 진행 |
| 오프라인 재생 기한 | 초 단위. null은 제한 없음, 0은 오프라인 재생 불가 | Duration, 기본 null | Duration, 기본 nil |
| 오프라인 재생 기록 보고 | 1.0.26부터 | 2025.06.24부터 | 2025.06.24부터 |
| 북마크 | 커스텀 페이지에서 조회·추가·제목 수정·삭제. 서버 저장은 useBookmarkCallback | 메뉴에서 추가, 연필·휴지통 버튼. 서버 저장 설정 2025.03.07 추가 | 메뉴에서 추가, 스와이프로 편집·삭제. 서버 저장 설정 2025.03.07 추가 |
| 앱 쪽 이벤트 | 커스텀 페이지 onSessionError | 이벤트 핸들러 25종, 재생 종료 브로드캐스트 | 이벤트 핸들러·리스너, 화면 속 화면 이벤트 6종, 자막 문장 이벤트 |
서버 보고로 진도를 계산하는 방법은 진도 데이터 설계, 오프라인 학습 운영은 오프라인 학습 가이드에 있습니다.
어느 플랫폼부터 열지 정하는 기준
표를 읽은 뒤 도입 순서를 정할 때 쓰는 판단 기준입니다. 고객사 상황에 맞춘 권장 예시로 보세요.
-
Web LMS
웹 강의실이 이미 있다면
강의실 재생 버튼이
PC 안내 보기launch()를 부르도록 바꾸는 PC App부터 검토합니다. 기존 웹 화면은 그대로 두고, 수강생 PC에 앱 설치 안내만 더합니다. -
Own App
자체 앱을 운영한다면
SDK를 넣으면 다운로드함, 이어보기, 이벤트 기반 학습 기록을 앱이 직접 다룹니다. Android와 iOS 출시 일정을 따로 잡아도 콘솔 설정 화면 하나에서 등록을 늘려 갑니다.
앱 연동 가이드 -
Security Gate
보안 요건표가 까다롭다면
워터마크 세부 옵션과 루팅·앱 플레이어 감지 항목은 Android SDK 문서에서 확인됩니다. 이 항목이 필수인 과정은 iOS와 PC의 운영 방식을 상담 초기에 확인하세요.
보안 담당자용 안내
비교표 읽는 법
-
'문서에 항목 없음'이면 쓸 수 없다는 뜻인가요?
그렇게 단정할 수 없습니다. 개발 문서에서 설정이나 설명을 찾지 못한 칸이라, 앱 안에 기능이 있더라도 문서에 항목이 없으면 이렇게 적었습니다. 도입 판단에 필요한 칸은 상담 때 시연이나 답변으로 확인하세요.
-
모바일 브라우저로 수강하는 학습자는 어느 열을 보나요?
Agent 설정 문서에 따르면 웹 페이지에서 앱을 띄우는 순서는 네 OS(Windows, macOS, iOS, Android)가 같습니다. 웹에서 앱을 여는 흐름은 웹 연동 가이드를, 고객사 앱 안에서 재생하는 흐름은 SDK 열을 보세요.
-
표에 적힌 날짜는 무엇인가요?
각 플랫폼 개발 문서의 변경 이력에 적힌 반영 날짜입니다. 모바일은 SDK가 앱 안에 포함되기 때문에, 해당 날짜 이후 SDK로 만든 앱 버전이 학습자 기기에 설치돼야 변경이 반영됩니다. 전체 이력은 업데이트 기록에 있습니다.
-
RFP 비교표에 그대로 옮겨도 되나요?
'지원(문서)' 칸은 개발 문서를 근거로 적을 수 있습니다. '문서에 항목 없음' 칸은 확인 결과를 받은 뒤 채우세요. 질문 목록은 RFP 체크리스트에 정리돼 있습니다.
PlaynPlay 도입을 위한
기술적 지원과 서비스를 제공합니다.
제품 문의부터 데모 시연까지, 모든 지원을 위해 세일즈 및 기술 지원 팀이 준비되어 있습니다.
-
제품 및 도입 문의
도입 범위, 일정, 견적을 상담합니다. 서비스 형태와 사용자 규모를 알려주시면 맞는 연동 방식과 보안 설정을 제안합니다.
-
Trial 신청
PlaynPlay의 기능을 먼저 테스트해 보세요. 트라이얼 기간 동안 귀사의 제품과 PlaynPlay를 연동하고 성능과 기능을 직접 검증할 수 있습니다.
-
PlaynPlay 기술 문의
SDK 연동, Callback URL 설계, DRM 패키징 중에 생기는 질문에 기술팀이 답합니다. 공개된 개발 문서와 샘플 프로젝트도 함께 확인하세요.