Slug genady cover

라이브 포토를 아이폰6에서 쓰도록 리버스 엔지니어링 하기

라이브 포토는 아이폰 6s와 6s 플러스에서만 만들 수 있습니다. 그러나 Genady Okrain의 강연에서는 private API와 리버스 엔지니어링을 통해서 6s가 아닌 어느 아이폰에서나 라이브 포토를 만드는 방법을 알려줍니다. 흥미진진한 private API에 대한 Parties for WWDC 앱 개발자의 강연을 들어 보세요.


소개 (00:12)

안녕하세요 여러분, 제 이름은 Genady입니다. 최근 저는 라이브 포토를 해킹(라이브 포토를 아이폰 6s가 아닌 어느 아이폰에서든 보거나 작업할 수 있도록 리버스 엔지니어링)해봤습니다.

라이브 포토란? (00:45)

iPhone 아이폰 6s 키노트에서는 라이브 포토가 사진과 함께 만들어지는 3초 분량의 비디오라고 소개했습니다. 이를 사용하기 위해서는 iPhone 6SiOS 9.1 내부의 PHLivePhoto가 필요합니다. 어떻게 라이브 포토를 만드는지 잠시 후에 스위프트 데모로 보여 드리겠습니다.

아이폰 6에서 PHLivePhoto 만들기 (01:29)

PHLivePhotoView는 라이브 포토를 보여주기 위해 사용합니다. 먼저 버튼과 파일을 추가해 볼까요, 이들이 라이브 포토로 보여주는 첫 번째 요소입니다. 이제 Photos와 PhotosUI를 import 해야 합니다. 데모를 위해 방금 추가한 비디오 파일을 사용할 겁니다. 라이브 포토는 이 비디오의 중반부터 시작될 텐데요, 이 비디오를 읽고, 중반 부분을 찾고, 이미지를 저장한 뒤 private 메서드를 호출하는 livePhotoWithImageURL()를 실행합니다. 이 메서드가 4개의 매개 변수를 사용하기 때문에 NSInvocation를 사용해서 Objective-C header bridge가 private function을 호출하도록 합니다. 라이브 포토는 성능이 좋지 않아 매우 느리므로 Apple 공식문서에서는 이를 메인 스레드에서 사용하지 않도록 권고하고 있습니다.

이런 개발 뉴스를 더 만나보세요

아이폰 6s처럼 비디오에서 라이브 포토를 만들 수도 있습니다. 6s는 사진으로 짧은 비디오를 캡처하고 이 포토를 3D 터치하면 비디오를 재생해 줍니다. PHLivePhoto를 만들어주는 이 메서드를 사용하고 PHLivePhotoView를 사용해서 플레이하면, 어느 아이폰에서든 정식 아이폰 6에서처럼 라이브 포토를 사용할 수 있습니다.

소스 코드와 샘플 앱을 Swift demoObjective-C demo GitHub에서 볼 수 있습니다.

컨텐츠에 대하여

이 컨텐츠는 저자의 허가 하에 이곳에서 공유합니다.

Genady Okrain

Genady is a developer in Israel addicted to making shiny apps. He is currently working on a startup called Reelgood, and is the creator of several apps, including Strobe, Organizer, and the infamous app Parties for WWDC!

4 design patterns for a RESTless mobile integration »

close