Reflector를 활용한 아이폰 앱 영상 녹화하기

Reflector 소개

앱의 사용방법에 대한 영상을 제작해보고자 검색중 Reflector와 AirServer라는 프로그램을 알게 되어 둘다 사용해보았는데요~!! 개인적으로는 Reflector가 사용하기 편하고 스트리밍 하는 속도도 쾌적한듯해 소개해보고자 합니다. (AirServer는 녹화 기능이 없습니다)

간단하게 말해 Reflector는 나의 Mac이나 PC를 AirPlay 디바이스로 인식하게 해주는 유틸리티입니다.
따라서 이 프로그램을 설치하면 아이폰이나 아이패드의 AirPlay 기술을 이용해 아이폰에서 실행한 영화나 음악을 간편하게 맥이나 PC에서 감상할 수 있게 되겠습니다.

단, 이 프로그램을 이용할 수 있는 디바이스는 iPhone 4S, iPhone 5, iPad 2 or iPad 3에서 이용하실 수 있습니다.
저도 현재 아이폰4라 작동이 안되더군요! 대신 와이프 폰이 4s인지라 이렇게 글을 올릴 수 있게 되었습니다.

 

Reflector 설치방법

이곳에서 https://www.reflectorapp.com/ 다운로드를 합니다. 저는 맥유저라 맥기반으로 설명 드립니다. 다운로드후 Reflector.dmg를 실행하시면 아래와 같은 화면을 만나실 수 있습니다. 다른 여느 맥설치와 동일합니다. 드래그 해서 어플리케이션 폴더로 이동해주세요!!

스크린샷 2013-02-08 오전 1.59.56

그리고 나서 해당 앱을 실행시키면 설치 끝입니다.
정품으로 구매하시면 싱글라이센스로 $12.99입니다.
비품도 없냐고 물어보시는 분들께는 검색이 답이라고 말씀드리고 싶네요 ^^;

 

Reflector 사용방법 (Mac, PC)

해당 맥이나 피씨에서 앱을 실행하시면 아무것도 안뜹니다. 하지만 자세히 보시면 상단에 메뉴에 앱이 실행 중임을 한눈에 알 수 있습니다.

스크린샷 2013-02-08 오전 2.02.38

Device 설정에서 건드릴 부분은 알아서 설정해주시면 될 것 같고, Start Recording만 알고 계시면 될 것 같습니다.
이 것을 누르면 말그대로 아이폰으로 실행중인 프로그램을 맥에서 그대로 보여지고 녹화를 할 수 있게 해줍니다.

아래는 Preferences 입니다.
여기서는 아이폰이나 패드에서 실행한 화면을 띄어줄 기본적인 구성과 AirPlay 연결 이름과 암호 설정을 하실 수 있습니다.
암호는 설정해도 되고 안해도 상관없습니다만, 암호를 설정하면 폰에서 AirPlay연결시 암호를 물어보고 암호에 답해야 접속이 되게 되있으니 참고하시면 될 것 같습니다.

자, 그럼 거의 끝나갑니다. 마지막으로 중요한 폰에서의 설정은 어떻게 할지 다음 섹션을 봐주세요!

스크린샷 2013-02-08 오전 2.02.19

 

Reflector 사용방법 (iPhone, iPad)

iPhone 4S, iPhone 5, iPad 2 or iPad 3에서 홈버튼 더블클릭을 하셔서 가장 왼쪽으로 가시면 아래와 같은 화면을 보실 수 있습니다.

airplay_confing_1 airplay_confing_2

좌측 이미지에서 보시다시피 홈버튼 더블클릭해서 가장 왼쪽으로 가시면 보실 수 있습니다. 혹여나 난 왜 저게 안보이지 하시는 분들은 지금 보이는데서 한번더 드래깅 해주세요!
그래도 안보이신다면 여러분의 기기는 지원하지 않는 것 입니다. 위에서 말씀드렸다시피 iPhone 4S, iPhone 5, iPad 2 or iPad 3 에서만 이용하실 수 있습니다.

여튼 AirPlay 버튼을 누르시면 우측 이미지와 같이 AirPlay 연결 기기를 선택하라고 나옵니다.
저는 qnibus-iMac에 연결했습니다. 연결하는 순간 하단에 Mirroring(미러링)이 나오는데 이를 켜시는 순간 맥에서 다음과 같은 거대한 아이폰이 나타나게 됩니다.

 

Reflector로 맥과 폰 연결 모습

지금 보시는 화면은 아이폰에서 실행하고 있는 모습 그대로 미러링되어 나타나고 있습니다.
이걸 녹화하시려면 위에서 설명드린 Start Recording을 하시면 그대로 녹화하게 됩니다.

녹화가 끝난후 저장메시지가 나오는데 그곳에서는 동영상 렌더링시 폰이나 아이패드의 프레임을 포함할 것인지 말 것인지에 대한 체크사항이 있습니다. 이를 통해 프레임째 동영상으로 제작할 수도 있다는 사실을 꼭 알고 계시기 바랍니다.

스크린샷 2013-02-08 오전 2.13.40

 

녹화 동영상

