WWDC 20
iPad and iPhone apps on Apple Silicon Macs
iPhone and iPad apps can now run unmodified on macOS on ARM, the same exact binary as on iOS
Uses Catalyst APIs, so apps get a lot of behavior for free
Making a separate Catalyst build manually is still recommended for optimal result (and supports Intel Macs)
To run on the Mac, an iOS app must not:
- depend on missing symbols, frameworks or other functionality (Xcode should help you at least in some cases)
- depend on hardware which Macs don’t have
Compatible apps are automatically made available for Macs unless you opt out
Possible compatibility issues:
Hardware:
- Macs use mouse & keyboard and not touch screens, so if an app uses touch in non-standard ways or relies on multi-touch, this might not work
- apps that depend on sensors like accelerometer, gyroscope, compass, depth camera, precise GPS will not work
- iOS apps expect one front and one back camera, Macs may have one, none or multiple (use
AVCaptureDeviceDiscoverySession
)
UI:
- alerts and panels like open/save will look differently than on iOS, so don't assume their dimensions and position
- if an iPad app supports multitasking, it will be fully resizable to any dimensions, including some layouts and sizes you might not expect
- iPhone-only apps and iPad apps that don’t support multitasking will run in a fixed size window matching iOS device size
- window resizing is live on macOS – make sure it’s optimized
System software:
- on the Mac, user can move the app bundle to different locations, application container is also in a different location
- APIs returning device type or model will include Mac model types
- screen size will not be one of the standard iOS device screen sizes that you may expect
You can debug, profile and test iOS on an ARM Mac as you would expect
Distribution for Mac devices works the same as for iOS devices
Apps can reuse existing subscriptions and in-app purchases
App thinning automatically selects most appropriate resources for the given Mac
→ when making a thinned build, you can select the option to optimize for any Mac
TestFlight is (still) not available on the Mac