Search results for

A Summary of the WWDC25 Group Lab

10,092 results found

Post

Replies

Boosts

Views

Activity

Adaptive automatic corner radius in containers with insets/paddings
With the correct corner radius changing in iOS 26, I wondered if there is a way to get properly rounded corners inside containers like sheets without hard-coding a constant value. Here's the results of some experiments I did, example code below. The new in Beta 4 ConcentricRectangle seems nice. Notable here is that it doesn't pick up the larger corner radii from the device corners: If you want all the corners rounded, the isUniform parameter of ConcentricRectangle seems helpful. It doesn't apply the corners in a View in the middle though, not sure if this is an oversight or if this has some purpose: ContainerRelativeShape looks ... interesting ... as of Beta 4, with the larger bottom corners rounded according to the device corners, but the actual bottom corners not fitting the device corners. With ContainerRelativeShape one can also get the middle part to have proper rounded corners in this example ... if you set the outer .containerShape(RoundedRectangle(cornerRadius: 36)) yourself. Notable here is that it t
Topic: UI Frameworks SubTopic: SwiftUI
3
0
539
Sep ’25
Reply to Bones/joints data issue - USD file export from Blender to RCP
Yes, AnimationLibraryComponent works fine in RCP but I need to import the same file multiple times in RCP to get all the animations (exporting them from Blender). I then need to manually add all the animations to the first file so I can build the library. Would be cool if the USD file could read the animation strips (NLA) and combining all animations in separate slots for RCP. The BOT-anist is the best example so far for this issue, thanks for guiding me to the pin system. I'm trying quite a lot but no success so far. Hopefully, I will make it work. In WWDC25 What's new in RealityKit, the presenter says the following: There is also a new entity attach method that allows you to attach one entity to the pin of another entity. This API greatly simplifies attaching meshes to the joints of an animated skeleton. Hope this will be in VisionOS 26.
Sep ’25
ShieldConfigurationExtension & SwiftData
Hi, I am developing a Screen Time App and I am having issues with the ShieldConfigurationExtension (ShieldConfigurationDataSource). I know this extensions is sandboxed but I should be able to read data from the main app. I am using SwiftData as my database, but I am unable to initialize it in the extensions with an error indicating insufficient file permissions. I have App Group set up and I am able to share data using UserDefaults but that is just inconvenient. Is there any way I could just open the SwiftData in read only mode so that I could display the user some info on the shield? SwiftData Init: private func setupContainer() throws { let schema = Schema([ DogEntity.self, HouseEntity.self ]) // Use app group container if available let config: ModelConfiguration if let containerURL = FileManager.default.containerURL( forSecurityApplicationGroupIdentifier: group.(Bundle.app.bundleIdentifier ?? ) ) { config = ModelConfiguration(schema: schema, url: containerURL.appendingPathCompone
1
0
127
May ’25
Reply to Seeking clarification on macOS URLs with security scope
It sounds like a large number of directories have been blocked - i.e. all of them. Or are these blocked target file prefixes rather than directories? Looking at my previous post, our editor mangled things a bit. Phrasing things a bit more plainly, document-scoped bookmarks can't track files in /Library (either the system or user level), /private/, or .ssh. None of those are directories I'd expect the user to be saving their data in. I could see /Library being a potential problem, however, that doesn't seem to have been much of an issue in practice since this is the first time I've ever noticed the limitation (and that was simply from looking at code). That's better than the error message it throws now. But I'm a bit confused about your object/target nomenclature. Sorry about that, I flipped my terminology mid-post. Restating things: target” -> the file you’re actually creating a bookmark to. anchor” -> the file you're attaching the document scope onto. So your anchor can be wherever you want, but the ta
Topic: App & System Services SubTopic: Core OS Tags:
Sep ’25
Reply to How is BGContinuedProcessingTask intended to be used?
I took what you said in the first response and built a simple generic queue which integrates with BGContinuedProcessingTask. I'm attaching the code in case it helps others and because it illustrates some of my lingering questions/suggestions/difficulties. In terms of the code flow/logic issues, please get your thoughts into a bug and post the bug number back here. The team is certainly interested in this kind of feedback and wants to capture it, but most API changes are going to be tied to a major release, not a software update. So, the quick summary here is that: This displays some more serious issues: The system UI often shows the indeterminate progress view... The system is very aggressive about killing background jobs... ...are quite concerning and not what the team expects. I will say that Safari can be a tricky case here as it's very easy for it to be creating much heavier load than it might seem, both because individual page load is highly variable and because it's SO easy to accumulate very h
Sep ’25
Reply to Universal Link
Here's a summary of what was going on and how I fixed the issue (Logs are clean now!). The issue was not with the Universal Link configuration itself (the AASA file and Associated Domains were correct), but with a race condition in the SwiftUI app's lifecycle. The Problem: A Timing Issue When the Universal Link is tapped, iOS launches the app and immediately passes the URL via the .onContinueUserActivity modifier. In my original code, this modifier was on the root view in Strike_ForceApp.swift. It would parse the link and post a Notification for the UI to handle. However, at this early stage of the app launch, the destination view (FriendsAndChallengesView) that was supposed to be listening for this notification had not been initialized yet, especially if the user needed to go through a loading or login screen first. As a result, the notification was being posted before any part of the UI was ready to listen for it. The link would open the app, but the message to navigate or show an alert was lost. T
Topic: Code Signing SubTopic: Entitlements Tags:
Sep ’25
Keychain Sharing not working after Updating the Team ID
We are facing an issue with Keychain sharing across our apps after our Team ID was updated. Below are the steps we have already tried and the current observations: Steps we have performed so far: After our Team ID changed, we opened and re-saved all the provisioning profiles. We created a Keychain Access Group: xxxx.net.soti.mobicontrol (net.soti.mobicontrol is one bundle id of one of the app) and added it to the entitlements of all related apps. We are saving and reading certificates using this access group only. Below is a sample code snippet we are using for the query: [genericPasswordQuery setObject:(id)kSecClassGenericPassword forKey:(id)kSecClass]; [genericPasswordQuery setObject:identifier forKey:(id)kSecAttrGeneric]; [genericPasswordQuery setObject:accessGroup forKey:(id)kSecAttrAccessGroup]; [genericPasswordQuery setObject:(id)kSecMatchLimitOne forKey:(id)kSecMatchLimit]; [genericPasswordQuery setObject:(id)kCFBooleanTrue forKey:(id)kSecReturnAttributes]; Issues we are facing: Keych
4
0
392
Sep ’25
Reply to Seeking clarification on macOS URLs with security scope
You do have to add com.apple.security.files.bookmarks.document-scope to your entitlement file yourself, Already done. The object you're using as the bookmark anchor needs to be a file, not a directory, and must be a file you already have full read/write access to. Already done. The object you're targeting needs to be a file as well. That's an important plot point. My current app looks at folders exclusively. So that's all I tested. Document scoped bookmarks are designed to be used to track groups of user files (for example, like an Xcode project), so a small number of directories have been blocked. It sounds like a large number of directories have been blocked - i.e. all of them. Or are these blocked target file prefixes rather than directories? Ah well, such is life. I'm working an an iOS/macOS GUI version of a command-line GIS tool. I had wanted to allow the user to specify a directory to be used as a library. Power users could then use my sandboxed and Metal-powered version of the command line app
Topic: App & System Services SubTopic: Core OS Tags:
Sep ’25
Reply to Seeking clarification on macOS URLs with security scope
Yes. Because of that issue, my original design had a fairly convoluted idea for getting those bookmarks to the helper. But in this limited use case, it turned out that none of that (including bookmarks themselves) was necessary. But since you mentioned document-scoped bookmarks, I should reiterate that I tried those too. They're completely non-functional for any URL. I'm not sure what you were testing, but they absolutely do work. The main things to be aware of here are: You do have to add com.apple.security.files.bookmarks.document-scope to your entitlement file yourself, instead of adding it as a capability (r.159787652). The object you're using as the bookmark anchor needs to be a file, not a directory, and must be a file you already have full read/write access to. The object you're targeting needs to be a file as well. Document scoped bookmarks are designed to be used to track groups of user files (for example, like an Xcode project), so a small number of directories have been blocked. For exampl
Topic: App & System Services SubTopic: Core OS Tags:
Sep ’25
Reply to Sandbox Test Error
Hello - at this phase of your testing and finalization of app submission for App Store Review, you probably want to focus on TestFlight testing as documented here: https://developer.apple.com/help/app-store-connect/test-a-beta-version/testflight-overview. Be sure your testers are setup as Users in App Store Connect (the People tab under Users and Access, as separate from Sandbox) and then add them for access to your TestFlight build as part of an Internal Testing group under Apps > TestFlight in App Store Connect. Added users should get an email notification to access the build through the TestFlight app. Once you are using the app through TestFlight, then you can do further Sandbox testing as documented here: https://developer.apple.com/help/app-store-connect/test-a-beta-version/testing-subscriptions-and-in-app-purchases-in-testflight. If you are still having issues, please reply again to this thread with more details, step-by-step actions, etc. If possible, please capture a screen recording to s
Sep ’25
Reply to Network Extension App for MacOS with 3 Extensions
[quote='856490022, MasterYourSelf, /thread/798872?answerId=856490022#856490022, /profile/MasterYourSelf'] I am thinking of the following kind of project/folder structure [/quote] The Xcode structure isn’t all that important. What matters is the on-disk structure. And in the second approach the on-disk structure is exactly what you get if you create an app from the macOS > App template and then add a macOS > System Extension > Network Extension target to it, that is: Test798872.app/ Contents/ Library/ SystemExtensions/ com.example.apple-samplecode.Test798872.MyNESysex.systemextension/ … standard sysex stuff … … standard app stuff … From the on-disk structure, the only indication that your sysex hosts multiple providers is: The com.apple.developer.networking.networkextension entitlement, on both the app and the sysex, must list each provider type. The contents of the NEProviderClasses property in the sysex’s Info.plist must list the classes for each provider type. [quote='856490022, MasterYourSelf, /th
Sep ’25
Reply to Network Extension App for MacOS with 3 Extensions
Hi @DTS Engineer, Thank you for clarifying. I confirm that I am referring to Network Extensions within the context of System Extensions. Regarding the first approach I mentioned earlier, I am using separate NEMachServiceNames in the Info.plist files for two different extensions, while using the same App Groups name for all extensions in their respective targets. For the Second approach you suggested, I understand that in the configuration, we can place multiple extensions under the NEProviderClasses dictionary in the extension's entitlement file, and maintain a single NEMachServiceName in the Info.plist file of the Extension's target (Xcode Target2). Given that I am new to this framework, I would greatly appreciate it if you could provide more detailed guidance on how to: Utilize multiple NE Providers with a single system extension. Activate these providers one after another. Handle IPC (Inter-Process Communication) connections between the Main App and the single System Extension(apart from Info.plis
Sep ’25
Reply to iPadOS: remove system actions from Menu Bar
if you're building your app with SwiftUI, you're looking for CommandGroup(replacing: .windowList) { } if you remove too many (for example, if the windowList command group contains Close Window), then you'll need to put it back in manually, using CommandMenu. But if you don't have a New Window command, why would you keep Close Window around? What happens when you close the last (or only) window? If you elect to quit the app, all you need it a Quit command, which is another menu.
Topic: UI Frameworks SubTopic: UIKit
Sep ’25
App group not working between iOS and watchOS
Hi everyone, I'm using an app group to share data between iOS and it's watch companion app. I ensured that is has the same identifier in Signing & Capabilities and in the .entitlements files. Here is the UserDefaults part: class UserDefaultsManager { private let suitName = group.com.sanjeevbalakrishnan.Test public func saveItems(_ items: [ItemDTO]) { print(Save (items.count) items to shared defaults) let defaults = UserDefaults(suiteName: suitName) let data = try? JSONEncoder().encode(items) defaults?.set(data, forKey: items) } public func loadItems() -> [ItemDTO] { let defaults = UserDefaults(suiteName: suitName) print(defaults) guard let data = defaults?.data(forKey: items) else { print(watchOS received data is empty) return [] } let items = [ItemDTO].from(data: data) print(Load (items.count) items from user defaults) return items } } For testing I called loadItems after saveItems on iOS app and it returned items. However, on watchOS app it always returns empty array. What do I need to consi
3
0
164
Sep ’25