Photo Find v1.1 Released

IMG_4769I’m happy to report version 1.1 of Photo Find is now available on the App Store as of January 26, 2015. This is the second release and introduces two new features.

Download Photo Find here »

Photo Find is an app that lets you pick a photo and points you to the exact location where the photo was taken.

Paste Photo from Clipboard

Now, when you have a photo already on the clipboard a new button shows up that lets you quickly paste the photo into the app.

The need for this arose from my own use of the app. If someone sent me a picture via iMessage and I wanted to load it into Photo Find, the process was annoying. I would need to save the photo and then find it with the photo picker interface.

To make this faster, I added a button that shows up whenever an image is on the clipboard. When the button is tapped, the photo is loaded, and if it has location data you will be able to navigate to it.

Feature Implementation

I decided the button should show up whenever a photo is on the clipboard, whether it has location data or not. Originally I thought the button should only show the button if the photo had location data. However, since there is already a decent user feedback mechanism when a photo with no location data is loaded, I decided it makes sense to always show the button when there is an image on the clipboard. This prevents users from thinking the image wasn’t properly copied when copying an image with no location data.

I was curious about whether this feature would get approved by Apple, since I haven’t seen any other apps dynamically respond to the contents of the clipboard (UIPasteboard).

Does anyone know any apps that alter their behavior based on what’s on the clipboard? I can think of places this could be very useful, like if the Google Translate app automatically translated text on the clipboard when you open the app. UPDATE: My roommate Brian reminded me the Instapaper presents an alert when you open the app and have a URL copied to the clipboard.

Implementing this was a little trickier than it might seem. I had to completely go back to the drawing board on how I was getting location information for a photo. With Apple’s APIs it’s very different to get the location of a photo retrieved with the UIImagePickerController versus an image from UIPasteboard. This was also a good opportunity to switch the image picker location lookup to use PHAsset objects in iOS in favor of ALAssetsLibrary, which I used in the first version.

By the way, while I was writing this I started thinking a lot about the term “pasteboard” vs “clipboard.” It turns out this is another example of terminology inherited from NeXT!

Non-Metric Units

The first version of Photo Find only used meters and kilometers. I’ve been an advocate of the metric system since high school when I decided to make the switch, but I realize there are many people in the United States who still use feet and miles.

I’ve decided a new entrepreneurial theme I want to embrace is profiting from people on the wrong side of history. While I built this app mostly for my own use while hiking, I thought it would be nice if it could make money somehow.

Users of the app were asking for an option to switch to feet and miles, but I wanted make sure to take a clear stance on preferring SI units. After thinking about it more, I realized I could both create a revenue model for this app and provide an economic incentive for people to use SI units at the same time.

Ideally, this app would make NO money, but I have a feeling some peolpe will pay for it. Or maybe some people will buy it to support the developer. 😀

Feature Implementation

IMG_4768I tried to implement the purchase as simply as I could, and worried Apple may not approve this because it didn’t explain much to the user beyond asking to pay $1.99.

The first time a user selects “ft” the In-App Purchase is initiated. Then, once the user has purchased it, the UISegmentedControl behaves normally to switch back and forth between meters and feet.

The option resides on a new panel to the left of the main screen. The main reason I did this is because Apple requires a Restore Purchases button for any app with In-App Purchases, and I didn’t want to add that on the main screen.

Most of these screenshots you see on this site are from my iPhone 6, so there’s a lot of breathing room. The oldest iPhone that can run the app is the iPhone 4S, since the app requires iOS 8.0. On that smaller screen, everything’s a lot more compact. There wouldn’t be room for all of this on the main screen of the app. The units option and Restore Purchases button are also lower priorities for the user.

Process for working on this app

I actually thought of this revenue model while developing the first version of the app. Instead of implementing it, I wanted to stick to the Getting Real mindset.

