Search results for

“A Summary of the WWDC25 Group Lab”

10,630 results found

Post

Replies

Boosts

Views

Activity

Trigger iOS App Intent from MacOS Spotlight Search
I remember this integration being demoed at WWDC25. Ability to trigger app intent for iOS application from Spotlight search on MacOS. How Do I extend my iOS Application to be able to do this? Where is the documentation for implementing this mechanism? Thank you in advance for your help. I believe this integration is a powerful productivity unlock!
1
0
201
Jan ’26
Reply to Persisted log entries disappeared?
Thanks to Quinn's hint, I was able to successfully log collect tonight's and yesterday's messages this morning using log show! I have also realised that log stats will also display ttl stats (and predicate has a documented timeToLive field): % log stats --archive /tmp/system_logs.logarchive --predicate 'subsystem==com.example.MyApp' ... ttl: [ 1day 3days 7days 14days 30days ] [ 0 0 0 2 51 ] ... Although sometimes the ttl summary is omitted, in particular (but not only) if all messages seem have the same ttl. The OSLogPreferences entry in my Info.plist now looks like this: OSLogPreferences com.example.MyApp DEFAULT-OPTIONS Level Enable Debug Persist Debug Enable-Private-Data TTL Default 21 Info 21 Debug 21 Error 21 Fault 21 Many thanks Quinn!
Topic: App & System Services SubTopic: Core OS Tags:
Jan ’26
Reply to iOS 26 Apple Wallet - Upgrade Boarding Pass with Live Activities
Hi @betul, @WaldiM, The beta spec displayed in the WWDC25 session is outdated. Please see the following documentation to adopt semantic boarding passes in Apple Wallet: Creating an airline boarding pass using semantic tags https://developer.apple.com/documentation/walletpasses/creating-an-airline-boarding-pass-using-semantic-tags Cheers, Paris X Pinkney |  WWDR | DTS Engineer
Topic: App & System Services SubTopic: Wallet Tags:
Jan ’26
NWConnectionGroup with Both Datagram and Non-datagram streams
I want to know the right way/API/usage to use NWConnectionGroup to send both datagram and non-datagram stream. I am currently working on an P2P video streaming app. I want to leverage NWConnectionGroup over QUIC to handle both message channel (traditionally handled by a TCP connection) and media channel (traditionally handled by sth. over UDP) to transmit SRT packets back and forth. I created a NWConnectionGroup and it worked fine on non-datagram parts. The problems are with datagram part. I tried extracting a connection with datagram = true either from the group or from message, doesn't and in some cases it breaks other non-datagram connections. I currently send datagram directly using the NWConnectionGroup.send(content:completion). It kinda works but I keep seeing it canceled a lot of messages, which breaks SRT shortly after start. The warnings belong flooded my console. (Seems like want me to create a connection to transmit datagram, how?) nw_connection_create_with_connection [C1600] Original conn
2
0
119
Jan ’26
TestFlight on Mac
I’m having an issue installing my TestFlight build on a Mac. The build (v1.0 build 1) uploads successfully and shows as “Complete” in App Store Connect. I can also open the build details page, and my Apple ID / tester access / group setup looks correct. However, on TestFlight (macOS), when I tap Install/Load, I get this error: Unable to install. The requested app isn’t available or can’t be found. Notes: The app is an iOS app (iPhone + iPad), and I enabled availability for Mac (Designed for iPad) in App Store Connect. The Mac is Apple Silicon, running macOS Tahoe 26.1. Could you help me understand why TestFlight shows this message on Mac, and what I should change in Xcode/App Store Connect to make the build compatible?
1
0
108
Jan ’26
Reply to Persisted log entries disappeared?
Each system log entry has time to live (TTL) value. You can see evidence for this in various places within the UI. For example: % sudo log stream … TTL … 0 fseventsd: (libsystem_info.dylib) Resolve user group list … … 7 WindowServer: (SkyLight) [com.apple.SkyLight:KeyboardEvent] kCGSEventKeyUp … AFAIK there’s no supported way to override that, but if you poke around in /System/Library/Preferences/Logging on your Mac it’s not hard to see how it works. WARNING As with all implementation details, there’s no guarantee that this will actually work, or that it hasn’t worked differently in the past, or will work differently in the future. So don’t build knowledge of this into a product that you ship to a wide range of users. Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = eskimo + 1 + @ + apple.com
Topic: App & System Services SubTopic: Core OS Tags:
Jan ’26
Unable to sync SwiftData model fully using CloudKit
Hey everyone I just ran into an issue where I couldn't sync the model below fully by using CloudKit, enum LinkMapV3_1: VersionedSchema { static let versionIdentifier: Schema.Version = .init(3, 1, 0) static var models: [any PersistentModel.Type] { [AnnotationData.self, GroupData.self, Item.self, Deployment.self, History.self] } // MARK: - Data @Model class AnnotationData { var name: String = var longitude: Double = 0.0 var latitude: Double = 0.0 var order: Int = -1 var level: Int = 1 var detail: String = @Relationship(deleteRule: .nullify, inverse: GroupData.annotation) var groups: [GroupData]? @Relationship(deleteRule: .nullify, inverse: AnnotationData.to) var from: AnnotationData? var to: AnnotationData? var history: History? } // MARK: - History @Model class History { var id: UUID = UUID() var timestamp: Date = Date() @Relationship(deleteRule: .nullify, inverse: AnnotationData.history) var annotations: [AnnotationData]? @Relationship(deleteRule: .nullify, inverse: GroupData.history) var groups
1
0
301
Jan ’26
Reply to UITabGroup child tabs ignoring viewControllerProvider in Sidebar
This is the default behavior for how UITabGroup works. To get enhanced view controller management through a UINavigationController stack, use the UITabGroup.managingNavigationController API. There's a little more description of how that works on the following answer in another post in the forum; or check out the WWDC25 - Make your UIKit app more flexible video.
Topic: UI Frameworks SubTopic: UIKit Tags:
Jan ’26
UITabGroup child tabs ignoring viewControllerProvider in Sidebar
Hi, I am implementing a sidebar navigation using UITabBarController with the new UITabGroup API on and above iPadOS 18. I’ve encountered an issue where selecting a child UITab within a group does not seem to trigger the child's own viewControllerProvider. Instead, the UITabBarController displays the ViewController associated with the parent UITabGroup. The Issue: In the snippet below, when I tap Item 2A or Item 2B in the iPad sidebar, the app displays the emptyVC (clear background) defined in the section2Group provider, rather than the teal or cyan ViewControllers defined in the individual child tabs. let item2A = UITab( title: Item 2A, image: UIImage(systemName: a.circle), identifier: tab.section2.item2a ) { _ in self.createViewController( title: Section 2 - Item 2A, color: .systemTeal, description: Part of Section 2A group ) } let item2B = UITab( title: Item 2B, image: UIImage(systemName: b.circle), identifier: tab.section2.item2b ) { _ in self.createViewController( title: Section 2 - Item
1
0
115
Jan ’26
Problem Saving a ASPasskeyCredentialIdentity
Hi I'm developing an app that autofills Passkeys. The app allows the user to authenticate to their IdP to obtain an access token. Using the token the app fetches from /attestation/options. The app will generate a Passkey credential using a home-grown module - the extension has no involvement, neither does ASAuthorizationSecurityKeyPublicKeyCredentialProvider. I can confirm the passkey does get created. Next the credential is posted to /attestation/results with the response JSON being parsed and used to create a ASPasskeyCredentialIdentity - a sample of the response JSON is attached. Here is my save function: static func save(authenticator: AuthenticatorInfo) async throws { guard let credentialID = Data(base64URLEncoded: authenticator.attributes.credentialId) else { throw AuthenticatorError.invalidEncoding(Credential ID is not a valid Base64URL string.) } guard let userHandle = authenticator.userId.data(using: .utf8) else { throw AuthenticatorError.invalidEncoding(User handle is not a valid UTF-8 string.) } le
1
0
428
Jan ’26
Reply to Provisioning profile missing entitlement
You are correct that the profile from step 3 has no entry for key-value storage. However, the profile from step 5 still uses the old team ID. One thing I realized while looking at this is that I'm still a member of the old team. That team's developer subscription is no longer active but I'm still a member. I almost left it when I realized but decided to only follow the steps you suggested. Step 3 (iCloud not enabled) Entitlements => { application-identifier => TEAM_ID.com.ORGANIZATION.APP aps-environment => production beta-reports-active => true com.apple.developer.team-identifier => TEAM_ID com.apple.security.application-groups => [ 0 => group.ORGANIZATION ] get-task-allow => false keychain-access-groups => [ 0 => TEAM_ID.* 1 => com.apple.token ] } Step 5 (iCloud re-enabled) Entitlements => { application-identifier => TEAM_ID.com.ORGANIZATION.APP aps-environment => production beta-reports-active => true com.apple.developer.icloud-container-develo
Jan ’26
Reply to Strange behavior for automounted directory.
How are you creating this directory: /System/Volumes/Data/mnt/ The issue here is that the contents that are visible at / are created by basically merging the contents of the ROSV (Read Only System Volume) and the data volume of its volume group. Within that context, I think there are two ways to create something like a common mnt directory: Bypass these issues by placing the directory inside one of the existing standard directories. For example, create /Library/mnt/. If you specifically want the directory to exist at /, then use the /etc/synthetic.conf config file to create a new directory or symbolic link (see man synthetic.conf) for details. ...but what I would NOT do is simply create a new directory at the root of the Data volume and use it through /System/Volumes/ like this: /System/Volumes/Data/mnt/ The BEST case here is that you only get weird UI issues, since mnt won't be visible at / but will be visible in the path above (which is not a standard path). The worst case is that: I am working on
Topic: App & System Services SubTopic: Core OS Tags:
Jan ’26
Reply to HELP WITH SUBSCRIPTIONS
If you are using SubscriptionStoreView with groupID overload, make sure the groupID entered is matching with the one in App Store Connect, not the one from your Xcode StoreKit configuration file. In Xcode testing, you need a StoreKit config file, and make sure to select Edit Scheme -> Options tab and select StoreKit Configuration to the correct configuration file. But this does not affect your App Store version. You might need to handle unfinished transactions. Take a look at sample code from WWDC25 on StoreKit 2.
Topic: App & System Services SubTopic: StoreKit Tags:
Jan ’26
Reply to How can I configure the application or environment to suppress this repeated permission prompt?"
Paris and I chatted about your issue and we realised that it has a bit more subtlety than we first thought. First up, it’s not clear whether the app that hits this issue is one of your apps, or whether you’re hitting it an app created by a different third-party developer. We can help you in the first case, but in the second case you should talk to that app’s developer. Assuming that you are the one creating this app, the alert you’re seeing is the result of a feature known as app group container protection. There’s a link to the WWDC video that introduced this feature in Trusted Execution Resources. I also have a bunch of info about app groups in general in my App Groups: macOS vs iOS: Working Towards Harmony post. As explained in that last post, you don’t see this alert if all the apps accessing the app group are from the same team. However, there’s no way to avoid it if you’re trying to access an app group associated with some other team. The example you posted s
Jan ’26
Reply to Provisioning profile failed qualification. Profile doesn't support App Groups.
[quote='872694022, Kopyl, /thread/775029?answerId=872694022#872694022, /profile/Kopyl'] my app has nothing to do with iOS and their app groups. [/quote] OK. But my post, App Groups: macOS vs iOS: Working Towards Harmony, is still relevant regardless. The good news is that the situation has both stabilised and improved since you started this thread, and thus I don’t see any impediments to you solving this nicely. To offer specific advice I need to know more about your specific setup. What is your Team ID? What is the Apple ID of your app? And what app group ID are you trying to use? If you’re not comfortable sharing this info publicly, feel free to redact it. For example, for Apple Configurator that info would be: Team ID 4WXS7A4F54 -> 4________4 Apple ID 1037126344 -> 1________4 App group ID K36BKF7T3D.group.com.apple.configurator -> K________D.g___p.c__.a___e.c__________r IMPORTANT I’m looking for the Apple ID of the app, not your Apple ID (now known as an Apple A
Jan ’26
Trigger iOS App Intent from MacOS Spotlight Search
I remember this integration being demoed at WWDC25. Ability to trigger app intent for iOS application from Spotlight search on MacOS. How Do I extend my iOS Application to be able to do this? Where is the documentation for implementing this mechanism? Thank you in advance for your help. I believe this integration is a powerful productivity unlock!
Replies
1
Boosts
0
Views
201
Activity
Jan ’26
Reply to Persisted log entries disappeared?
Thanks to Quinn's hint, I was able to successfully log collect tonight's and yesterday's messages this morning using log show! I have also realised that log stats will also display ttl stats (and predicate has a documented timeToLive field): % log stats --archive /tmp/system_logs.logarchive --predicate 'subsystem==com.example.MyApp' ... ttl: [ 1day 3days 7days 14days 30days ] [ 0 0 0 2 51 ] ... Although sometimes the ttl summary is omitted, in particular (but not only) if all messages seem have the same ttl. The OSLogPreferences entry in my Info.plist now looks like this: OSLogPreferences com.example.MyApp DEFAULT-OPTIONS Level Enable Debug Persist Debug Enable-Private-Data TTL Default 21 Info 21 Debug 21 Error 21 Fault 21 Many thanks Quinn!
Topic: App & System Services SubTopic: Core OS Tags:
Replies
Boosts
Views
Activity
Jan ’26
Reply to iOS 26 Apple Wallet - Upgrade Boarding Pass with Live Activities
Hi @betul, @WaldiM, The beta spec displayed in the WWDC25 session is outdated. Please see the following documentation to adopt semantic boarding passes in Apple Wallet: Creating an airline boarding pass using semantic tags https://developer.apple.com/documentation/walletpasses/creating-an-airline-boarding-pass-using-semantic-tags Cheers, Paris X Pinkney |  WWDR | DTS Engineer
Topic: App & System Services SubTopic: Wallet Tags:
Replies
Boosts
Views
Activity
Jan ’26
NWConnectionGroup with Both Datagram and Non-datagram streams
I want to know the right way/API/usage to use NWConnectionGroup to send both datagram and non-datagram stream. I am currently working on an P2P video streaming app. I want to leverage NWConnectionGroup over QUIC to handle both message channel (traditionally handled by a TCP connection) and media channel (traditionally handled by sth. over UDP) to transmit SRT packets back and forth. I created a NWConnectionGroup and it worked fine on non-datagram parts. The problems are with datagram part. I tried extracting a connection with datagram = true either from the group or from message, doesn't and in some cases it breaks other non-datagram connections. I currently send datagram directly using the NWConnectionGroup.send(content:completion). It kinda works but I keep seeing it canceled a lot of messages, which breaks SRT shortly after start. The warnings belong flooded my console. (Seems like want me to create a connection to transmit datagram, how?) nw_connection_create_with_connection [C1600] Original conn
Replies
2
Boosts
0
Views
119
Activity
Jan ’26
TestFlight on Mac
I’m having an issue installing my TestFlight build on a Mac. The build (v1.0 build 1) uploads successfully and shows as “Complete” in App Store Connect. I can also open the build details page, and my Apple ID / tester access / group setup looks correct. However, on TestFlight (macOS), when I tap Install/Load, I get this error: Unable to install. The requested app isn’t available or can’t be found. Notes: The app is an iOS app (iPhone + iPad), and I enabled availability for Mac (Designed for iPad) in App Store Connect. The Mac is Apple Silicon, running macOS Tahoe 26.1. Could you help me understand why TestFlight shows this message on Mac, and what I should change in Xcode/App Store Connect to make the build compatible?
Replies
1
Boosts
0
Views
108
Activity
Jan ’26
Reply to Persisted log entries disappeared?
Each system log entry has time to live (TTL) value. You can see evidence for this in various places within the UI. For example: % sudo log stream … TTL … 0 fseventsd: (libsystem_info.dylib) Resolve user group list … … 7 WindowServer: (SkyLight) [com.apple.SkyLight:KeyboardEvent] kCGSEventKeyUp … AFAIK there’s no supported way to override that, but if you poke around in /System/Library/Preferences/Logging on your Mac it’s not hard to see how it works. WARNING As with all implementation details, there’s no guarantee that this will actually work, or that it hasn’t worked differently in the past, or will work differently in the future. So don’t build knowledge of this into a product that you ship to a wide range of users. Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = eskimo + 1 + @ + apple.com
Topic: App & System Services SubTopic: Core OS Tags:
Replies
Boosts
Views
Activity
Jan ’26
Unable to sync SwiftData model fully using CloudKit
Hey everyone I just ran into an issue where I couldn't sync the model below fully by using CloudKit, enum LinkMapV3_1: VersionedSchema { static let versionIdentifier: Schema.Version = .init(3, 1, 0) static var models: [any PersistentModel.Type] { [AnnotationData.self, GroupData.self, Item.self, Deployment.self, History.self] } // MARK: - Data @Model class AnnotationData { var name: String = var longitude: Double = 0.0 var latitude: Double = 0.0 var order: Int = -1 var level: Int = 1 var detail: String = @Relationship(deleteRule: .nullify, inverse: GroupData.annotation) var groups: [GroupData]? @Relationship(deleteRule: .nullify, inverse: AnnotationData.to) var from: AnnotationData? var to: AnnotationData? var history: History? } // MARK: - History @Model class History { var id: UUID = UUID() var timestamp: Date = Date() @Relationship(deleteRule: .nullify, inverse: AnnotationData.history) var annotations: [AnnotationData]? @Relationship(deleteRule: .nullify, inverse: GroupData.history) var groups
Replies
1
Boosts
0
Views
301
Activity
Jan ’26
Reply to UITabGroup child tabs ignoring viewControllerProvider in Sidebar
This is the default behavior for how UITabGroup works. To get enhanced view controller management through a UINavigationController stack, use the UITabGroup.managingNavigationController API. There's a little more description of how that works on the following answer in another post in the forum; or check out the WWDC25 - Make your UIKit app more flexible video.
Topic: UI Frameworks SubTopic: UIKit Tags:
Replies
Boosts
Views
Activity
Jan ’26
UITabGroup child tabs ignoring viewControllerProvider in Sidebar
Hi, I am implementing a sidebar navigation using UITabBarController with the new UITabGroup API on and above iPadOS 18. I’ve encountered an issue where selecting a child UITab within a group does not seem to trigger the child's own viewControllerProvider. Instead, the UITabBarController displays the ViewController associated with the parent UITabGroup. The Issue: In the snippet below, when I tap Item 2A or Item 2B in the iPad sidebar, the app displays the emptyVC (clear background) defined in the section2Group provider, rather than the teal or cyan ViewControllers defined in the individual child tabs. let item2A = UITab( title: Item 2A, image: UIImage(systemName: a.circle), identifier: tab.section2.item2a ) { _ in self.createViewController( title: Section 2 - Item 2A, color: .systemTeal, description: Part of Section 2A group ) } let item2B = UITab( title: Item 2B, image: UIImage(systemName: b.circle), identifier: tab.section2.item2b ) { _ in self.createViewController( title: Section 2 - Item
Replies
1
Boosts
0
Views
115
Activity
Jan ’26
Problem Saving a ASPasskeyCredentialIdentity
Hi I'm developing an app that autofills Passkeys. The app allows the user to authenticate to their IdP to obtain an access token. Using the token the app fetches from /attestation/options. The app will generate a Passkey credential using a home-grown module - the extension has no involvement, neither does ASAuthorizationSecurityKeyPublicKeyCredentialProvider. I can confirm the passkey does get created. Next the credential is posted to /attestation/results with the response JSON being parsed and used to create a ASPasskeyCredentialIdentity - a sample of the response JSON is attached. Here is my save function: static func save(authenticator: AuthenticatorInfo) async throws { guard let credentialID = Data(base64URLEncoded: authenticator.attributes.credentialId) else { throw AuthenticatorError.invalidEncoding(Credential ID is not a valid Base64URL string.) } guard let userHandle = authenticator.userId.data(using: .utf8) else { throw AuthenticatorError.invalidEncoding(User handle is not a valid UTF-8 string.) } le
Replies
1
Boosts
0
Views
428
Activity
Jan ’26
Reply to Provisioning profile missing entitlement
You are correct that the profile from step 3 has no entry for key-value storage. However, the profile from step 5 still uses the old team ID. One thing I realized while looking at this is that I'm still a member of the old team. That team's developer subscription is no longer active but I'm still a member. I almost left it when I realized but decided to only follow the steps you suggested. Step 3 (iCloud not enabled) Entitlements => { application-identifier => TEAM_ID.com.ORGANIZATION.APP aps-environment => production beta-reports-active => true com.apple.developer.team-identifier => TEAM_ID com.apple.security.application-groups => [ 0 => group.ORGANIZATION ] get-task-allow => false keychain-access-groups => [ 0 => TEAM_ID.* 1 => com.apple.token ] } Step 5 (iCloud re-enabled) Entitlements => { application-identifier => TEAM_ID.com.ORGANIZATION.APP aps-environment => production beta-reports-active => true com.apple.developer.icloud-container-develo
Replies
Boosts
Views
Activity
Jan ’26
Reply to Strange behavior for automounted directory.
How are you creating this directory: /System/Volumes/Data/mnt/ The issue here is that the contents that are visible at / are created by basically merging the contents of the ROSV (Read Only System Volume) and the data volume of its volume group. Within that context, I think there are two ways to create something like a common mnt directory: Bypass these issues by placing the directory inside one of the existing standard directories. For example, create /Library/mnt/. If you specifically want the directory to exist at /, then use the /etc/synthetic.conf config file to create a new directory or symbolic link (see man synthetic.conf) for details. ...but what I would NOT do is simply create a new directory at the root of the Data volume and use it through /System/Volumes/ like this: /System/Volumes/Data/mnt/ The BEST case here is that you only get weird UI issues, since mnt won't be visible at / but will be visible in the path above (which is not a standard path). The worst case is that: I am working on
Topic: App & System Services SubTopic: Core OS Tags:
Replies
Boosts
Views
Activity
Jan ’26
Reply to HELP WITH SUBSCRIPTIONS
If you are using SubscriptionStoreView with groupID overload, make sure the groupID entered is matching with the one in App Store Connect, not the one from your Xcode StoreKit configuration file. In Xcode testing, you need a StoreKit config file, and make sure to select Edit Scheme -> Options tab and select StoreKit Configuration to the correct configuration file. But this does not affect your App Store version. You might need to handle unfinished transactions. Take a look at sample code from WWDC25 on StoreKit 2.
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
Jan ’26
Reply to How can I configure the application or environment to suppress this repeated permission prompt?"
Paris and I chatted about your issue and we realised that it has a bit more subtlety than we first thought. First up, it’s not clear whether the app that hits this issue is one of your apps, or whether you’re hitting it an app created by a different third-party developer. We can help you in the first case, but in the second case you should talk to that app’s developer. Assuming that you are the one creating this app, the alert you’re seeing is the result of a feature known as app group container protection. There’s a link to the WWDC video that introduced this feature in Trusted Execution Resources. I also have a bunch of info about app groups in general in my App Groups: macOS vs iOS: Working Towards Harmony post. As explained in that last post, you don’t see this alert if all the apps accessing the app group are from the same team. However, there’s no way to avoid it if you’re trying to access an app group associated with some other team. The example you posted s
Replies
Boosts
Views
Activity
Jan ’26
Reply to Provisioning profile failed qualification. Profile doesn't support App Groups.
[quote='872694022, Kopyl, /thread/775029?answerId=872694022#872694022, /profile/Kopyl'] my app has nothing to do with iOS and their app groups. [/quote] OK. But my post, App Groups: macOS vs iOS: Working Towards Harmony, is still relevant regardless. The good news is that the situation has both stabilised and improved since you started this thread, and thus I don’t see any impediments to you solving this nicely. To offer specific advice I need to know more about your specific setup. What is your Team ID? What is the Apple ID of your app? And what app group ID are you trying to use? If you’re not comfortable sharing this info publicly, feel free to redact it. For example, for Apple Configurator that info would be: Team ID 4WXS7A4F54 -> 4________4 Apple ID 1037126344 -> 1________4 App group ID K36BKF7T3D.group.com.apple.configurator -> K________D.g___p.c__.a___e.c__________r IMPORTANT I’m looking for the Apple ID of the app, not your Apple ID (now known as an Apple A
Replies
Boosts
Views
Activity
Jan ’26