Prior to Sequoia, Mac Catalyst Apps worked fine when using group folders that started with group
. They now get an alert that the Mac Catalyst app is trying to access data from other applications. This may also impact some SwiftUI developers.
According to this the documentation for the App Group Entitlements entitlement, on macOS we should begin use the Team Identifier instead of group
.
Should Mac Catalyst follow the macOS or iOS rules for com.apple.security.application-groups
? If they should need to follow the macOS rules now, that creates several issues for developers. We would now need separate build targets to pick up the different Entitlements files. More distressing is that we would need to do some kind of migration process to get our files to the new location. There wouldn't be a transparent way to do so where the user wasn't warned about the application accessing files that don't belong to it.
Any clarification on what Mac Catalyst developers should be doing to prepare for Sequoia would be greatly appreciated.
Yes! It makes me very happy to say that there’s been a significant improvement in this space. It’s now possible to create a macOS provisioning profile that authorises the use of an iOS-style app group. I’ve made a quick update to App Groups: macOS vs iOS: Fight! just now, but at some point I’ll go back to that post and update it properly with all the details.
I tested this today with Xcode 15.4b1 running on macOS 15.3.1. Here’s a regular macOS app [1], created from the macOS > App template, using automatic signing, signed for development with an iOS style app group:
% codesign -d -vvv Test721701.app
…
Authority=Apple Development: Quinn Quinn (7XFU7D52S4)
…
% codesign -d --ent - Test721701.app
…
[Dict]
…
[Key] com.apple.security.application-groups
[Value]
[Array]
[String] group.eskimo1.test
…
% security cms -D -i Test721701.app/Contents/embedded.provisionprofile | plutil -p -
{
…
"Entitlements" => {
…
"com.apple.security.application-groups" => [
0 => "group.eskimo1.test"
]
…
}
…
}
And here’s the same app exported for Developer ID distribution:
% codesign -d -vvv Test721701.app
…
Authority=Developer ID Application: Quinn Quinn (SKMME9E2Y8)
…
% codesign -d --ent - Test721701.app
Executable=/Users/quinn/Desktop/Test721701 2025-02-24 15-44-32/Test721701.app/Contents/MacOS/Test721701
[Dict]
…
[Value]
[Bool] true
[Key] com.apple.security.application-groups
…
% security cms -D -i Test721701.app/Contents/embedded.provisionprofile | plutil -p -
{
…
"Entitlements" => {
…
"com.apple.security.application-groups" => [
0 => "group.eskimo1.test"
]
…
}
…
}
Both apps launch and run as you’d expect.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"
[1] So, not Mac Catalyst.