Build or run Mac Catalyst apps on Intel Mac? - ios

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!

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.

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.
put iOS, iPad and iMac (from M1 Machines on) to App-Store
copied Xcode project, and tailored a special Download macOS-Version for users having legacy machines, "Silicon + Intel" - so M1, IntelChips will do.
Archive this DL-Version for macOS,
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.
As soon as notarised, "export" button for dl your copy of unviversal app for macOS.

Related

Restrict download to Macbook / MacOS of published mobile iOS App

We recently had released the app on App Store for iPhone and iPad but once the app got published we do see the Mac OS support and we are even able to download the app in our MacbooxandiMac`.
Is there a way to restrict this or apple does do this automatically as we haven't configured anything for Mac OS?
The whole point of M1 Macs is that they run iPad apps natively. OK, maybe not the whole point, but it's a major part of the meaning of an M1 Mac: its processor is an iPad processor so its apps can be iPad apps.
If you don't want your iPad app to be downloaded to an M1 Mac, you need to opt out. You can do that on the Pricing and Availability page of your app's entry on App Store Connect:
Note the checkbox. It is checked by default. Unchecking it is up to you. You didn't uncheck it, so your app was downloaded to some M1 Macs.

Does Apple Catalyst support iPhone

There are many resources and tutorials mentioning iPad and/or iOS being compatible with Apple's Catalyst framework,
So, the same source-code runs on Mac OS X as well.
But does Catalyst support iPhone?
(Please tell me your personal experience to clarify this, and not that the name of iPhone operating-system is iOS)
Mac Catalyst allows iOS apps to be built for and run on macOS.
So, by definition, Catalyst apps support iOS, and usually the iPhone. The only case in which they wouldn't is if the app was specifically an iPad-only app that runs on Catalyst on the Mac, but was not enabled to run on the iPhone.
More about Catalyst: https://developer.apple.com/mac-catalyst/
You asked for personal experience: I have apps in the App Store for iOS, iPad, and Mac, via both Catalyst and non-Catalyst builds.

Is it possible to publish Mac Catalyst app as seperate, macOS only version?

When enabling macOS support in my iOS project it runs fine on my Mac. However, I am not sure how this version will be published.
Is it possible to maintain different targets which can be submitted as different apps? One target to the iOS App Store (without macOS support) and one target to the macOS App Store (without iOS support)?
Details:
An iPhone + iPad version of my app has been in the iOS App Store (bundle ID my.company.MyApp) for many years. So has a native macOS version in the Mac App Store (bundle ID my.company.MyAppMac).
Although the iOS and macOS versions doe share a lot of code, it has always quite a lot of work to maintain these two version. Working on a shared project where "only" the UI has to adopted to work well on macOS would be great.
However, I would like to use the Catalyst version to replace the existing, native macOS app. Not as universal new iOS+macOS App. Is this possible?
I'm doing this with a few of my apps.
However, with the most recent one, Apple wouldn't let me give the Mac app and the iOS app the same name. I'm not sure if that was their way of trying to force me to release a universal app, or if it was a temporary App Store Connect issue. The apps I previously released with matching names are still available and I haven't released a new app since then.

My iPhone apps cannot be made available on Apple Silicon Mac

In App Store Connect > Pricing and Availability, there is a new checkbox for managing availability on Mac for iOS apps.
I can check the checkbox named "Make this app available on Mac".
But under it, the following message is shown.
Version x.x.x cannot be made available on Mac
(x.x.x is the latest version of the app)
Can I make the app available on Mac or can't it be made available on Mac?
Which is correct, the made-available checkbox or the message?
Apple says "Compatibility with macOS is determined by Apple" in https://developer.apple.com/support/ios-ipados-mac
So, if the app is not compatible, the checkbox should not be shown?
My apps are normal iPhone apps which do not use any special features, devices, or third-party libraries except in-app purchase.
Does anyone know the conditions for iOS apps to be available on Mac?
What message is displayed on your Pricing and Availability's Mac Availability section?
Does anyone know the conditions for iOS apps to be available on Mac?
Not all frameworks are available on both platforms. In order to work on the Mac, you'll have to make sure that your app doesn't use any frameworks that aren't available on that platform.
So, if the app is not compatible, the checkbox should not be shown?
I'd interpret that checkbox as indicating whether you want the app to be available for Mac. There are reasons beyond compatibility that you might want to prevent the app from being installed on a Mac. For example, you might already have a macOS version of the app that you want people to use instead. Apple might be able to determine whether your app can run on macOS, but you still get to decide whether it should run on macOS.
Considering your question, it sounds like you think the app should, but Apple has determined that it cannot in its current state. You'll need to dig into the project and figure out what framework might be preventing that.
I've found that all my iPhone-only apps can not be available on Mac (the "Version x.x.x cannot be made available on Mac" message is shown on the Pricing and Availability settings in App Store Connect), but iPhone-and-iPad apps can be available on Mac (the message is not shown).
I guess iPad-only apps probably can be available on Mac, too, but I'm not sure about that because I don't have iPad-only apps.
It seems that Xcode versions with which apps are compiled are not relevant with Mac compatibility, because my iPhone-and-iPad apps which can be available on Mac are compiled many years ago.
Though all my iPhone-only apps can not be available on Mac, I don't know all iPhone-only apps can not be available on Mac, because Apple says "all compatible iPhone apps and iPad apps on the App Store will be available on the Mac App Store on Apple Silicon Macs" in https://developer.apple.com/support/ios-ipados-mac .
At this time, Big Sur is not released yet, so, it is still possible that the "Version x.x.x cannot be made available on Mac" message for iPhone-only apps might be a bug.
In case this is just a bug, I've unchecked the checkboxes of Mac availability.
UPDATE Sep 25, 2020:
I did nothing but the message "Version x.x.x cannot be made available on Mac" has disappeared. So, I turned the availability on again.

All newly created iOS apps will be made available on Mac : mine is not working

In AppStore Connect, a new frame appeared a few days ago:
All newly created and existing compatible iOS apps will be made available on Mac. Your compatible apps will be published on the Mac App Store unless you edit their availability.
So I though I would need to publish a newer version of my app to make it available in macOS, but it's not working.
How can I make my app available on iOS ans Mac ?
In June 2020, this message in App Store Connect said that iOS apps would be made available on Apple Silicon Macs.
Later, this message was modified to drop the qualifier about Apple Silicon Macs.
At a glance, this would seem to indicate that Apple has decided to allow iOS apps to run in an emulated ARM environment on x86 Macs, but I do not believe this is the case. Developer Relations probably just decided to drop that qualifier because they want more developers to support running on the Apple Silicon Macs.

Resources