How to publish iOS app written in Flutter for macOS

Hi, I have an iOS app available on App Store since 2019. This app is an open source app (https://github.com/mkulesh/onpc/tree/onpc-flutter/ios) written using Flutter. The users are really satisfied with the app and now I would like to publish it for macOS as well. The macOS version uses the same code but has slightly different design adapted for desktop.

I am currently able to build and archive the macOS version in XCode, the app it tested on macOS Catalina and Big Sur and works stable. Both versions (iOS and macOS) share the same source code but are two separate projects as requested by Flutter SDK. The macOS project file is here: https://github.com/mkulesh/onpc/tree/onpc-flutter/macos

My question is that is the best way to distribute the macOS version in App Store additionally to existing iOS version? The iOS app identifier is com.mkulesh.onpc. Can I use the same identifier for macOS build or shall I register a new identifier (like com.mkulesh.onpc.macos) on "Identifiers" page of my developer account? If I can use the same identifier, that is the workflow necessary to submit the app? XCode Archive -> Distribute to App Store Connect -> Submit for review or something else? Do I need new certificates additionally to my existing Development and Distribution certificates?

My app also uses following capabilities: com.apple.security.app-sandbox com.apple.security.network.client com.apple.security.network.server

Do I need to request these capabilities on "Certificates, Identifiers & Profiles" page in my Developer account?

Regards from Bremen,

Mikhail Kulesh

Can I use the same identifier for macOS build … ?

You can, and it’s what we recommend. Using the same App ID for both platforms generally simplifies your life and offers some key advantages, like Universal Purchase (should you decide that you need that in the future). And if you start by shipping separate App IDs there’s no way to merge them later on.

If I can use the same identifier, that is the workflow necessary to submit the app? Xcode Archive -> Distribute to App Store Connect -> Submit for review or something else?

Yes.

Do I need new certificates additionally to my existing Development and Distribution certificates?

No.

Historically it was common for folks to use separate signing identities for the Mac App Store (both development and distribution) but that’s no longer necessary. If you have Apple Development and Apple Distribution signing identities, these will work for all platforms [1].

One thing to note is that you can ship Mac apps outside of the Mac App Store, taking advantage of the Developer ID programme. This will need different signing identities (Developer ID Application and, optionally, Developer ID Installer).

IMPORTANT Developer ID signing identities are precious, so if you decide to ship outside of the Mac App Store you must manage them carefully. See this post for more on that topic.

Do I need to request these capabilities on "Certificates, Identifiers & Profiles" page in my Developer account?

No. On iOS all entitlements must be authorised by a capability in your provisioning profile but that’s not true on macOS. On macOS you can use some entitlements without a profile, and that includes the sandbox entitlements you mentioned. Unfortunately the documentation is not clear about this (r. 69883803) but a good guideline is that none of the App Sandbox or hardened runtime entitlements require a profile.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

[1] This requires Xcode 11 or later.

Hi! thank you for detailed response. After I added "macOS App" version to my "iOS App" on "App Store", I successfully uploaded the build from XCode and now preparing it for review. Thank you for pointing on "Developer ID signing", I will learn more about it.

How to publish iOS app written in Flutter for macOS
 
 
Q