Taking iPad Apps for Mac to the Next Level
Description: macOS Catalina provides an easy way to bring your iPad app to the Mac while maintaining your single code-base. Hear about ways in which you can take your app beyond the default behaviors to optimize its interface for the Mac. Get an overview of APIs you can use and macOS design guidelines that need to be considered. Learn how the iPad app lifecycle comes across on the Mac, and get distribution details for your application.
Make it scale
Your app now runs from a tiny 4” iPhone 5S, all the way to a full screen on a 27-inch iMac, and that's with a 77% skill factor. In fact, the 27-inch display is more like a 35-inch iPad.
Therefore: support dynamic type and use Auto Layout, and lastly, remember that on the Mac app resize fast: resizes should run at 60 frames per second.
Implement Great Keyboard support
Support menu bars (you can even use storyboards for this).
Alternatively, override the
buildCommands(with:) app delegate method.
..where it makes sense.
Support the Touchbar
Author a Help Book
Make sidebars look like a macOS sidebars (with the translucency as background): this should be done when in split mode and the master view acts as a toolbar.
#if targetEnvironment(UIKitForMac) primaryBackgroundStyle = .sidebar #else
NSToolbar, used in macOS for most common actions:
Reconsider tabbars and make them a segmented controller on the top instead (on macOS).
UIKitForMac apps will basically permanently stay in a foreground + active state, rarely they’ll move to a background state etc.
The app will move to other states only when macOS determines that the app is not active/in use, however there’s no clear way to predict this. Do not rely on those statuses for critical logic.
Unified certificate for both iOS and macOS distribution.
In iOS, we archive the app with “Generic iOS Device” as target in order to export our app for the store and upload it as an IPA.
In MacOS, we archive the app with “My Mac” as target in order to export our app for the store and upload it as an Mac package.
Most are automatically enabled by looking at the
info.plist file, however some needs to be manually activated: in particular keychain and push notification capabilities.