Live Photos can only be created on the iPhone 6s and 6s Plus, right? Using private APIs and a bit of reverse-engineering, Genady Okrain demonstrates how to create Live Photos on any iPhone, not just the 6s. Join the creator of Parties for WWDC for some live private API fun.
Intro (00:12)
Hi everyone, my name is Genady, and I recently experimented with “hacking” Live Photos — reverse-engineering them to display and work on any iPhone, not just the iPhone 6s.
What are Live Photos? (00:45)
From the iPhone 6s Keynote we know that a Live Photo is a 3-sec video with a photo. You need an iPhone 6S, and PHLivePhoto in iOS 9.1. I will run a live small Swift demo of how to make a Live Photo.
Creating a PHLivePhoto on the iPhone 6 (01:29)
PHLivePhotoView
can be used to show Live Photos. Let’s first add a button and a file (the first thing that shows as the Live Photo). We need to import Photos and PhotosUI, and have PHLivePhotoView. We’ll use the video file that I just added to demo this. The Live Photo begins with the middle of the video - I just read this video, find the middle, save the image and run livePhotoWithImageURL()
, which calls a private method. Since that method has 4 parameters, we’ll use an Objective-C header bridge to call the private function using NSInvocation
. Although Live Photos are actually very slow and because they’re not performant, Apple warns in the documentation not to use it on the main thread.
We can also create a Live Photo from a video as the iPhone 6s does. The 6s captures a short video with the photo and plays the video when the photo is 3D touched. However, by using this method of creating a PHLivePhoto
and playing it using the PHLivePhotoView
, we can get it to work on any iPhone, such as my regular iPhone 6.
The source code and a sample app are available on GitHub as a Swift demo and an Objective-C demo.
Receive news and updates from Realm straight to your inbox