본 동영상을 촬영하면서 오리엔테이션을 가로 세로 왔다리 갔다리 한번 했더니 기본 동영상 프레임 사이즈가 커지더군요!
참고하시고 한번 감상해주시면 될 것 같습니다.

Notification Center에서 메시지가 사라지지 않는 증상

그림1의 알림센터에서와 같이 메시지를 아무리 눌러도 메시지가 사라지지 않는 증상을 겪으신 분들이 계신지 모르겠네요!!

이런 증상을 겪기 위해서는 로컬 노티를 2가지이상의 형태로 분류해서 사용하면 만날지도 모릅니다.
저의 경우는 노트 리마인더와 알람 2가지를 로컬 노티로 구현 중인데요, 재밌는 것은 노트를 알려주는 리마인더는 아무리 해도 잘되고 알람쪽만 설정하면 그림1과 같이 메시지가 남아있더군요!

iOS Simulator Screen shot 2013. 2. 4. 오후 11.08.14
그림1

저걸 다시 눌러도 그림1의 메시지는 없어지질 않습니다.
별의 별 짓을 다해서 결국 해결했는데, 너무나 어이없어서 실소를 금치 못하고 있습니다.

바로 뱃지의 숫자로 인해 발생하는 문제였습니다.

노트 리마인더의 경우 뱃지를 출력해주고 있지만, 알람은 그렇게 사용하고 있지 않았습니다.
이런 경우 둘다 뱃지를 출력해서 가감해주면서 사용하면 문제 없지만 저처럼 한가지만 뱃지를 출력하는 경우는 반드시 비효율적이긴 하지만 아래와 같이 해줘야 정상적으로 동작합니다.

표시한 부분이 중요합니다. 강제로 뱃지의 숫자를 0으로 만들어주셔야 저와 같은 오작동의 굴레에서 벗어나실 수 있습니다.

나의 앱에 앱스토어 화면 보기

소개

아시는 분들은 아시겠지만 iOS 6.0부터 지원되는 것이라 모르시는 분들이 많은 것 같습니다.

아래 그림1을 보시면 현재 회사에서 소개하고 싶은 여러 앱들이 있습니다.
보통 누르면 나의 앱에서 빠져나가고 앱스토어 앱으로 이동합니다.
다른 앱으로 나가는게 썩 보기 좋지 않았었는데, 이제 그런 고민 하지 않아도 될 것 같습니다.

2013-02-04 14.24.50
그림1

 

변경후,

그림2처럼  iOS6부터는 앱 자체적으로 불러들일 수 있습니다.
SKStoreProductViewController 컨트롤러가 생겼기때문이죠!

 

2013-02-04 14.23.26
그림2

 

사용방법

그림2와 같이 집어 넣으니 이동을 하지 않아서 너무 좋더군요!
우선 <StoreKit.framework>을 프로젝트로 추가해주신 후, 다음과 같이 코드를 작성해주세요!
일반적인 뷰컨트롤러 호출 방식과 동일합니다.

딜리게이트도 있는데요!! 해당 헤더에 SKStoreProductViewControllerDelegate 선언해주시고!
아래와 같이 창을 닫도록 처리해주시면 됩니다.

 

 

 

 

iPad에서 UIModalPresentationFormSheet 사용시 키보드 내리기

아이패드 작업시 그림1과 같은 모달창에서 키보드를 입력해야 하는 경우가 있습니다.
일반적으로 키보드 작업을 하고 취소오케이를 누르면 키보드도 같이 내려가야 합니다.

iOS Simulator Screen shot 2013. 2. 3. 오전 2.09.01
그림1

 

 

어라! 하지만 그림2와 같이 키보드가 내려가지 않았습니다.
어떻게 된 것일까요? 저도 삽질 끝에 알아낸 결과라 기록으로 남겨둡니다.

iOS Simulator Screen shot 2013. 2. 3. 오전 2.10.55
그림2

 

Stackoverflow 에서 검색을 해보았더니 의견이 분분하더군요!
심지어는 애플의 버그라고 하시는 분들도 계셨습니다.
하지만 알고 보니 UIViewController 내에 disablesAutomaticKeyboardDismissal 이라는 메소드의 기본 설정값이 YES 여서 발생하는 문제였습니다.
모달로 열리는 창에 disablesAutomaticKeyboardDismissal 메소드를 오버라이드 하시면 문제는 해결됩니다.

예를 들면, 다음과 같이 모달을 호출한다고 가정합니다.

보시다시피 formsheet의 형태로 모달을 호출하게 되며 키보드를 띄우게 될 경우 어김없이 사라지지 않는 문제가 발생하게 됩니다.
해결방법은 모달로 띄우는 컨트롤러 소스안에 다음과 같이 넣어주세요.

이렇게 키보드를 자동으로 사라지기 비활성화하기에서 return을 NO로 해주면 활성화한다는 말이 되기때문에 모든 것이 정상적으로 작동할 것 입니다.
만약, UINavigationController에 얹어서 모달을 띄우시는 경우 UINavigationController의 SubClass로 하나 생성하셔서 그 안에 위와 같이 넣어주시고 호출하시면 됩니다.