Build a macOS app


Starting from macOS 10.15 Catalina, Apple introduces a new Mac Catalyst technology that makes incredibly simple to start building a native Mac app from your current iPad app. With Mac Catalyst, your apps share the same project and source code so you can efficiently convert your iPad app’s desktop-class features, and add more just for Mac.

macOS app

Thanks to Mac Catalyst you can now deliver your new Mac app to an engaged audience of over 100,000,000 active Mac users.

Current limitations

Due to technical issues the following classes are not yet supported in the macOS build:

  • mySQL database
  • Camera

Mac Catalyst apps are still in the early stages of rolling out, and Apple has plans to expand the Catalyst feature in the future. We can expect to see more apps designed for the ‌iPad‌ ported over to the Mac as time progresses, and several issues due to this first implementation will be fixed in the near future by Apple.

Notarize you app

The final result of macOS app build is a .app application. In order for an app to correctly works under macOS 10.15, Apple now requires a notarization process. You can notarize your app using the Terminal and the following commands.

Replace:

  • <APPNAME> with your application name
  • <APP_BUNDLE_ID> with your macOS app bundle ID
  • <USERNAME> with your Apple ID email address
  • <PASSWORD> with the one generated by following this tutorial from Apple
  • <RequestUUID> with the field RequestUUID returned from the command in step 2
1 ZIP:      ditto -c -k --rsrc --keepParent <APPNAME>.app <APPNAME>.zip
2 SUBMIT:   xcrun altool --notarize-app -t osx -f <APPNAME>.zip --primary-bundle-id <APP_BUNDLE_ID> -u <USERNAME> -p <PASSWORD> --output-format xml
3 POLLING:  xcrun altool --notarization-info <RequestUUID> -u <USERNAME> -p <PASSWORD> --output-format xml
4 STAPLE:   xcrun stapler staple <APPNAME>.app
5 CLEANUP:  rm <APPNAME>.zip
            ditto -c -k --rsrc --keepParent <APPNAME>.app <APPNAME>.zip
            rm -fR <APPNAME>.app

You are now ready to distribute <APPNAME>.zip to your users.