Category: iOS

Portfolio 4.1.1

Every year brings a new iOS version, and every iOS version brings a number of subtle changes that break small portions of an app. 4.1.1 is Portfolio’s first update to address those. The most significant change with iOS 9 was the introduction of App Transport Security, a new system-level policy that requires apps to explicitly opt out of requiring outgoing…

How to Write a Support Request →

I’ve definitely received a variety of support requests over the years. Brett sums up very well how to get the best results when you’re having a problem. You’re the customer, and you deserve good support. Not following these guidelines should never prevent excellent customer service, but taking them into account when submitting a problem or request will make the experience…

Updating for App Transport Security

iOS 9 and tvOS both brought with them a new addition called App Transport Security. In short, it means that, in an effort to encourage wider use of https, vanilla http connections will be prevented from connecting unless an exception exists in the app’s Info.plist. Both Portfolio and Studio Pro provide a companion Mac-based loading app. It provides a RESTful…

Epitome: The iPad Pro and the App Store

The often-rumored and long-predicted iPad Pro made its debut at this year’s September event. It is, unfortunately, set to become the poster child of almost all that is wrong with the App Store. Unlike its predecessors, the iPad Pro is a device targeted at professionals and prosumers – it’s not the iPad Mini parents give their kids as a babysitter…

Correctly Drawing PDFs in Cocoa

Nearly every example available online for rasterizing a PDF document into an image on iOS or OS X is wrong. Most of those take this approach: //Document Loading CGPDFDocumentRef pdfDocument = CGPDFDocumentCreateWithURL(#URL#); CGPDFPageRef page = CGPDFDocumentGetPage(pdfDocument, 1); //Sizing CGRect mediaBox = CGPDFPageGetBoxRect(page, kCGPDFMediaBox); size_t width = (size_t) CGRectGetWidth(mediaBox); size_t height = (size_t) CGRectGetHeight(mediaBox); size_t bytesPerRow = ((width * 4) +…

An Objective-C Reporting Framework

Studio Pro has the capability of generating a paginated invoice, complete with all of the traditional invoice components. Recently, as the first of some new reporting options, I wanted to add the ability to generate an order summary separate from the invoice to make fulfillment easier. Problem is, the invoice generation code is very specific and not at all suited…

Simple Tutorial Videos

Some users figure things out themselves, others prefer to read, a few ask, and some want a video. Ultimately the goal is the same: get the users’ problems solved so you can reduce your support load. Providing both a user manual and tutorial videos can go a long way towards achieving this. Creating a tutorial video itself isn’t an overly…

Five Years on the App Store

I have always enjoyed reading real accounts from developers on the App Store. As Portfolio turns five years old this August, I figured it was my turn to do the same. Enjoy! Numbers Portfolio sold its first copy on August 16, 2010. In the five years since it has been sold 37,805 copies for a net to me of $364,797.…

Updates

A few days ago Dan Counsell wrote about using a more frequent release schedule, a practice I’ve seen many developers switching to and which can help with limiting user backlash (while some users love shiny new updates, others hate them and will use one-star App Store reviews to let you know). It’s definitely tempting to want to bundle more and…

Portfolio 4.1.0

As I mentioned previously, I try to have a core focus for each version of Portfolio. For version 4.1.0 that focus was performance. Portfolio 4 brought with it a brand new image viewer (well, not quite brand new – it was taken from Studio Pro and extended to support other media types). This was done to make it more future-proof…

Why I’m Waiting on Swift

The promise of Swift looks great. Faster performance1, better error handling, and better compile-time bug detection sound like very welcome additions to the iOS/OS X development ecosystem. The thing is, though, there are problems, problems that make it impractical to put time into mastering the language. Swift is being actively developed as a language, so much so that Apple is…