1

I have successfully built an app using Mac Catalyst. It runs on iPhone, iPad, and M1 Macs, and is available now in the App Store as "Designed for iPad". So far, so good. But it's not available for Intel-based Macs, and I haven't been able to build a version that will run on Intel.

Is this possible? [Edit: Comments below tell me that it is.] If so, how do I do it? And with regard to the App Store, if I do it can I update my existing app to include the Intel-capable version, or does that have to be a separate purchase?

I am using Xcode 13.2.1 on macOS 12.0.1 (Monterey) on an M1 MacBook. I also have an Intel-based MacBook I can use for testing and even building if necessary.

I've been through all the Apple and third-party doc I can find, but couldn't find anything useful. Grateful for any advice!

  • I don't have a relevant solution for you, since on my machine, building my catalyst app builds a universal binary for Intel/Apple Silicon just fine, but I'll add the data point that there are definitely Catalyst-on-Intel apps in the App Store -- mine is one of them. – jnpdx Jan 28 '22 at 22:07
  • There are two slightly different things here. Catalyst lets you build iOS apps to run on Mac; This is a specific build process that uses your iOS source code to make an app that is made available in the Mac App Store. Catalyst apps run on both intel and M1. With an M1 Mac you can run any iOS app that hasn't been specifically excluded from doing so be the developer. These are iOS apps from the iOS App Store. This is only available for M1 Macs. – Paulw11 Jan 28 '22 at 22:14
  • Thanks for this info. What you're telling me, then, is that my build is incorrectly configured. I've looked for "obvious" flags I could set, but all I find is the "Mac Catalyst" checkbox that I'm already using. The welter of fine-grained options in the full Build Settings panel is daunting and confusing. – Rick Holzgrafe Jan 28 '22 at 22:56
  • I can find nothing "Designed for iPad" in the App Store on my Intel Mac. But it is from 2014, and cannot install Monterey. I can't find anything that says so, but perhaps only Monterey supports Catalyst apps on Intel? – Rick Holzgrafe Jan 28 '22 at 23:45
  • Also, on our two Intel Macs (one of which is running Catalina), the App Store does not offer search results for "iPhone and iPad Apps" next to those for "Mac Apps". If it's possible to run Catalyst apps on Intel, why can't I find them on the app store on Intel Macs? – Rick Holzgrafe Jan 29 '22 at 22:36

2 Answers2

1

I did it this way, to get an almost "universal" macOS App, beside the macOS App Store, as Apple is a bit complicated on release a Mac-App.

  1. put iOS, iPad and iMac (from M1 Machines on) to App-Store
  2. copied Xcode project, and tailored a special Download macOS-Version for users having legacy machines, "Silicon + Intel" - so M1, IntelChips will do.
  3. Archive this DL-Version for macOS,
  4. In the next steps of process, do not go to App-Store, but let it "notarising" from Apple for smooth downloads (others are primarily blocked by macOS). Apple approves, that your app is Ok, and from a valid developer after loading it to customers machines.
  5. As soon as notarised, "export" button for dl your copy of unviversal app for macOS.enter image description here
0

There are two different ways you can get your iOS app onto Mac.

The first is using Catalyst. This lets you use your iOS code base to deliver a Mac app. This app can be distributed via the Mac App Store or directly to users. Your code base may require some changes to adapt to the expected user experience on a Mac and you may also need to work around facilities that are not available on macOS. Apple has a series of tutorials on turning your iOS app into a Catalyst app.

As Catalyst apps are Mac apps, they can run on both Intel and M1 Macs.

To deliver a Catalyst app you use the "Archive" function in Xcode twice. Once with "My Mac (Catalyst)" as the selected destination and once with "Any iOS device (ARM64)" as the selected destination.

In App Store you need to add both "iOS" and "Mac" versions to your app and the required meta data, screenshots etc. You then deliver both of your archives to App Store Connect and submit the apps for review. Once approved you will have your app on the iOS App Store and the Mac App Store. If you are delivering a Catalyst Mac app then you may want to opt your iOS app from being available on M1 Macs.

In addition to Catalyst, M1 Macs can run apps that are built for iOS as long as the developer hasn't opted-out in App Store Connect - This is a "Designed for iPad" app. You will not see any of these apps for an Intel Mac since they cannot run the ARM64 binary used by in a released iOS app.

Again, you can make changes to your codebase to support the Mac environment and you need to consider services that are not available on macOS. Unlike a Catalyst app you do not need to build a specific Mac version and you cannot distribute the app outside of the App Store.