I decided I should release a version with no unit switching and no revenue model, then add it in the next release. In hindsight, I’m SO HAPPY I made that decision and didn’t try to fit these into version 1.0.

Actually getting through the whole app development, submission, and approval process to get my first app in the App Store was so rewarding. It didn’t matter if the app could make money. The app got out there and on hundreds of devices, which provided an opportunity to get feedback on it.

This app is just a fun learning experience for me. After the milestone of a published app I didn’t really touch the code for weeks.

Most of my time right now is spent on Credit Card Insider, so development on this app only really happens here and there late at night when code mode strikes. I probably spend less than 2 hours per week average. I slowly added the clipboard feature after some troubleshooting sessions spaced out over a few weeks.

IMG_3985I would develop a build, try it out on my phone for a week, and then work on it a little more. To the left, you can see a build from late November 2014 that could do the units switching and had a probably-not-working-yet version of the paste button.

Finally, on the night of Saturday, January 17, 2015, I got into code mode at my friend Brian Lee’s kitchen table and built my first In-App Purchase, then submitted the build to the App Store.

It’s actually funny looking back at that screenshot of a previous build. In this photo the app is set to navigate that to a picture of Brian’s jet boat at his house in Deerfield Beach, Florida.

I was home in Syracuse, NY when I took this screenshot in mid-November, so it’s a crazy coincidence that I ended up finishing version 1.1 in his kitchen 1176 miles away a few months later.

Criticisms of this version

The sliding gestures are buggy. I probably should have used a UIScrollView or UIPageViewController instead of building something custom. My goal was to focus on releasing a version with the In-App Purchase, and then iterate from there.

I already had the sliding “glass” panel in version 1.0, so I sort of organically built the rest of the sliding gesture stuff on top of that before I even realized UIScrollView would have been a better option.

I noticed some minor bugs and usability improvements related to the In-App Purchase after submitting. I’ll probably do a version 1.1.1 at some point in the next few months to squash those bugs.

The In-App Purchase turned out to be much easier to implement than I had expected. On the other hand, the paste button required lots of troubleshooting. If I could go back I would have built the In-App Purchase first, released that version, and then waited for a future release to do the paste button.

What’s next?

Well, I’ll probably not touch this app for a while. At this point it this project has already taught me SO much that will be influential on any other projects, so I’d be happy stopping here. I’d rather spend the time on Credit Card Insider right now.

I’ll probably do some very minor promotion to get the app out there in people’s hands who can really make good use of it. There are no viral growth or retention mechanisms, so those would be two good things to spend some time on development-wise if I want this app to be able to snowball its own growth.

So, if you know someone who might be interested in the app, I would REALLY appreciate it if you send it over to him or her! Here’s the link to download it on the App Store: Download Photo Find on the App Store »

Update: Which photos work?

Photo Find works with any photo that has EXIF data, but certain things will either not save EXIF data, or will strip location data out. So far I’ve tested a few different combinations of sending and receiving…

Email: If it’s a full size JPEG that had EXIF data originally, it seems to work. If the photo has been resized with built-in iOS resizing features, however, location doesn’t seem to be preserved.

iMessage: Seems to work if you add the photo from your library or paste the photo in, but last time I tested when I took a photo within the Messages app location data is NOT saved.

Text: I haven’t had success sending it through SMS between iPhones or from Android to iPhone. I don’t know if this is actively being stripped or just getting stripped along the way with some compression.

The iOS Camera app saves location data with photos when Airplane Mode is not turned on. In other apps, it seems like its up to the app to look up the location and save it with the photo. Otherwise the location doesn’t seem to be saved.

Originally I tried to build it in JavaScript, but iOS actually does strip out EXIF data from images uploaded through file upload fields so it didn’t work with Safari, Chrome, or any browser. (Took me a while to figure this out before finding a few threads like this:…)

If you like it, please leave a review in the App Store!

Leave a Reply

Your email address will not be published. Required fields are marked *