Apple has long had a guideline stating that apps that use deprecated technologies will be rejected. QTKit classes such as QTMovieView were only deprecated in October 2013 with the release of Mac OS X 10.9. This is probably because the replacement, AVFoundation, did not initially support much of what was possible with QuickTime. For example, its QTMovieView equivalent, AVPlayerView was only added in 10.9. Prior to that, you had to build your own player using AVPlayerLayer.

I always took the guideline to mean deprecated as of the OS version the app is targeting. If, in fact, it means deprecated as of the current OS version, developers will need to choose between dropping support for older OS versions or writing extra code, i.e. implementing MyPlayerView in terms of AVPlayerLayer. The latter is not a very attractive use of time. If you’re going to rewrite your code, you probably want to use the latest and greatest, not reinvent the AVPlayerView wheel and maintain it into the future.

This puts developers in an artificially bad situation. Both the old and new OS versions already have the code to do what’s needed. It’s just put off-limits.

The other effect of this is that, since AVPlayerLayer was added in Mac OS X 10.7, there isn’t a good replacement for QTKit if your app targets 10.6. About 10% of my customers and 8% of Omni’s are currently using 10.6, so you might still want to provide updates for those customers—or at least fix bugs.

6 Comments

Those should be runtime checks. So if you use the API at runtime on 10.9 you get rejected, regardless of what you do for earlier OSs. But I guess it was easier for them to add QuickTime to the list of banned APIs than to create a new runtime checking system. Or maybe they just want you to drop support for older OSs.

Very weird. There are certainly other workarounds for the 10.6 issue for straightforward movie playback (for example, you could load a movie into a QCView with an appropriate Quartz Composition, or via Quick Look with a QLPreviewView, or via the QuickTime Plug-In with a WebView) but it seems like a wrongheaded decision on Apple's part.

I just heard from Apple that this is the result of a bug in the upload validation(which is now fixed). App updates that use QTKit are still allowed. I just uploaded an update with QTKIT today and it wasn't automatically rejected.