Paulw11
  • 108,386
  • 14
  • 159
  • 186
  • Okay, I get this; and thanks for the response. But: I can build for "My Mac (Catalyst)", put a copy on my disk, and I get an app that says it's Universal. It runs on my M1. I move this to my Intel Mac (2014, Big Sur 11.6.3) via DropBox and again it shows up looking like a Universal app. But when I try to open it (using right-click and selecting Open to bypass the not-from-App-Store issue) I get told I "do not have permission" to run the app. Any idea what that's about? I have the usual r/w permission on the app as seen in its Get Info window. – Rick Holzgrafe Jan 29 '22 at 00:41
  • You can use lipo -archs on the executable to confirm that it contains x86 and Arm64 slices. How did you move the application? Did you use "Distribute App" from the organiser window? What options did you choose? – Paulw11 Jan 29 '22 at 03:13
  • I used "Distribute App" in the organizer, and chose the "Copy App" option to put it on my (M1) hard drive. Again, this app runs fine on my M1. Then (because I had hassles trying to move it in other ways) I uploaded the app to Dropbox, and then downloaded onto my Intel Mac, with the results described above. Since Dropbox might be dodgy for copying apps, I tried again with File Sharing, but had the same results again: "You do not have permission..." – Rick Holzgrafe Jan 29 '22 at 10:00
  • lipo -archs yielded "x86_64 arm64" as expected, and again, both my M1 and Intel Macs recognized the app as "(Application Universal)" in the Finder's Get Info window. – Rick Holzgrafe Jan 29 '22 at 10:02
  • I think the "Copy App" is probably where you are having a problem. It seems to be triggering gatekeeper. Try notarising the app with an apple signing certificate – Paulw11 Jan 29 '22 at 10:31
  • Coming at this from a different angle: On our two Intel Macs (one of which is running Catalina), the App Store does not offer search results for "iPhone and iPad Apps" next to those for "Mac Apps". If it's possible to run Catalyst apps on Intel, why can't I find them on the app store on Intel Macs? – Rick Holzgrafe Jan 30 '22 at 05:37
  • Because Catalyst apps are Mac apps. From an App Store perspective there is no difference between a Catalyst Mac app and a non-Catalyst Mac app. Catalyst provides a translation layer so that iOS frameworks like UIKit are available on macOS which lets you recompile iOS source code as a macOS app. Catalyst apps are X86/Arm64 code. M1 Macs can run ARM 64 iOS apps directly; Again there is a translation layer to provide the iOS frameworks but that is provided at run time, not compile time like it is with Catalyst – Paulw11 Jan 30 '22 at 05:57
  • In summary - You have to build a Catalyst app separately to your iOS app. With "Designed for iPad" there is no separate macOS app; just the iOS app. – Paulw11 Jan 30 '22 at 05:59
  • Thanks, Paulw11, but i don't think that's right. In an M1 Mac's App Store, Catalyst apps do _not_ get listed as Mac Apps. There's a separate search results tab for "iPhone and iPad Apps" and Catalyst apps, even those with accommodations for Macs, appear there and not in the "Mac Apps" tab. But in an Intel Mac's App Store, there's no tab for "iPhone and iPad", and I have never seen an iOS _or_ any Catalyst app (even those with accommodations for Macs) appear in the search results. – Rick Holzgrafe Jan 30 '22 at 19:53
  • No, Catalyst apps are Mac apps. You need to build a Catalyst app as a separate target in Xcode and you end up with a Mac app. iOS devices can't run Catalyst apps. Apps that appear in "iPhone and iPad apps" are iOS apps. They only run on M1 Macs, so you will not see that search tab on an Intel Mac. There is nothing that flags a Mac app as a Catalyst app or not in the store. The Stocks and Podcasts apps that Apple include with macOS are Catalyst apps; They took their existing iOS apps and recompiled them for Mac using the Catalyst framework. – Paulw11 Jan 30 '22 at 20:16
  • Remember, Catalyst was announced in 2019. Well before M1 Macs were announced, let alone released. [Here](https://www.macrumors.com/2019/10/24/mac-catalyst-apps/) is a list of catalyst apps. You will see that they are all in the "Mac apps" section if you search for them – Paulw11 Jan 30 '22 at 20:18
  • Okay, thanks again. What I've been trying to do is learn to create an app that, from one App Store entry, can be installed and run on iOS and both Intel and M1 apps. I think it's clear now that that can't be done. You can make (as I have done) a single app for iOS and M1 Mac, but you can't add Intel Mac to its capabilities. To run on both M1 and Intel, you must make a version that won't run on iOS, and create a separate App Store entry for it, meaning that customers must choose between the Mac-only Universal version, and the iOS version. I think this resolves my question. – Rick Holzgrafe Jan 30 '22 at 21:59
  • Yes, that is it exactly. You can't have an x86/Arm64 binary in the iOS App Store so you either need to go the Catalyst/iOS separate app route or have a single app which is M1 only – Paulw11 Jan 31 '22 at 02:56