iOS용 플레이어 적용
    • PDF

    iOS용 플레이어 적용

    • PDF

    Article Summary

    Classic/VPC 환경에서 이용 가능합니다.

    iOS용 플레이어 적용에서는 Video Player Enhancement iOS SDK를 활용하여 iOS용 Native 플레이어를 적용하고 설정하는 예제를 설명합니다.

    참고

    iOS SDK 예제를 실행하려면 Standard 요금제를 이용해야 하며, 다음과 같은 환경이 요구됩니다.

    • Xcode
    • 외부와의 통신이 가능한 환경

    플레이어 적용

    플레이어를 적용하는 방법은 다음과 같습니다.

    1. Xcode를 실행해 주십시오.
    2. 추가하려는 프로젝트의 Targets > General 메뉴를 차례대로 클릭해 주십시오.
    3. Framework, Libraries, and Embedded Content에 'NCPlayerSDK.xcframework'를 Embed & Sign 타입으로 추가해 주십시오.
    4. 사용할 VC에 NCPlayerSDK를 불러와 주십시오.
    5. Class를 생성한 후 NCPlayerView를 참조해 주십시오.
      vpe-example-ios_view
    6. View의 Class를 PlayerView로 지정해 주십시오.
      vpe-example-ios_playerview

    플레이어 설정

    플레이어를 설정하는 방법은 다음과 같습니다.

    1. 다음 코드를 적용하여 VC에 NCPlayerView Class를 초기화해 주십시오.
      class PlayerView:NCPlayerView{}
      class ViewController: UIViewController {
          // view와 연결
          @IBOutlet weak var playerView: PlayerView?
      }
      
    2. override func viewDidAppear를 생성한 후 다음 코드를 적용해 주십시오.
      참고
      • NCPlayerView 객체가 만들어진 상태에서만 메소드를 호출할 수 있습니다.
      • Bundle ID는 콘솔에 등록한 앱 패키지 ID와 동일해야 합니다.
      var defaultBackground: UIColor? = .white
      func updateBackgroundColor() {
            if UIDevice.current.orientation.isLandscape {
                self.view.backgroundColor = .black
            } else {
                self.view.backgroundColor = defaultBackground
            }
        }
       
      override func viewWillAppear(_ animated: Bool) {
          super.viewWillAppear(animated)
       
          defaultBackground = self.view.backgroundColor
       
          updateBackgroundColor()
      }
      
      override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
          updateBackgroundColor()
      }
      
      override func viewDidAppear(_ animated: Bool) {
              super.viewDidAppear(animated)
              
              // SDK 초기화
              // 라이선스 키 입력
              let licenseKey = "{사용자의 라이선스 키}"
              
              // 플레이어 옵션 입력(콘솔에서 만들어진 스크립트 옵션 사용)
              let playerOptions = """
               {
                  "playlist":[
                      {
                          "file":"https://pdeubxscnimo10174288.cdn.ntruss.com/hls/uqyCPUeJ1Ne8ml9OtPsizg__/shorts24/j5IXBfIJ83893893_shorts,1080,720,480,p.mp4.smil/master.m3u8",
                          "poster":"https://nnbkegvqsbcu5297614.cdn.ntruss.com/profile/   202211/083fff831d8904cd9d9c180e5c10be0b.png",
                       "description":{
                              "title":"네이버 클라우드 테스트 영상1",
                              "created_at":"2022.07.13",
                           "profile_name":"네이버 클라우드",
                              "profile_image":"https://nnbkegvqsbcu5297614.cdn.ntruss.com/profile/202208/d127c8db642716d84b3201f1d152e52a.png"
                          },
                      },
                     {
                         "file":"https://pdeubxscnimo10174288.cdn.ntruss.com/hls/uqyCPUeJ1Ne8ml9OtPsizg__/shorts24/j5IXBfIJ83893893_shorts,1080,720,480,p.mp4.smil/master.m3u8",
                         "poster":"https://nnbkegvqsbcu5297614.cdn.ntruss.com/profile/202211/083fff831d8904cd9d9c180e5c10be0b.png",
                         "description":{
                             "title":"네이버 클라우드 테스트 영상2",
                             "created_at":"2022.07.13",
                             "profile_name":"네이버 클라우드",
                             "profile_image":"https://nnbkegvqsbcu5297614.cdn.ntruss.com/profile/202208/d127c8db642716d84b3201f1d152e52a.png"
                         },
                     },
                     {
                         "file":"https://pdeubxscnimo10174288.cdn.ntruss.com/hls/uqyCPUeJ1Ne8ml9OtPsizg__/shorts24/j5IXBfIJ83893893_shorts,1080,720,480,p.mp4.smil/master.m3u8",
                         "poster":"https://nnbkegvqsbcu5297614.cdn.ntruss.com/profile/202211/083fff831d8904cd9d9c180e5c10be0b.png",
                         "description":{
                             "title":"네이버 클라우드 테스트 영상3",
                             "created_at":"2022.07.13",
                             "profile_name":"네이버 클라우드",
                             "profile_image":"https://nnbkegvqsbcu5297614.cdn.ntruss.com/profile/202208/d127c8db642716d84b3201f1d152e52a.png"
                         },
                     }
                  ],
                  "autostart":true,
                  "muted":true,
                  "keyboardShortcut":true,
                  "controls":true,
                  "ui":"pc",
                  "controlBtn":{
                      "play":true,
                      "fullscreen":true,
                      "volume":true,
                      "times":true,
                      "pictureInPicture":true,
                      "setting":true,
                  },
                  "progressBarColor":"#ff0000",
                  "controlActiveTime":3000,
                  "startMutedInfoNotVisible":false,
                  "aspectRatio":"16/9",
                  "objectFit":"contain",
                  "playRateSetting":[0.5,0.75,1,1.5,2],
                  "seekingPreview":true,
                  "autoPause":false,
                  "repeat":false,
                  "touchGestures":true,
                  "descriptionNotVisible":false,
                  }
            
               """
           
              NCPlayer.shared.initialize(licenseKey: licenseKey)
              NCPlayer.shared.delegate = self
      
              playerView?.play(playerOptions)
          }
      
    3. ViewController에 NCPlayerDelegate를 상속받은 후 함수를 생성해 주십시오.
      vpe-example-ios_delegate
    4. 다음 코드를 적용하여 이벤트를 설정해 주십시오.
          // 네트워크 상태 여부
      func NCPlayerNetworkStatus(state: String) {
          print("networkStatus: \(state)")
      }
          // 전체 화면 상태 여부
      func NCPlayerOnFullscreenState(state: Bool) {
          print("onFullscreenState: \(state)")
      }
          // 가로 모드 상태 여부
      func NCPlayerIsLandscape(state: Bool) {
          print("isLandscape: \(state)")
      }
      
          // 현재 재생 시간이 변경될 때 발생하는 이벤트
      func NCPlayerOnTimeUpdate(data: Dictionary<String, Any>?) {
          if let data = data {
              print("time: ",data)
          }
      }
       
          // 이전 영상으로 넘어갈 때 발생하는 이벤트
      func NCPlayerOnPrevTrack(data: Dictionary<String, Any>?) {
          if let data = data {
              print("NCPlayerOnPrevTrack: ",data)
          }
      }
      
          // 다음 영상으로 넘어갈 때 발생하는 이벤트
      func NCPlayerOnNextTrack(data: Dictionary<String, Any>?) {
          if let data = data {
              print("NCPlayerOnNextTrack: ",data)
          }
      }
      
          // 컨트롤바 활성화 또는 비활성화 여부
      func NCPlayerOnControlbarActive(active: Bool) {
          print("NCPlayerOnControlbarActive: ",active)
      }
       
          // 영상 재생 시도가 성공하면 발생하는 이벤트
      func NCPlayerOnPlay() {
          print("NCPlayerOnPlay: play")
      }
       
          // 영상이 일시 정지되면 발생하는 이벤트
      func NCPlayerOnPause() {
          print("NCPlayerOnPause: pause")
      }
       
          // 재생이 끝까지 완료되었을 때 발생하는 이벤트
      func NCPlayerOnEnd() {
          print("NCPlayerOnEnd: end")
      }
          // 캡처 상태 여부
      func NCPlayerIsCaptured(state: Bool) {
          print("NCPlayerIsCaptured: \(state)")
      }
          // 녹화 상태 여부
      func NCPlayerIsRecording() {
          print("녹화")
      }
         // 전체 화면 상태 OFF
      func NCPlayerOnFullscreenOff() {
          print("NCPlayerOnFullscreenOff: Off")
      }
          // 전체 화면 상태 ON
      func NCPlayerOnFullscreenOn() {
          print("NCPlayerOnFullscreenOn: On")
      }
          // 전체 화면 여부 true or false
      func NCPlayerOnFullscreen(state: Bool?) {
          if let state = state {
              print("NCPlayerOnFullscreen: \(state)")
          }
          
      }
      

    이 문서가 도움이 되었습니까?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.